Starting with Windows Vista, there were improvements made to the network stack including a little known feature called TCP Window Auto-tuning. The auto-tuning feature allows newer versions of Windows to be able to adjust the RWIN value automatically on the fly so to speak. While it does offer improvements in certain realms, it can also cause network performance issues. I wanted to detail a few scenarios of TCP Auto-tuning slow network performance and when I have observed this issue come into play
Jan 20, 2019 How to Disable Auto Tuning in Windows 10 # Using Command Prompt: – Just run the command given below in Command Prompt. Netsh int tcp set global autotuninglevel=disabled # Using Registry Editor:-1 Press Windows key + R together. 2 Write Regedit and hit enter to Open registry editor. 3 Browse to the following location Given below. The Receive Window Auto-Tuning feature lets the operating system continually monitor routing conditions such as bandwidth, network delay, and application delay. Therefore, the operating system can configure connections by scaling the TCP receive window to maximize the network performance. By default, Windows in normal auto tuning level will use RWIN size of 256 bytes with a scale factor of 8. This value is not suitable for all routers and servers which does not support TCP scale factor, and continue to communicate with 65536 bytes (64kB). 64kB is the fixed default TCP receive buffer, and through autotuning it can scale up to 16 MB. Aug 13, 2016 Like all modern operating systems Windows has receive window auto-tuning to dynamically adjust the receive buffer size to the throughput and latency of the link. Disabling this feature will definitely limit your Internet speeds. Auto-tuning is consistent throughout all variants of TCP and present in all modern operating systems.
You can see your current TCP Auto-tuning values by issuing the NETSH command:
It will display something similar to the following (the following clip is taken from a Windows 10 workstation):
If you notice above, the line Receive Window Auto-Tuning Level is set to normal. This is the default setting out of the box.
To turn off TCP Auto-tuning you can use the following command:
Another option is to set TCP Auto-tuning to highlyrestricted which seems to have the same performance improving effect as disabling when connecting to legacy OS versions.
TCP Auto-tuning slow network performance
For the most part, I have seen the TCP Auto-tuning slow network performance issue come into play with new server OS’es and client OS’es talking to legacy server OS’es like Windows Server 2003. Especially in file copies, RDP sessions and SQL query performance the issue has been evident.
Slow File copy and RDP performance
In particular I have seen many cases where the file copies from newer operating systems to slower operating systems and back have been super slow. Recently, in an environment still running a Windows 2003 server, RDP from Windows 10 was horribly slow. The experience was one of the mouse freezing every 5 seconds or so for 2 or 3 seconds then it would release and keep doing that – basically an unusable state.
Slow SQL query performance
Recently, in working with a developer who was running queries from Windows 2012 R2 server running SQL 2012, he had horrible query performance querying data from an old Windows 2003 server running SQL 2005. You may be saying to yourself, Windows 2003 and SQL 2005 are not supported any longer, why would anyone be running those operating systems still? Sad to say, they are still out there in greater numbers than we would like to think, mainly due to legacy applications that are bound in some way to an older version of SQL/Windows for whatever reason.
Case in point, the query performance you see in the first screenshot is taken with the auto-tuning levels set at default. Notice the msDur value in the first query. These values are connecting back to a legacy Windows 2003 server.
Now, the following screen clip is taken showing the query performance after turning auto-tuning off. Also, these values are connecting between sites so this is why they are still showing as much higher than the other query results you see.
Final Thoughts
Windows Auto Tuning Windows 10
If you are chasing a weird network performance issue that seems to have no other explainable cause, you may want to check into your TCP Auto-tuning settings. The TCP Auto-tuning slow network performance issue can be a difficult issue to track down especially since it is usually the last thing we think to look at. If you have a mix of legacy OS and new OS versions in your environment, it is a good bet you may want to focus on and test various settings with Auto-tuning to rule out any potential issues with network performance.
Window Auto-Tuning feature is said to improve the performance for programs that receive TCP data over a network. It is nothing new. It was introduced in Windows Vista and is present in Windows 10 too. In today’s Internet, the range of latencies & throughput speeds is just too large to manage statically. It needs to be adjusted dynamically. Windows 10 will dynamically adjust the receive buffer size to the throughput and latency of the link, using this feature.
Programs like Automatic Updates, Windows Update, Remote Desktop Connection, Windows Explorer for network file copy, etc, use WinHTTP or Windows HTTP Services.
Window Auto-Tuning feature is enabled by default in Windows 10 and makes data transfers over networks more efficient. But if your network uses an old router or your firewall software does not support this feature, then you may experience slow data transfers or even loss of connectivity.
To check the status of Auto-Tuning feature on your system, in an elevated command prompt windows, type the following and hit Enter:
If you see ‘normal’ written against Receive Window Auto-Tuning Level, it means that the feature is enabled and it is working fine.
To disable Windows AutoTuning, run the following command:
To enable Windows AutoTuning, run the following command:
You can also tweak the Windows Registry, says KB947239. To enable the Receive Window Auto-Tuning feature for HTTP traffic, Run regedit and navigate to the following registry subkey:
HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionInternet SettingsWinHttp
Right-click on it > New > DWORD Value. Type TcpAutotuning and give it a vale of 1.
Click OK and exit.
Tcp Window Auto Tuning
To disable Receive Window Auto-Tuning feature for HTTP traffic, give it a value of 0 or delete the created TcpAutotuning DWORD.
Tcp Auto Tuning
The Receive Window Auto-Tuning feature lets the operating system continually monitor routing conditions such as bandwidth, network delay, and application delay. Therefore, the operating system can configure connections by scaling the TCP receive window to maximize the network performance. To determine the optimal receive window size, the Receive Window Auto-Tuning feature measures the products that delay bandwidth and the application retrieve rates. Then, the Receive Window Auto-Tuning feature adapts the receive window size of the ongoing transmission to take advantage of any unused bandwidth.
What Is Windows Auto Tuning
Let the default settings of Window Auto-Tuning feature be enabled. If your network uses an old router or your firewall software does not support this feature, and you are experiencing poor or no connectivity issues, only then may you disable this feature and see if it works in your favor.