Rendimiento deficiente de la red en la máquina virtual Hyper-V
Algunas veces me he encontrado con una situación en la que copiar archivos desde una máquina virtual en un host Hyper-V que ejecuta Windows Server era mucho más lento. En este artículo, intento describir algunas formas diferentes de mejorar el rendimiento de la red de las máquinas virtuales Hyper-V que se ejecutan en Windows Server (y las últimas versiones de Windows 10 y 11).
Recibir combinación de segmentos (RSC) en Hyper-V vSwitch
Primero, debe prestar atención a la función de consolidación de segmentos de recepción (RSC) que llegará a Hyper-V en Windows Server 2019/2022 (y Windows 10 1809+) . La coalescencia del segmento de recepción se utiliza en el nivel del conmutador virtual (vSwitch).
RSC permite reducir la carga de la CPU y aumentar el rendimiento de la red combinando múltiples segmentos TCP en segmentos más grandes . El rendimiento de la red mejora porque los segmentos grandes se procesan más rápido que muchos segmentos más pequeños.
Si la compatibilidad con RSC está habilitada, puede causar latencia de red adicional en algunas configuraciones de hardware.
De forma predeterminada, RSC está habilitado en todos los conmutadores externos en Windows Server 2019.
Puede verificar si RSC está habilitado para el conmutador virtual usando el siguiente comando:
Get-VMSwitch | Select-Object *RSC*
Puede deshabilitar el uso de RSC para el tráfico IPv4 en el adaptador de red del cliente usando el siguiente comando:
Disable-NetAdapterRsc -Name "Ethernet" -IPv4
Compruebe si deshabilitar RSC mejora la velocidad de replicación en Hyper-V VM. Si las velocidades de la red mejoran, RSC se puede desactivar en el conmutador virtual al que está conectada la VM.
Para deshabilitar el software RSC para un conmutador virtual específico, ejecute el siguiente comando:
Set-VMSwitch -Name vSwitchName -EnableSoftwareRsc $false
Alternativamente, puede desactivar RSC por completo en hosts de Windows:
netsh int tcp set global rsc=disabled
Modo de cola de máquina virtual (VMQ) en el controlador del adaptador de red
En algunos casos, puede producirse un rendimiento deficiente de la red en las máquinas virtuales Hyper-V si VMQ (Cola de máquinas virtuales) está habilitado en el controlador del adaptador de red del host físico Hyper-V.
VMQ es una función de hardware y, si su hardware no la admite, habilitarla en el controlador puede provocar la pérdida de paquetes y una mayor latencia de la red.
Este problema es típico de los adaptadores de red Broadcom Gigabit y ocurre en todas las versiones de Hyper-V (Windows Server 2012 R2/2016/2019).
VMQ se puede desactivar en las propiedades del controlador del adaptador de red.
Alternativamente, puede usar PowerShell para mostrar una lista de adaptadores de red compatibles con VMQ y su estado:
Get-NetAdapterVmq
Para deshabilitar VMQ para una tarjeta de red específica, ejecute el siguiente comando (el adaptador de red no estará disponible durante unos segundos):
Set-NetAdapterVmq -Name “NICName” -Enabled $False
Después de deshabilitar VMQ, es una buena idea reiniciar el host y verificar el rendimiento de la red.
Asegúrese de que la política de limitación de ancho de banda QoS esté deshabilitada en Windows .
Optimización de la configuración de TCP para Hyper-V en Windows Server 2019
Guarde la configuración TCP actual en el host Hyper-V y aplique la nueva configuración que hará que la configuración TCP en Windows Server 2019 sea casi similar a la de Windows Server 2016.
Guardar la configuración actual:
Get-NetTCPSetting -SettingName Datacenter,DatacenterCustom,InternetCustom,Internet|select SettingName,CongestionProvider,CwndRestart,ForceWS|Export-csv c:\backup\ws2019_network_stack_settings_nettcp_backup.csv
Aplique nuevas configuraciones de NetTCP a la LAN:
Set-NetTCPSetting -SettingName DatacenterCustom,Datacenter -CongestionProvider DCTCP
Set-NetTCPSetting -SettingName DatacenterCustom,Datacenter -CwndRestart True
Set-NetTCPSetting -SettingName DatacenterCustom,Datacenter -ForceWS Disabled
Para WAN:
Set-NetTCPSetting -SettingName InternetCustom,Internet -CongestionProvider CTCP
Set-NetTCPSetting -SettingName InternetCustom,Internet -DelayedAckTimeoutMs 50
Set-NetTCPSetting -SettingName InternetCustom,Internet -ForceWS Disabled
Deshabilite los métodos de optimización de red RSS y RSC en el nivel de pila TCP:
netsh int tcp show global
netsh int tcp set global RSS=Disabled
netsh int tcp set global RSC=Disabled
O a nivel de tarjeta de red:
Get-NetAdapter | Set-NetAdapterAdvancedProperty -DisplayName "Recv Segment Coalescing (IPv4)" -DisplayValue "Disabled" -NoRestart
Get-NetAdapter | Set-NetAdapterAdvancedProperty -DisplayName "Recv Segment Coalescing (IPv6)" -DisplayValue "Disabled" -NoRestart
Get-NetAdapter | Set-NetAdapterAdvancedProperty -DisplayName "Receive Side Scaling" -DisplayValue "Disabled" –NoRestart
Deshabilite vRSS para todas las máquinas virtuales:
Get-VM | Set-VMNetworkAdapter -VrssEnabled $FALSE
Deshabilite la descarga de envío grande (LSO) en la tarjeta de red: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
Get-NetAdapter | Restart-NetAdapter
- Recibir fusión de segmentos (IPv4/IPv6) = Deshabilitado
- Descarga de envío grande v2 (IPv4/IPv6) = Deshabilitado
Esta configuración de la pila TCP hará que la configuración del protocolo de red de Windows Server 2019 sea similar a las versiones anteriores de Windows Server.