当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] Windows Server 2019 中的 Hyper-V 虚拟机网络性能不佳

作者:精品下载站 日期:2024-12-14 23:17:11 浏览:13 分类:玩电脑

Windows Server 2019 中的 Hyper-V 虚拟机网络性能不佳


我曾多次遇到这样的情况:在运行 Windows Server 2019 的 Hyper-V 主机上从虚拟机复制文件的速度比在运行 Windows Server 2016 的主机上相同配置的虚拟机中复制文件的速度要慢得多。在某些测试中,通过网络到 Windows Server 2019 上的虚拟机的读/写速度几乎比 WS2016 上的低三倍(通过 SMB、SSH/SCP 进行复制进行了测试)。在本文中,我尝试描述几种不同的方法来提高在 Windows Server 2019(以及最新的 Windows 10 和 11 版本)上运行的 Hyper-V 虚拟机的网络性能。

Hyper-V vSwitch 中的接收段合并 (RSC)

首先,您应该注意 Windows Server 2019/2022(和 Windows 10 1809+)上的 Hyper-V 中出现的接收段合并 (RSC) 功能。接收段合并用于虚拟交换机级别 (vSwitch)。 RSC 允许通过将多个 TCP 段组合成更大的段来减少 CPU 负载并增加网络吞吐量网络性能得到提高,因为大数据段的处理速度比许多小数据段更快。

在以前的 Hyper-V 版本 (Windows Server 2016/2012R2) 中,NIC 级别仅支持硬件接收段合并模式。

如果启用 RSC 支持,可能会导致某些硬件配置中出现额外的网络延迟。

Windows Server 2019 完整 GUI 版本和免费的 Windows Hyper-V Server 中都会出现此问题。

默认情况下,为 Windows Server 2019 上的所有外部 vSwitch 启用 RSC。

您可以使用以下命令检查虚拟交换机是否启用了 RSC:

Get-VMSwitch | Select-Object *RSC*

您可以使用以下命令在客户端网络适配器上禁用对 IPv4 流量使用 RSC:

Disable-NetAdapterRsc -Name "Ethernet" -IPv4

检查禁用 RSC 后 Hyper-V VM 中的复制速度是否有所提高。如果网络速度有所提高,您可以在虚拟机连接的虚拟交换机上禁用 RSC。

您可以使用 iperf 工具检查网络吞吐量。

要禁用特定虚拟交换机的软件 RSC,请运行以下命令:

Set-VMSwitch -Name vSwitchName -EnableSoftwareRsc $false

[玩转系统] Windows Server 2019 中的 Hyper-V 虚拟机网络性能不佳

您可以即时启用/禁用 RSC,它不会影响任何活动连接。

或者您可以在 Windows 主机上完全禁用 RSC:

netsh int tcp set global rsc=disabled

网络适配器驱动程序中的虚拟机队列 (VMQ) 模式

在某些情况下,如果在物理 Hyper-V 主机的网络适配器驱动程序中启用VMQ(虚拟机队列),可能会导致 Hyper-V 虚拟机的网络性能较差。 VMQ 是一项硬件功能,如果您的硬件不支持它,但在驱动程序中启用它,则可能会导致数据包丢失并增加网络延迟。该问题是 Broadcom 千兆位网络适配器的典型问题,并且出现在所有 Hyper-V 版本 (Windows Server 2012 R2/2016/2019) 中。

VMQ 旨在通过将数据包从物理网络适配器直接转发到虚拟机来提高网络性能。

您可以在网络适配器驱动程序的属性中禁用 VMQ。

[玩转系统] Windows Server 2019 中的 Hyper-V 虚拟机网络性能不佳

或者,您可以使用 PowerShell 显示支持 VMQ 的网络适配器列表及其状态:

Get-NetAdapterVmq

要禁用特定 NIC 的 VMQ,请运行以下命令(网络适配器将在几秒钟内不可用):

Set-NetAdapterVmq -Name “NICName” -Enabled $False

[玩转系统] Windows Server 2019 中的 Hyper-V 虚拟机网络性能不佳

禁用VMQ后,最好重新启动主机并检查网络性能。

确保 Windows 中禁用 QoS 带宽限制策略。

优化 Windows Server 2019 上 Hyper-V 的 TCP 设置

保存 Hyper-V 主机上的当前 TCP 设置并应用新设置,这将使 Windows Server 2019 中的 TCP 设置与 Windows Server 2016 中的 TCP 设置几乎相似。

保存当前设置:

Get-NetTCPSetting -SettingName Datacenter,DatacenterCustom,InternetCustom,Internet|select SettingName,CongestionProvider,CwndRestart,ForceWS|Export-csv c:\backup\ws2019_network_stack_settings_nettcp_backup.csv

默认情况下,在 Windows Server 2019 和 Windows 10 1709+ 中,使用 TCP 的 CUBIC 实现。该算法针对高延迟的高速网络进行了优化(Linux 内核 2.6.19 及更高版本也默认使用该算法)。

[玩转系统] Windows Server 2019 中的 Hyper-V 虚拟机网络性能不佳

仅在 Windows Server 2019 或 Hyper-V 2019 中应用以下设置。

为 LAN 应用新的 NetTCP 设置:

Set-NetTCPSetting -SettingName DatacenterCustom,Datacenter -CongestionProvider DCTCP
Set-NetTCPSetting -SettingName DatacenterCustom,Datacenter -CwndRestart True
Set-NetTCPSetting -SettingName DatacenterCustom,Datacenter -ForceWS Disabled

对于广域网:

Set-NetTCPSetting -SettingName InternetCustom,Internet -CongestionProvider CTCP
Set-NetTCPSetting -SettingName InternetCustom,Internet -DelayedAckTimeoutMs 50
Set-NetTCPSetting -SettingName InternetCustom,Internet -ForceWS Disabled

在 TCP 堆栈级别禁用网络 RSS 和 RSC 网络优化方法:

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

或在 NIC 级别:

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

为所有虚拟机禁用 vRSS:

Get-VM | Set-VMNetworkAdapter -VrssEnabled $FALSE

在 NIC 上禁用大量发送卸载 (LSO):

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

您还可以在网络适配器属性的“高级”选项卡中禁用这些选项:

  • 接收段合并 (IPv4/IPv6)=禁用

  • 大量发送卸载 V2 (IPv4/IPv6)=禁用

[玩转系统] Windows Server 2019 中的 Hyper-V 虚拟机网络性能不佳

这些 TCP 堆栈设置将使 Windows Server 2019 网络协议设置与以前的 Windows Server 版本类似。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