VMWare VM Server Tuning – Windows OS & VMXNet3 Network Card Optimizations
In Windows, Open a command prompt window with elevated permissions and execute the following commands displayed in RED.
[Display the TCP stack settings]
C:> netsh int tcp show global
[Disable specific TCP stack parameters]
C:> netsh int tcp set global chimney=disabled
C:> netsh int tcp set global autotuninglevel= disabled
C:> netsh int tcp set global ecncapability= disabled
C:> netsh int tcp set global netdma= disabled
C:> netsh int tcp set global rsc= disabled
I usually put these commands in a batch file or script when I need to execute them.
There is no outage required to change these OS parameters. The “Receive Segment Coalescing State”, ie “RSC”, parameter seems to do the most good especially when running SQL server. There was a bug in the VMWare VMXnet3 driver that caused performance issues for SQL server when the “RSC” parameter was enabled on the OS. I believe that has been resolved in a newer driver version.
The other change that needs to made and this is the important one, is on the VMWare VMXNet3 network card.
In Windows, Edit the adapter and change the following parameters as shown in RED. Some parameters verbage may be slightly different depending on the version of the driver.
Receive Side Scaling (RSS) = ENABLE (This setting is a very important performance parameter)
RSS Base processor Number = 0
Maximum Number of RSS processors = 4 (Depends on the number of Processors available on the server. Choices are something like 2,4,8,16. Pick the closet one without going over. Important performance parameter)
Maximum Number of RSS queues = 4 (This should match the “Maximum Number of RSS Processors” parameter.)
IPv4 TSO Offload = DISABLE
IPv4 Checksum Offload= DISABLE
Recv Segment Coalescing (IPv4) = DISABLE
Recv Segment Coalescing (IPv6) = DISABLE
TCP Checksum Offload (IPv4) = DISABLE
TCP Checksum Offload (IPv6) = DISABLE
UDP Checksum Offload (IPv4) = DISABLE
UDP Checksum Offload (IPv6) = DISABLE
When done, click “Ok”. Saving these changes will cause a slight outage for the VM server as it needs to reset the network card to read in the new configuration parameters. Typically this outage lasts only 5 seconds maybe. So use with caution.
Why VMware thought it was a BAD idea to “DISABLE” the “Receive Side Scaling“ parameter as a default on the VMXNet3 network card, I just can’t understand. Multiple processors are a good thing for networking, not a bad thing. The performance change increase for a SQL server is usually quite noticeable from some of the ones I have done in the past.