January 14, 2008

Find your bandwidth in Vista really slow? Here is a simple hack for you.

So, since the beginning of beta testing on Vista I have always found the new TCP stack to be overly hyped, and rarely with the performance you would expect.

Charlie and I have always hacked the registry to turn off autotuning, TCP Chimney and Receive-side scaling. Recently I had 3 employees within a matter of minutes come up to me complaining that their bandwidth sucked, which was actually affecting customers as they were getting dropped from our online chat support system. Not good.

So I mucked with netsh and remotely tuned their NICs. The result was quickly seen. They went from 700Kbit download speeds to 18Mbit. Yes that's right. It makes that much of a difference.

To be fair, Vista SP1 has this cleaned up pretty well now, but if you are like my employees and are freaking out and can't wait, start a cmd window as an administrator (* see below) ... and type this magic in:

netsh interface tcp set global autotuning=disabled
netsh interface tcp set global chimney=disabled
netsh interface tcp set global rss=disabled

Do that and then run another speed test. You will probably find it works REALLY well. Well, except to other Windows Server 2008 systems, where the stack really comes into play.

If you are unsure if you have the settings on or off, you can run:

netsh interface tcp show global

Of course, if you need to turn it back on, you can do this by typing:

netsh interface tcp set global autotuning=normal
netsh interface tcp set global chimney=enable
netsh interface tcp set global rss=enable

*NOTE: To start a cmd window as an Administrator click on the Start orb on the bottom left and type "cmd" in the Search field, but do NOT hit enter. Right click on the cmd window icon and select "Run as Administrator".

UPDATE: Thanks to Lawerence and Bruce for correcting the syntax for re-enabling it

Posted by SilverStr at January 14, 2008 11:56 AM | TrackBack

regarding your note about starting a cmd shell as an administrator, i find that i do the same thing, except after type "cmd", i hold ctrl+shift, then press enter... which launches it with administrative privileges.

Posted by: marcus at January 14, 2008 06:30 PM

long time no see!

I have test it out the script. it really made the difference.
But there is an error while I try to turn it back on.
it show an error. turn out the script for autoturning is =normal, not =enabled.
then it is back on.

thanks for sharing the code. :)

Posted by: Lawrence Hsu at January 14, 2008 11:52 PM

Thanx for the tip, that really worked!

Posted by: Travis at January 15, 2008 07:44 AM

It looks like the correct commands to disable these changes are:

netsh interface tcp set global autotuning=normal
netsh interface tcp set global chimney=enabled
netsh interface tcp set global rss=enabled

Posted by: Bruce at January 15, 2008 08:55 AM