Poor Network Performance on Windows Server 2019 Hyper-V Virtual Machines with Intel 10Gbps X540, X552 and X710 NICs
30 May 2020I migrated my pfSense VM from a Server 2016 to 2019 host and noticed a precipitous drop in WAN transfer speeds.
- I installed the latest Intel Network Adapter Driver for Windows Server 2019 1 for my Intel X552 NIC on my physical Hyper-V host on Server 2019.
- I continued to notice strange window scaling behaviour, with my WAN speed almost 1/10th of the speed once the VM was migrated to 2019. Migrating the VM back to a 2016 instantly brought performance back up to expected levels.
- SMB server performance on the 2019 host was also slow. File shares located on this server were sluggish/slow and resulted in unexpectedly low transfer speeds.
- I issued the following PowerShell commands to restore performance 2:
#RUN ONLY ON NATIVE2019, HV2019, VM2019 #Change the TCP-Stack-Settings back to state of Server 2016 #Get-NetTCPSetting | ft -AutoSize Set-NetTCPSetting -SettingName "InternetCustom" -CongestionProvider CTCP Set-NetTCPSetting -SettingName "InternetCustom" -DelayedAckTimeoutMs 50 Set-NetTCPSetting -SettingName "InternetCustom" -ForceWS Disabled Set-NetTCPSetting -SettingName "DatacenterCustom" -CongestionProvider DCTCP Set-NetTCPSetting -SettingName "DatacenterCustom" -CwndRestart True Set-NetTCPSetting -SettingName "DatacenterCustom" -ForceWS Disabled Set-NetTCPSetting -SettingName "Compat" -ForceWS Disabled Set-NetTCPSetting -SettingName "Datacenter" -CongestionProvider DCTCP Set-NetTCPSetting -SettingName "Datacenter" -CwndRestart True Set-NetTCPSetting -SettingName "Datacenter" -ForceWS Disabled Set-NetTCPSetting -SettingName "Internet" -CongestionProvider CTCP Set-NetTCPSetting -SettingName "Internet" -DelayedAckTimeoutMs 50 Set-NetTCPSetting -SettingName "Internet" -ForceWS Disabled #RUN ONLY ON NATIVE2019, HV2019, VM2019 #Disable RSS & RSC on the TCP-Stack #netsh int tcp show global netsh int tcp set global RSS=Disabled netsh int tcp set global RSC=Disabled #RUN ONLY ON HV2019 #Disable Software RSC on all vSwitches Get-VMSwitch | Set-VMSwitch -EnableSoftwareRsc $false #Disable vRSS on all VMs on the host Get-VM | Set-VMNetworkAdapter -VrssEnabled $FALSE
- I’d recommend avoiding Intel 10Gbps NICs in the future. X552 and X7xx series have caused a lot of performance problems for me.