Linux および BSD 仮想マシンには、Hyper-V の Windows 仮想マシンと比較して追加の考慮事項があります。
最初の考慮事項は、Integration Services が存在するかどうか、または VM をエンライトメントのないエミュレートされたハードウェア上でのみ実行するかどうかです。 Integration Services が組み込まれている、またはダウンロード可能な Linux および BSD リリースの表は、 Windows 上の Hyper-V でサポートされている Linux および FreeBSD 仮想マシンで入手できます。 これらのページには、Linux ディストリビューション リリースで使用可能な Hyper-V 機能のグリッドと、該当する場合はそれらの機能に関するメモがあります。
ゲストが Integration Services を実行している場合でも、最適なパフォーマンスを発揮しないレガシ ハードウェアで構成できます。 たとえば、レガシ ネットワーク アダプターを使用する代わりに、ゲストの仮想イーサネット アダプターを構成して使用します。 Windows Server 2016 では、SR-IOV などの高度なネットワークも利用できます。
Linux ネットワーク パフォーマンス
Linux では、既定でハードウェア アクセラレーションとオフロードが有効になっています。 ホスト上の NIC のプロパティで vRSS が有効になっていて、Linux ゲストが vRSS を使用する機能を持っている場合、機能は有効になります。 Powershell では、この同じパラメーターを EnableNetAdapterRSS
コマンドで変更できます。
同様に、VMMQ (仮想スイッチ RSS) 機能は、ゲストプロパティ>Configure...>で使用される物理 NIC で有効にすることができます。[詳細設定] タブ>次を使用して、仮想スイッチ RSS を有効に設定するか、Powershell で VMMQ を有効にします。
Set-VMNetworkAdapter -VMName **$VMName** -VmmqEnabled $True
ゲストでは、制限を増やすことで、追加の TCP チューニングを実行できます。 ワークロードを複数の CPU に分散させ、ワークロードを深くすることで、仮想化されたワークロードの待機時間が "ベア メタル" よりも長くなるため、最適なスループットが得られます。
ネットワーク ベンチマークで役立つチューニング パラメーターの例を次に示します。
net.core.netdev_max_backlog = 30000
net.core.rmem_max = 67108864
net.core.wmem_max = 67108864
net.ipv4.tcp_wmem = 4096 12582912 33554432
net.ipv4.tcp_rmem = 4096 12582912 33554432
net.ipv4.tcp_max_syn_backlog = 80960
net.ipv4.tcp_slow_start_after_idle = 0
net.ipv4.tcp_tw_reuse = 1
net.ipv4.ip_local_port_range = 10240 65535
net.ipv4.tcp_abort_on_overflow = 1
ネットワークマイクロベンチマークの便利なツールはntttcpであり、LinuxとWindowsの両方で利用可能です。 Linux バージョンはオープン ソースであり、 github.com 上の ntttcp-for-linux から入手できます。 Windows のバージョンは 、ダウンロード センターにあります。 ワークロードをチューニングするときは、最適なスループットを得るために必要な数のストリームを使用することをお勧めします。 ntttcp を使用してトラフィックをモデル化し、 -P
パラメーターは使用される並列接続の数を設定します。
Linux Storage のパフォーマンス
次のようないくつかのベスト プラクティスは、 Hyper-V で Linux を実行するためのベスト プラクティスに記載されています。 Linux カーネルには、異なるアルゴリズムで要求を並べ替えるさまざまな I/O スケジューラがあります。 NOOP は、スケジュール決定をハイパーバイザーに委ねる先入れ先出しキューです。 Hyper-V で Linux 仮想マシンを実行する場合は、スケジューラとして NOOP を使用することをお勧めします。 特定のデバイスのスケジューラを変更するには、ブート ローダーの構成 (/etc/grub.conf など) で、カーネル パラメーターに elevator=noop
を追加してから再起動します。
ネットワークと同様に、記憶域を備えた Linux ゲスト パフォーマンスは、ホストをビジー状態に保つために十分な深さの複数のキューから最もメリットがあります。 マイクロベンチマークストレージのパフォーマンスは、libaioエンジンを備えたfioベンチマークツールでおそらく最高です。