Should I Disable Receive Window Autotuning



Receive Window Auto-Tuning Level is set to normal. To disable Receive Window Auto-Tuning Level, click Start, and in the Search box type 'command.' In the results, right-click Command Prompt, and then click Run as administrator. At the command prompt, run the following command: netsh int tcp set global autotuning=disabled For more information, see. To disable or enable the window autotuning diagnostic tool, follow these steps: 1. Open Registry Editor. Locate the following registry value: EnableWsd 3. Enter 0 to disable the tool. Note If the value is set to 0, any previous decision taken to disable or maintain window scaling will not be applied by TCP. To prevent that behavior and turn off heuristics, before setting the TCP Receive Window auto-tuning level you should execute the following command: netsh int tcp set heuristics disabled Note this should be executed in elevated command prompt (as administrator). If the command is accepted by the OS you should see an 'Ok.' To disable Receive Window Auto-Tuning feature for HTTP traffic, give it a value of 0 or delete the created TcpAutotuning DWORD. The Receive Window Auto-Tuning feature lets the operating system continually monitor routing conditions such as bandwidth, network delay, and application delay.

Here is How to Fix The Situation

Microsoft’s Windows 10 operating system has been mired in controversy almost since its public unveiling a little over a year ago. First, Microsoft drew criticism because of the “forced” nature of the updates. Whether a user explicitly wanted them or not, update files often downloaded without a user’s express permission and could even automatically install themselves under certain conditions. Now, thanks to the recently released Windows 10 anniversary update, a certain feature that is enabled by default could potentially be slowing a person’s computer down without them realizing that they have a problem in the first place.

Tcp Autotuning Windows 10

Window Auto Tuning

Like much of the Windows 10 operating system, the Window Auto Tuning feature built into the software was created with only the best of intentions. It’s actually a modern version of a feature that has been around since the days of Windows Vista that is designed to improve the way that certain programs perform when sending TCP data over a network connection. The issue is that the default configuration options used by the feature (which itself automatically runs by default) are NOT optimized for every type of connection out there.

If you’ve recently updated your computer to Windows 10 and feel that your Internet speeds are slower than normal or are generally more sluggish than you’d like, there is a very high chance that this feature is why. Luckily, it’s a problem with a relatively straightforward solution.

Disabling Window Auto-Tuning

Those who wish to disable Window Auto Tuning and regain some of their lost Internet connection speed can do so using the command prompt. From the desktop, hold the “Windows” key on your keyboard and open the command prompt by typing “cmd.exe” into the box that appears. Hold down the “Shift” and “CTRL” keys on the keyboard, tap the “Enter” key and click “Yes” on the UAC prompt that opens.

Type the command “netsh interface tcp show global” into the command prompt box (without quotation marks) to view the configuration options of the computer in question. If the option “Receive Window Auto Tuning Level” has a setting of “normal” next to it, the Window Auto Tuning Feature is currently enabled.

To disable the feature, type the command “netsh int tcp set global autotuninglevel=disabled” into the box on screen (without quotation marks) and hit “Enter” on your computer’s keyboard. The Window Auto Tuning feature will now be disabled.

To verify that this was the cause of your slow Internet connection problems, visit a site like SpeedTest.net and run a speed test on your Internet service provider’s connection. If your speed test ranks higher than it has in the past, or if you notice that your computer is generally faster as you go about your business, congratulations – you just solved your problem.

If Window Auto Tuning was NOT the reason you were experiencing slow connection speeds, don’t worry – you can always turn it back on.

Return to the command prompt box and type the command “netsh int tcp set global autotuninglevel=normal” (without quotation marks). Hit the “Enter” key on your keyboard once again to turn the feature back on. You’ll also likely want to experiment with additional settings on your computer that could be causing your Internet speeds to dip below the upload and download rates that you’re paying for from your Internet service provider.

On Time Tech | IT Services In San Francisco is the trusted choice when it comes to staying ahead of the latest information technology tips, tricks, and news. Contact us at (877) 270-1391 or send us an email at info@ontimetech.com for more information.

My philosophy when starting OTT was I wanted to create a place that I would want to work at (fun and friendly.) Where there was no corporate politics and we could just do our job fixing things and helping people. We can help people with their technology and not be arrogant or condescending to people. We can actually make a difference in peoples lives and not just say it but do it.

Feb 28, 2013

Optimal Network Adaptor Settings for VMXNET3 and Windows 2008 R2

There is an ongoing debate between many admins on what are the best settings for the VMXNET3 driver on Windows 2008 R2 settings and I suppose there will be many more. In this postI will attempt to point out some of the options and recommended settings for the VMXNET3 adaptor.

