Solaris と VMware の間で 1Gbps しか得られないのはなぜですか?

Solaris と VMware の間で 1Gbps しか得られないのはなぜですか?

VMWare ESXi 5.1.0(ビルド1065491)ホストでSolaris (OpenIndiana)VM をゲストとして使用します。ESXi と Solaris 間の NFS トラフィック用にプライベート vSwitch を作成しました。Solaris VM には VMware ツールがインストールされており、vmxnet3s0プライベート vSwitch に VMXnet3 アダプタ ( ) があります。

Solaris VM 上で直接ファイルを読み取ると、ddファイルの読み取り速度は最大 4.5 GB/秒 (44.8 ギガビット/秒) になります (ARC/L2ARC によってキャッシュされている場合)。

VMware から NFS 経由で同じファイルを読み取ると、最大 0.163 GB/秒 (1.131 ギガビット/秒) しか得られません。

なぜこのような違いがあるのでしょうか?TCPとNFS、仮想ネットワークによるオーバーヘッドは予想できますが、その違いは私が言うところのオーバーヘッド何か問題があるようです。

Solaris VM の CPU の使用率は 20% を超えることはありません。負荷平均は低いです。ホストには十分な空き RAM があり (スワップは行われていません)、ホストの CPU 使用率は 50% を大きく下回っています (通常は約 33%)。ゲスト VM では、dladm show-linkprop vmxnet3s0速度が 10000 (10 Gbit/秒)、MTU が 9000 (ジャンボ フレームが有効) であることが示されています。

テストとして、「標準」の E1000 vmnic ( e1000g0) を使用してみましたが、ジャンボ フレーム (9000 MTU) を有効にすることはできましたが、VMware から NFS 経由で同じファイルを読み取ると、最大 0.124 GB/秒 (0.992 ギガビット/秒) しか得られませんでした。これは、E1000 のリンク速度が 1000 メガビットしかないことを考えると当然のことです。

VMware ESXi 5.1 と OpenIndiana Solaris VM 間の転送速度が 1 ギガビット/秒程度しか表示されないのはなぜですか?


アップデート:VFrontDe が回答で推奨しているパフォーマンス チューニングを適用した結果、vmxnet3アダプタを使用した Solaris と Linux VM 間で 8 ~ 9 Gbit/秒という驚異的な速度を実現しています。Linux で NFS 経由でキャッシュされたファイルを読み取ると、約 6 Gbps の速度を実現しています。

root@iperf:/mnt/public/ISO# dd if=Test.cdr of=/dev/null bs=1024k
5884+1 records in
5884+1 records out
6170824704 bytes (6.2 GB) copied, 8.44985 s, 730 MB/s

しかし、VMware ESXi ホストで同じファイルを読み取ると、1.91 Gbps という悲惨な結果になります。

/vmfs/volumes/3d77318f-82c7901a/ISO # time dd if=Windows\ 7\ Home\ Premium.cdr of=/dev/null bs=1024k
5884+1 records in
5884+1 records out
real    0m 27.85s
user    0m 17.32s
sys     0m 0.00s

27.85秒で6.2GBは1.91Gbpsとなる

VMware ESXi のパフォーマンスがはるかに優れてvmknicいるのに、なぜこれほどまでに低下しているのでしょうか?vmxnet3vmxnet3

答え1

Solaris 用の vmxnet3 アダプタにはいくつかの問題とバグがあるようです。この非常に詳細な投稿をご覧ください:http://blog.cyberexplorer.me/2013/03/improving-vm-to-vm-network-throughput.html著者はいくつかの調整を行った後、スループットを大幅に向上させることができましたが、ここですべての手順を繰り返すのは多すぎます。

関連情報