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
VMware ESXi のパフォーマンスがはるかに優れてvmknic
いるのに、なぜこれほどまでに低下しているのでしょうか?vmxnet3
vmxnet3
答え1
Solaris 用の vmxnet3 アダプタにはいくつかの問題とバグがあるようです。この非常に詳細な投稿をご覧ください:http://blog.cyberexplorer.me/2013/03/improving-vm-to-vm-network-throughput.html著者はいくつかの調整を行った後、スループットを大幅に向上させることができましたが、ここですべての手順を繰り返すのは多すぎます。