Very poor network performance with Server 2019

windows-server-2019

We are having major performance issues with Server 2019. Read and write performance is very poor compared to Server 2016. we installed a number of servers on customer sites to replace old servers and all customers have complained about opening files from the server being slow.

We have set up a test server in our office and measured some read and write speeds and found a vast difference between 2019 and 2016.

We installed a 2016 and a 2019 VM on a 2019 host using Hyper V and used Lan Speed test to measure Read\write speeds to the VMs and the Host

The server is a Dell PowerEdge with 8x 15K disks configured RAID 10 using Intel quad port network card.

The 2016 VM the read\write speeds are 600 Mbps write and 780 Mbps read.

The 2019 VM the read\write speeds are 220 Mbps write and 115 Mbps read.

Both VMs are using the same virtual switch, are configured exactly the same, and are on the same virtual disk, the only difference is the operating system which is fully patched on both VMs.

We have now tested this on various specs of servers at customer sites and found the same results everywhere, 2019 is much slower than 2016.

All BIOS and drivers are the latest available from Dell.

This is not isolated to one server, it is happening on a number of servers, some of which replaced old SBS 2011 servers and yet run slower that the old SBS boxes.
Has anyone else found this issue?

Best Answer

You may be seeing this due to Receive Segment Coalescing (RSC). In short, RSC is TCP segment aggregation that combines segments in order to process larger segments versus multiple small segments for efficiency. This was introduced as a default configuration change for Windows Server 2019 and has been the source of issues similar to yours in other environments.

  1. You can disable a client's RSC for IPv4 traffic using PowerShell: Disable-NetAdapterRsc -Name $nic -IPv4.

  2. You can check a Hyper-V vSwitch's current RSC status using PowerShell: Get-VMSwitch -Name $vSwitch | Select *RSC*.

  3. You can disable a Hyper-V vSwitch's RSC in full using PowerShell: Set-VMSwitch -Name $vSwitch -EnableSoftwareRsc:$FALSE. This will not impact existing vSwitch connections.

Items #2 and #3 require you to have access to the Hyper-V PowerShell modules and proper Hyper-V management permissions. As you mentioned seeing this across multiple machines on a Hyper-V vSwitch it is likely that item #3 is where you may find relief. I've provided reference material for you here and here.

Related Topic