Windows Server
 Computer >> コンピューター >  >> システム >> Windows Server

WindowsServer2019のHyper-VVMでのネットワークパフォーマンスの低下

Windows Server 2019を実行しているホスト上の同じ構成のVMよりも、WindowsServer2019を実行しているHyper-Vホスト上の仮想マシンとの間でファイルのコピーが非常に遅いという状況に何度か遭遇しました。 Windows Server 2019のVMへのネットワーク経由の/書き込み速度は、WS2016の場合のほぼ3分の1です(SMB経由のコピー、SSH / SCPがテストされました)。この記事では、Windows Server 2019(および最新のWindows 10および11ビルド)で実行されているHyper-V仮想マシンのネットワークパフォーマンスを向上させるためのいくつかの異なる方法について説明しました。

Hyper-V vSwitchでセグメント合体(RSC)を受信する

まず、受信セグメント合体(RSC)に注意する必要があります Windows Server 2019/2022(およびWindows 10 1809+)のHyper-Vに登場した機能。受信セグメント合体は、仮想スイッチレベル(vSwitch)で使用されます。 RSCを使用すると、複数のTCPセグメントをより大きなセグメントに結合することでCPU負荷を軽減し、ネットワークスループットを向上させることができます 大きなセグメントは多くの小さなセグメントよりも高速に処理されるため、ネットワークパフォーマンスが向上します。

以前のHyper-Vバージョン(Windows Server 2016 / 2012R2)では、ハードウェアの受信セグメント合体モードのみがNICレベルでサポートされていました。

RSCサポートが有効になっている場合、一部のハードウェア構成で余分なネットワーク遅延が発生する可能性があります。

この問題は、WindowsServer2019のフルGUIバージョンと無料のWindowsHyper-Vサーバーの両方で発生します。

デフォルトでは、RSCはWindowsServer2019のすべての外部vSwitchで有効になっています。

次のコマンドを使用して、仮想スイッチでRSCが有効になっているかどうかを確認できます。

Get-VMSwitch | Select-Object *RSC*

次のコマンドを使用して、クライアントネットワークアダプタでのIPv4トラフィックに対するRSCの使用を無効にできます。

Disable-NetAdapterRsc -Name "Ethernet" -IPv4

RSCを無効にした後、Hyper-VVMのコピー速度が向上したかどうかを確認します。ネットワーク速度が向上した場合は、VMが接続されている仮想スイッチでRSCを無効にすることができます。

iperfツールを使用してネットワークスループットを確認できます。

特定の仮想スイッチのソフトウェアRSCを無効にするには、次のコマンドを実行します。

Set-VMSwitch -Name vSwitchName -EnableSoftwareRsc $false

WindowsServer2019のHyper-VVMでのネットワークパフォーマンスの低下

RSCはオンザフライで有効/無効にできますが、アクティブな接続には影響しません。

または、WindowsホストでRSCを完全に無効にすることもできます:

netsh int tcp set global rsc=disabled

ネットワークアダプタドライバの仮想マシンキュー(VMQ)モード

場合によっては、 VMQ(仮想マシンキュー) 物理Hyper-Vホストのネットワークアダプタードライバーで有効になっていると、Hyper-V仮想マシンのネットワークパフォーマンスが低下する可能性があります。 VMQはハードウェア機能であり、ハードウェアでサポートされていないがドライバーで有効になっていると、パケット損失が発生し、ネットワーク遅延が増加する可能性があります。この問題はBroadcomギガビットネットワークアダプターに典型的なものであり、すべてのHyper-Vバージョン(Windows Server 2012 R2 / 2016/2019)で発生します。

VMQは、物理ネットワークアダプターから仮想マシンにパケットを直接転送することにより、ネットワークパフォーマンスを向上させるように設計されています。

ネットワークアダプタドライバのプロパティでVMQを無効にできます。

WindowsServer2019のHyper-VVMでのネットワークパフォーマンスの低下

または、PowerShellを使用して、VMQをサポートするネットワークアダプターとそのステータスのリストを表示できます。

Get-NetAdapterVmq

特定のNICのVMQを無効にするには、以下のコマンドを実行します(ネットワークアダプターは数秒間使用できなくなります):

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

WindowsServer2019のHyper-VVMでのネットワークパフォーマンスの低下

VMQを無効にした後、ホストを再起動してネットワークパフォーマンスを確認することをお勧めします。

WindowsでQoS帯域幅制限ポリシーが無効になっていることを確認してください。

WindowsServer2019でHyper-VのTCP設定を最適化する

Hyper-Vホストに現在のTCP設定を保存し、新しい設定を適用して、WindowsServer2019のTCP設定をWindowsServer2016のTCP設定とほぼ同じにします。

現在の設定を保存します:

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

WindowsServer2019およびWindows101709+のデフォルトでは、 CUBIC TCPの実装が使用されます。このアルゴリズムは、待ち時間の長い高速ネットワーク向けに最適化されています(Linuxカーネル2.6.19以降でもデフォルトで使用されます)。

WindowsServer2019のHyper-VVMでのネットワークパフォーマンスの低下

次の設定は、WindowsServer2019またはHyper-V2019でのみ適用してください。

LANに新しいNetTCP設定を適用します:

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

WANの場合:

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

すべてのVMで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

ネットワークアダプタのプロパティの[詳細設定]タブで、次のオプションを無効にすることもできます。

  • Recvセグメント合体(IPv4 / IPv6)=無効
  • 大規模送信オフロードV2(IPv4 / IPv6)=無効

WindowsServer2019のHyper-VVMでのネットワークパフォーマンスの低下

これらのTCPスタック設定により、WindowsServer2019のネットワークプロトコル設定は以前のWindowsServerバージョンの設定と同様になります。


  1. Hyper-V2019での仮想スイッチの構成

    最後のいくつかの記事では、Hyper-V 2019について説明し、最初の仮想マシンのインストール、初期構成、および展開の手順について説明しました。これらの記事を見逃した場合は、次のリンクで確認できます。 パート1:Hyper-V 2019サーバーコアのインストールパート2:Hyper-V 2019コアサーバー–初期構成パート3:Hyper-V 2019コアリモート管理パート4:最初の作成Hyper-V 2019の仮想マシンパート5:Hyper-V2019の仮想マシンのエクスポートとインポート この記事では、仮想マシンで仮想ネットワークカードを構成する方法について説明します。まず、仮想マシン

  2. 修正:RPCサーバーはWindows 7、8、および10では使用できません

    RPCは、リモートプロシージャコールとも呼ばれます。これは、コンピューターの出現以来存在する技術であり、プロセス間通信技術を利用しています。その主な目的は、クライアントとサーバーがネットワークを介して相互に通信できるようにすることです。デバイスについても同じことが言えます。 簡単に言うと、ネットワークを介してデータや情報を共有しているときはいつでも、RPCがすべての作業を代行します。 RPCは、ネットワークを介したデバイスの管理でも主要な役割を果たし、スキャナーやプリンターなどのコントローラー周辺機器でも使用されます。 「RPCサーバーが利用できません」というエラーの原因は何ですか?