Global Settings

Receive Side Scaling (RSS)

Receive-Side Scaling (RSS) resolves the single-processor bottleneck by allowing the receive side network load from a network adapter to be shared across multiple processors. RSS enables packet receive-processing to scale with the number of available processors. This allows the Windows Networking subsystem to take advantage of multi-core and many core processor architectures.

Auto Tuning Windows 10 Disable

By default RSS is set to enabled. To disable RSS you must open a command prompt and type:

netsh int tcp set global rss=disabled

There is also a second RSS settings that is in the VMXNET3 adaptor properties under the Advanced tab, which is disabled by default. Enable it by selecting from the dropdown.

This is a beneficial setting if you have multiple vCPU’s on the server. If this is a single vCPU then you will receive no benefit.

If you have multiple vCPU’s it is recommended to have RSS enabled.

netsh int tcp set global rss=enabled

References

TCP Chimney Offload

TCP Chimney Offload is a networking technology that helps transfer the workload from the CPU to a network adapter during network data transfer. In Windows Server 2008, TCP Chimney Offload enables the Windows networking subsystem to offload the processing of a TCP/IP connection to a network adapter that includes special support for TCP/IP offload processing.

For VMXNET3 on ESXi 4.x, 5.0 and 5.1 TCP Chimney Offload is not supported; turning this off or on has no affect. This is discussed in several places.

References

The Microsoft KB951037 article is of interest because it includes a table that shows how TCP Chimney interacts with programs and services and gives insight to where you can gain the most from this feature. By default this setting is enabled.

As for the use of TCP Chimney Offload is to disable as it is not recognized by VMXNET3. To disable do the following.

Open a command prompt with administrative credentials.

At the command prompt, type the following command, and then press ENTER:

netsh int tcp set global chimney=disabled

To validate or view TCP Chimney

Disable

netsh int tcp show global

Recommended setting: disabled

NetDMA State

NetDMA provides operating system support for direct memory access (DMA) offload. TCP/IP uses NetDMA to relieve the CPU from copying received data into application buffers, reducing CPU load.

Requirements for NetDMA

  • NetDMA must be enabled in BIOS
  • CPU must support Intel I/O Acceleration Technology (I/OAT)

You cannot use TCP Chimney Offload and NetDMA together.

Recommended setting: disabled

TCP Receive Windows Auto-Tuning Level

This feature determines the optimal receive window size by measuring the BDP and the application retrieve rate and adapting the window size for ongoing transmission path and application conditions.

Receive Window Auto-Tuning enables TCP window scaling by default, allowing up to a 16MB maximum receive window size. As the data flows over the connection, it monitors the connection, measures its current BDP and application retrieve rate, and adjusts the receive window size to optimize throughput. This replaces the TCPWindowSize registry value.

Receive Window Auto-Tuning has a number of benefits. It automatically determines the optimal receive window size on a per-connection basis. In Windows XP, the TCPWindowSize registry value applies to all connections. Applications no longer need to specify TCP window sizes through Windows Sockets options. And IT administrators no longer need to manually configure a TCP receive window size for specific computers.

Should I Disable Receive Window Autotuning

By default this setting is enabled, to disable it open a command prompt with administrative permission and type:

Disable Windows Auto Tuning

netsh int tcp set global autotuninglevel=disabled

Recommended setting: disabled

References

Add-On Congestion Control Provider

The traditional slow-start and congestion avoidance algorithms in TCP help avoid network congestion by gradually increasing the TCP window at the beginning of transfers until the TCP Receive Window boundary is reached, or packet loss occurs. For broadband internet connections that combine high TCP Window with higher latency (high BDP), these algorithms do not increase the TCP windows fast enough to fully utilize the bandwidth of the connection.

Compound TCP, CTCP increases the TCP send window more aggressively for broadband connections (with large RWIN and BDP). CTCP attempts to maximize throughput by monitoring delay variations and packet loss. It also ensures that its behavior does not impact other TCP connections negatively.

By default, it is on by default under Server 2008. Turning this option on can significantly increase throughput and packet loss recovery.

To enable CTCP, in elevated command prompt type:

netsh int tcp set global congestionprovider=ctcp

To disable CTCP:

netsh int tcp set global congestionprovider=none

Possible options are: ctcp, none, default (restores the system default value).

Recommended setting: ctcp

ECN Capability

