Linux 仮想マシンに関する考慮事項

Linux および BSD 仮想マシンには、Hyper-VのWindows 仮想マシンと比較して追加の考慮事項があります。

最初の考慮事項は、統合サービスが存在するかどうか、または VM が啓蒙されていないエミュレートされたハードウェア上でのみ実行されているかどうかです。 組み込みまたはダウンロード可能な統合サービスを持つ Linux および BSD リリースの表は、Windows で Hyper-V 用にサポートされている Linux および FreeBSD 仮想マシンにあります。 これらのページには、Linux ディストリビューション リリースで利用可能な Hyper-V 機能のグリッドと、該当する場合はそれらの機能に関する注記があります。

ゲストが統合サービスを実行している場合でも、最高のパフォーマンスを発揮しないレガシーハードウェアで構成できます。 たとえば、従来のネットワークアダプターを使用する代わりに、ゲスト用の仮想イーサネットアダプターを構成して使用します。 Windows Server 2016 では、SR-IOV などの高度なネットワークも利用できます。

Linux ネットワークパフォーマンス

Linux は既定でハードウェア アクセラレーションとオフロードを有効にします。 ホスト上の NIC のプロパティで vRSS が有効になっていて、Linux ゲストが vRSS を使用する機能を持っている場合、その機能は有効になります。 Powershell では、これと同じパラメーターをEnableNetAdapterRSSコマンドで変更できます。

同様に、VMMQ (仮想スイッチ RSS) 機能は、ゲストが使用する物理 NIC で有効にできます。[プロパティ][構成][詳細]タブ [仮想スイッチ RSS][有効] に設定するか、次を使用して Powershell で VMMQ を有効にします。

 Set-VMNetworkAdapter -VMName **$VMName** -VmmqEnabled $True

ゲストでは、制限を増やすことで追加の TCP チューニングを実行できます。 仮想化されたワークロードは「BareMetal」ワークロードよりもレイテンシーが高くなるため、最高のパフォーマンスを得るには、ワークロードを複数の 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 ストレージのパフォーマンス

次のようないくつかのベスト プラクティスは、「HYPER-V で Linux を実行するためのベスト プラクティス」に掲載されています。 Linuxカーネルには、さまざまなアルゴリズムで要求を並べ替えるためのさまざまな I/O スケジューラがあります。 NOOP は、ハイパーバイザーによって行われるスケジュール決定を渡す先入れ先出しキューです。 Hyper-V で Linux 仮想マシンを実行する場合は、スケジューラーとして NOOP を使用することをお勧めします。 特定のデバイスのスケジューラーを変更するには、ブートローダの構成 (たとえば、/ etc / grub.conf) で、カーネルパラメーターにelevator=noopを追加してから、再起動します。

ネットワークと同様に、ストレージを使用した Linux ゲストのパフォーマンスは、ホストをビジー状態にしておくのに十分な深さを持つ複数のキューから最大のメリットが得られます。 ストレージの性能をマイクロ ベンチマークするには、おそらく libaio エンジンを備えた fio ベンチマークツールが最適です。

その他の参照情報