Hoe u de netwerkprestaties voor Hyper-V VM’s op Windows Server 2019 kunt verbeteren

Het omgaan met trage bestandsoverdrachten in virtuele omgevingen, met name via Hyper-V op Windows Server 2019, kan enorm frustrerend zijn. Soms verloopt het kopiëren van bestanden van of naar VM’s tergend langzaam – wel drie keer trager dan verwacht – en is het niet duidelijk waarom. Het goede nieuws? Er zijn een aantal aanpassingen en trucs die de netwerkprestaties aanzienlijk kunnen verbeteren. Dit soort zaken wordt niet altijd in de officiële documentatie beschreven, dus als je je afvraagt ​​waarom je VM-netwerk traag lijkt, volgt hier een overzicht van oplossingen die in de praktijk op verschillende systemen hebben gewerkt.

Hoe u knelpunten in het Hyper-V-netwerk in Windows Server 2019 kunt oplossen

Ontvangstsegmentcoalescing (RSC) in de Hyper-V vSwitch

Allereerst is RSC een functie die is geïntroduceerd in Windows Server 2019 en latere versies. Deze functie combineert meerdere TCP-segmenten om de CPU-belasting te verminderen en de doorvoer te verbeteren. Soms kan RSC echter averechts werken en vertraging veroorzaken in plaats van verbetering, met name bij bepaalde hardwareconfiguraties. In sommige gevallen kan het uitschakelen van RSC netwerkvertraging verhelpen en de snelheid verhogen.

Met dit commando kunt u controleren of RSC actief is op uw switches:

Get-VMSwitch | Select-Object *RSC*

Als je merkt dat RSC is ingeschakeld en je netwerksnelheden traag zijn, is het de moeite waard om het uit te schakelen. Een snelle manier om te testen of RSC de oorzaak is, is door het uit te schakelen voor IPv4-verkeer op de betreffende netwerkkaart:

Disable-NetAdapterRsc -Name "Ethernet" -IPv4

Met deze opdracht wordt RSC voor IPv4-verkeer op uw netwerkkaart met de naam “Ethernet” (vervang dit door de daadwerkelijke naam van uw interface) uitgeschakeld. Test daarna het kopiëren van bestanden opnieuw of voer een doorvoertest uit met iperf. Als de snelheden aanzienlijk toenemen, kunt u RSC op switchniveau uitschakelen om ervoor te zorgen dat deze instelling permanent is voor uw VM-verbinding.

Set-VMSwitch -Name vSwitchName -EnableSoftwareRsc $false

Waarbij vSwitchName de naam van uw virtuele switch is. Houd er rekening mee dat u dit op elk moment kunt in- of uitschakelen zonder de huidige verbindingen te verstoren, dus het is de moeite waard om dit een paar keer te testen.

En als je RSC globaal op je host wilt uitschakelen (wat soms nodig is als de switch-opdrachten niet voldoende zijn), voer dan dit uit in PowerShell:

netsh int tcp set global rsc=disabled

Het is best vreemd dat het omzetten van deze schakelaars al helpt, maar bij sommige apparaten is het precies wat nodig is.

Controleer uw VMQ-modus (Virtual Machine Queue).

Een andere veelvoorkomende valkuil is VMQ, een hardware-offloadfunctie die bedoeld is om de netwerkprestaties te verbeteren door pakketten direct aan virtuele machines door te geven. Maar als uw hardware VMQ niet goed ondersteunt of als het verkeerd geconfigureerd is, kan dit leiden tot pakketverlies of vertraging, met name bij oudere Broadcom gigabit-netwerkkaarten.

Je kunt de ondersteuningsstatus van VMQ controleren met PowerShell:

Get-NetAdapterVmq

Als je ziet dat VMQ is ingeschakeld, maar je vermoedt dat het problemen veroorzaakt, kan het uitschakelen ervan helpen. Zo schakel je VMQ uit voor een specifieke netwerkkaart:

Set-NetAdapterVmq -Name "NICName" -Enabled $False

Vervang NICName door de daadwerkelijke naam van uw netwerkinterface. Na het uitschakelen is het meestal raadzaam de host snel opnieuw op te starten om eventuele resterende problemen te verhelpen. Zorg er ook voor dat uw QoS-beleid de bandbreedte niet beperkt, want dat kan de vertraging ook verergeren.

TCP-stackinstellingen nauwkeurig afstellen

Een ander aspect dat een verschil kan maken, is het aanpassen van de TCP-parameters van Windows, met name omdat Windows Server 2019 standaard het CUBIC TCP-congestiealgoritme gebruikt. Dit algoritme is bedoeld voor snelle netwerken, maar is mogelijk niet optimaal in sommige virtuele omgevingen.

Sla eerst je huidige TCP-instellingen op, zodat je ze indien nodig kunt herstellen:

Get-NetTCPSetting -SettingName Datacenter, DatacenterCustom, InternetCustom, Internet | Export-Csv c:\backup\ws2019_network_stack_settings_nettcp_backup.csv

Vervolgens kunt u de TCP-congestiecontrole aanpassen en onnodige functies zoals RSS en RSC uitschakelen, aangezien deze de VM-prestaties kunnen beïnvloeden.

netsh int tcp show global netsh int tcp set global RSS=Disabled netsh int tcp set global RSC=Disabled

Schakel ook Large Send Offload (LSO) uit op uw netwerkkaarten:

Get-NetAdapter | Set-NetAdapterAdvancedProperty -DisplayName "Large Send Offload Version 2 (IPv4)" -DisplayValue "Disabled" -NoRestart Get-NetAdapter | Set-NetAdapterAdvancedProperty -DisplayName "Large Send Offload Version 2 (IPv6)" -DisplayValue "Disabled" -NoRestart Restart-NetAdapter

Schakel bovendien ‘Receive Segment Coalescing’ uit in de geavanceerde eigenschappen van de netwerkkaart (als u liever de grafische interface gebruikt).Dit is vaak nuttig in situaties met lage latentie of in virtuele machines waar prestaties belangrijk zijn.

Samenvatting

  • Controleer de RSC-status metGet-VMSwitch | Select-Object *RSC*
  • Schakel RSC voor IPv4/IPv6 indien nodig uit met behulp van PowerShell- of netsh-opdrachten.
  • Controleer en schakel VMQ uit als het problemen veroorzaakt via Get-NetAdapterVmqenSet-NetAdapterVmq
  • Pas de TCP-stackinstellingen aan om RSC en RSS uit te schakelen en de congestiecontrole te optimaliseren.
  • Start de netwerkadapters opnieuw op na de wijzigingen om de nieuwe instellingen toe te passen.

Samenvatting

Al met al heeft het aanpassen van deze netwerkinstellingen veel mensen geholpen om de netwerksnelheid van hun virtuele machines op Windows Server 2019 te verhogen. Het is niet altijd meteen duidelijk waarom, maar experimenteren met het uitschakelen van functies zoals RSC en VMQ levert vaak merkbare verbeteringen op. Wees wel gewaarschuwd: soms kunnen deze wijzigingen inconsistentie veroorzaken, dus maak back-ups van je configuratie en test na elke aanpassing. Hopelijk lost dit in ieder geval één probleem op. We duimen dat dit helpt!