ECN (Explicit Congestion Notification) is a mechanism that provides routers with an alternate method of communicating network congestion. It is aimed to decrease retransmissions. In essence, ECN assumes that the cause of any packet loss is router congestion. It allows routers experiencing congestion to mark packets and allow clients to automatically lower their transfer rate to prevent further packet loss. Traditionally, TCP/IP networks signal congestion by dropping packets. When ECN is successfully negotiated, an ECN-aware router may set a bit in the IP header (in the DiffServ field) instead of dropping a packet in order to signal congestion. The receiver echoes the congestion indication to the sender, which must react as though a packet drop were detected.

ECN is disabled by default, as it is possible that it may cause problems with some outdated routers that drop packets with the ECN bit set, rather than ignoring the bit.

To change ECN, in elevated command prompt type:

netsh int tcp set global ecncapability=default

Possible settings are: enabled, disabled, default (restores the state to the system default).

The default state is: disabled

ECN is only effective in combination with AQM (Active Queue Management) router policy. It has more noticeable effect on performance with interactive connections and HTTP requests, in the presence of router congestion/packet loss. Its effect on bulk throughput with large TCP Window is less clear.

Currently, it is not recommended enabling this setting, as it has negative impact on throughput.

Recommended setting is disabled

netsh int tcp set global ecncapability=disabled

Direct Cache Access (DCA)

Direct Cache Access (DCA) allows a capable I/O device, such as a network controller, to deliver data directly into a CPU cache. The objective of DCA is to reduce memory latency and the memory bandwidth requirement in high bandwidth (Gigabit) environments. DCA requires support from the I/O device, system chipset, and CPUs.

To enable DCA:

netsh int tcp set global dca=enabled

Available states are: enabled, disabled.

Default state: disabled

Recommended setting is disabled

To disable DCA:

netsh int tcp set global dca=disable

These are just settings that I have used successfully in the VMware environment and work well. You can pick and choose the settings that work best for your environment.

Disable Windows Auto Tuning Level

Related Posts

  1. Thanks for this invaluable article. Do you have any recommendations for Server 2012R2 using this NIC. We recently moved a file system from Physical 2008 R2 to Virtual 2012 R2 and our Marketing folks are seeing the performance from the Macs drop through the floor. (No complaints from the 16,000 Windows users, just the 16 Mac users. Thanks for any thoughts.

    • Just checking if there is an update on this:

      Is there an update available for vSphere 5.5 with regard to the settings for Windows 2008 R2 and Windows 2012 R2?

      I know that with vSPhere 5.5, Large Receive Offload (LRO), Receive-Side Scaling (RSS), and TCP Segmentation Offload (TSO) are now supported.

      Thanks

  2. Great article. Is there an update available for vSphere 5.5 with regard to the settings for Windows 2008 R2 and Windows 2012 R2?

    I know that with vSPhere 5.5, Large Receive Offload (LRO), Receive-Side Scaling (RSS), and TCP Segmentation Offload (TSO) are now supported.

  3. Very good read, was wondering if your reccomendations suited 2008 Std. Looking to replace this server mid next year, currently having session freezes for 20 – 60 secs up to 4 to 5 times a day, random. 2008 Terminal Server with about 6 users on it. All sessions freeze at once and come back with no loss of data during freeze. Can ping whole time.

  4. Hi man,

    So how did you go with the test on ESXi 5.1 or 5.5 ?
    We have some Win2k8 R2 VMs that is having problem with the TCP retransmission and also TCP resets, so I wonder if you’ve seen this case before ?

  5. There are a couple of inconsistencies that I find confusing:

    Regarding TCP Chimney Offload: First you say, “For VMXNET3 on ESXi 4.x, 5.0 and 5.1 TCP Chimney Offload is not supported; turning this off or on has no affect.” But then later you advise disabling it. If it has no effect either way then why bother?

    More significantly, regarding TCP Receive Windows Auto-Tuning Level: Everything you say in your description of this is positive and beneficial to performance. But then at the end you say, “Recommended setting: disabled.” Huh?


    Jay

  6. I would really be interested in an updated article for Server 2012 R2 with VMXNET3 on ESXi 6.0.

    • Tony, Let us know if the below netsh batch script must be executed to all Windows Server VMs using VMXnet 3 or not:

      netsh int ip set global taskoffload=disabled
      netsh int tcp set global autotuning=disabled
      netsh int tcp set global chimney=disabled
      netsh int tcp set global congestion=none
      netsh int tcp set global rss=disabled
      netsh interface tcp set global autotuninglevel=disabled

Leave a Reply

Receive Window Auto Tuning Level

This site uses Akismet to reduce spam. Learn how your comment data is processed.