{"id":2720,"date":"2019-01-15T22:00:42","date_gmt":"2019-01-15T22:00:42","guid":{"rendered":"http:\/\/microsoftgeek.com\/?p=2720"},"modified":"2019-01-15T22:04:38","modified_gmt":"2019-01-15T22:04:38","slug":"vmware-vm-server-os-nic-tuning-optimizations","status":"publish","type":"post","link":"https:\/\/microsoftgeek.com\/?p=2720","title":{"rendered":"VMWare VM Server OS &#038; NIC Tuning Optimizations"},"content":{"rendered":"<p><b>VMWare VM Server Tuning &#8211; Windows OS &amp; VMXNet3 Network Card Optimizations<\/b><\/p>\n<p>&nbsp;<\/p>\n<p>In Windows, Open a command prompt window with elevated permissions and execute the following commands displayed in\u00a0RED.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>[Display the TCP stack settings]<\/strong><\/p>\n<p><span style=\"color: #00ff00;\">C:&gt;\u00a0netsh\u00a0int\u00a0tcp\u00a0show global<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><strong>[Disable specific TCP stack parameters]<\/strong><\/p>\n<p><span style=\"color: #00ff00;\">C:&gt;\u00a0netsh\u00a0int\u00a0tcp\u00a0set global\u00a0chimney=<span style=\"color: #ff0000;\">disabled<\/span><\/span><\/p>\n<p><span style=\"color: #00ff00;\">C:&gt;\u00a0netsh\u00a0int\u00a0tcp\u00a0set global\u00a0autotuninglevel=\u00a0<span style=\"color: #ff0000;\">disabled<\/span><\/span><\/p>\n<p><span style=\"color: #00ff00;\">C:&gt;\u00a0netsh\u00a0int\u00a0tcp\u00a0set global\u00a0ecncapability=\u00a0<span style=\"color: #ff0000;\">disabled<\/span><\/span><\/p>\n<p><span style=\"color: #00ff00;\">C:&gt;\u00a0netsh\u00a0int\u00a0tcp\u00a0set global\u00a0netdma=\u00a0<span style=\"color: #ff0000;\">disabled<\/span><\/span><\/p>\n<p><span style=\"color: #00ff00;\">C:&gt;\u00a0netsh\u00a0int\u00a0tcp\u00a0set global\u00a0rsc=\u00a0<span style=\"color: #ff0000;\">disabled<\/span><\/span><\/p>\n<p>&nbsp;<\/p>\n<p>I usually put these commands in a batch file or script when I need to execute them.<\/p>\n<p>&nbsp;<\/p>\n<p>There is no outage required to change these OS parameters. The \u201cReceive Segment Coalescing State\u201d,\u00a0ie\u00a0\u201cRSC\u201d, 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 \u201cRSC\u201d parameter was enabled on the OS. I believe that has been resolved in a newer driver version.<\/p>\n<p>&nbsp;<\/p>\n<p>The other change that needs to made and this is the important one, is on the VMWare VMXNet3 network card.<\/p>\n<p>In Windows, Edit the adapter and change the following parameters as shown in\u00a0RED. Some parameters\u00a0verbage\u00a0may be slightly different depending on the version of the driver.<\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"color: #00ff00;\">Receive Side Scaling\u00a0(RSS) =<\/span>\u00a0<span style=\"color: #ff0000;\">ENABLE\u00a0<\/span>(This setting is a very\u00a0<b>important performance parameter<\/b>)<\/p>\n<p><span style=\"color: #00ff00;\">RSS Base processor Number\u00a0=\u00a0<span style=\"color: #ff0000;\">0<\/span><\/span><\/p>\n<p><span style=\"color: #00ff00;\">Maximum Number of RSS processors\u00a0=\u00a0<span style=\"color: #ff0000;\">4<\/span><\/span>\u00a0(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.\u00a0<b>Important performance parameter<\/b>)<\/p>\n<p><span style=\"color: #00ff00;\">Maximum Number of RSS queues<\/span>\u00a0=\u00a0<span style=\"color: #ff0000;\">4<\/span>\u00a0(This should match the \u201cMaximum Number of RSS Processors\u201d parameter.)<\/p>\n<p><span style=\"color: #00ff00;\">IPv4 TSO Offload\u00a0=\u00a0<span style=\"color: #ff0000;\">DISABLE<\/span><\/span><\/p>\n<p><span style=\"color: #00ff00;\">IPv4 Checksum Offload=\u00a0<span style=\"color: #ff0000;\">DISABLE<\/span><\/span><\/p>\n<p><span style=\"color: #00ff00;\">Recv\u00a0Segment Coalescing (IPv4)\u00a0=\u00a0<span style=\"color: #ff0000;\">DISABLE<\/span><\/span><\/p>\n<p><span style=\"color: #00ff00;\">Recv\u00a0Segment Coalescing (IPv6)\u00a0=\u00a0<span style=\"color: #ff0000;\">DISABLE<\/span><\/span><\/p>\n<p><span style=\"color: #00ff00;\">TCP Checksum Offload (IPv4)\u00a0=\u00a0<span style=\"color: #ff0000;\">DISABLE<\/span><\/span><\/p>\n<p><span style=\"color: #00ff00;\">TCP Checksum Offload (IPv6)\u00a0=\u00a0<span style=\"color: #ff0000;\">DISABLE<\/span><\/span><\/p>\n<p><span style=\"color: #00ff00;\">UDP Checksum Offload (IPv4)\u00a0=\u00a0<span style=\"color: #ff0000;\">DISABLE<\/span><\/span><\/p>\n<p><span style=\"color: #00ff00;\">UDP Checksum Offload (IPv6)\u00a0=\u00a0<span style=\"color: #ff0000;\">DISABLE<\/span><\/span><\/p>\n<p>&nbsp;<\/p>\n<p>When done, click \u201c<span style=\"color: #ff0000;\">Ok<\/span>\u201d. 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.<\/p>\n<p>&nbsp;<\/p>\n<p>Why VMware thought it was a BAD idea to \u201c<span style=\"color: #ff0000;\">DISABLE<\/span>\u201d the \u201c<span style=\"color: #ff0000;\">Receive Side Scaling<\/span>\u201c parameter as a default on the VMXNet3 network card, I just can\u2019t 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.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>VMWare VM Server Tuning &#8211; Windows OS &amp; VMXNet3 Network Card Optimizations &nbsp; In Windows, Open a command prompt window with elevated permissions and execute the following commands displayed in\u00a0RED. &nbsp; [Display the TCP stack settings] C:&gt;\u00a0netsh\u00a0int\u00a0tcp\u00a0show global &nbsp; [Disable specific TCP stack parameters] C:&gt;\u00a0netsh\u00a0int\u00a0tcp\u00a0set global\u00a0chimney=disabled C:&gt;\u00a0netsh\u00a0int\u00a0tcp\u00a0set global\u00a0autotuninglevel=\u00a0disabled C:&gt;\u00a0netsh\u00a0int\u00a0tcp\u00a0set global\u00a0ecncapability=\u00a0disabled C:&gt;\u00a0netsh\u00a0int\u00a0tcp\u00a0set global\u00a0netdma=\u00a0disabled C:&gt;\u00a0netsh\u00a0int\u00a0tcp\u00a0set global\u00a0rsc=\u00a0disabled &nbsp; [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[53,40],"tags":[],"class_list":["post-2720","post","type-post","status-publish","format-standard","hentry","category-virtualization-virtual","category-virtualization-vmware"],"_links":{"self":[{"href":"https:\/\/microsoftgeek.com\/index.php?rest_route=\/wp\/v2\/posts\/2720","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/microsoftgeek.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/microsoftgeek.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/microsoftgeek.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/microsoftgeek.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2720"}],"version-history":[{"count":4,"href":"https:\/\/microsoftgeek.com\/index.php?rest_route=\/wp\/v2\/posts\/2720\/revisions"}],"predecessor-version":[{"id":2724,"href":"https:\/\/microsoftgeek.com\/index.php?rest_route=\/wp\/v2\/posts\/2720\/revisions\/2724"}],"wp:attachment":[{"href":"https:\/\/microsoftgeek.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2720"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/microsoftgeek.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2720"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/microsoftgeek.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2720"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}