ESXi 6.7の仮想環境において、主に使用される仮想ネットワークアダプタ (以下、仮想NIC) は以下となっている。
※()内は、各NICのリンクスピードを示す。
- E1000e (1Gbps)
- VMXNET 3 (10Gbps)
近年の仮想環境では、10Gbps以上の物理ネットワーク接続が主流になっているので、仮想マシンのおいても1Gbps以上の通信を必要とする場合は、リンクスピードが10GbpsとなっているVMXNET 3を利用する必要があると思っていた。
しかし、実際にはそうではなく、E1000eのような1Gbpsの仮想NICであっても、それ以上の通信速度が出る。今回、それを確かめるため、速度測定を実施してみた。
測定環境
測定環境は①VMXNET 3と②E1000eの2種類のNICを持つNFSサーバを用意し、それぞれのNICに対してNFSマウントを行った際のファイル転送速度を計測する。
ファイル転送はNFSクライアント側にてdd
コマンドにて5GBのファイル作成を行う。NFSサーバ側では、dstat
コマンドにて受信時の転送速度を計測する。
測定結果
① VMXNET 3の場合
まずはVMXNET 3の測定を行う。ethtoolコマンドでNICのリンクスピードを確認すると、10000Mb/s = 10Gbpsのリンクスピードとなっている。
# ethtool ens256 | grep Speed
Speed: 10000Mb/s
VMXNET 3のNICに付与されているIPアドレスに対してNFSマウントを行い、dd
コマンドで5GBのファイルを作成した際の転送速度を計測する。
まず、ファイル送信側のdd
コマンドの結果は、1.0 GB/sとなった。
# dd bs=100M count=50 if=/dev/zero of=/nfs/testfile
50+0 レコード入力
50+0 レコード出力
5242880000 バイト (5.2 GB) コピーされました、 5.21289 秒、 1.0 GB/秒
受信側となるNFSサーバでdstat
にて計測した結果も以下の通り、ネットワーク受信速度を表す「recv」の値が約1GB/sとなっている。これはVMXNET 3が10Gbpsの仮想NICであるため、なんら不思議なことではない。
usr sys idl wai hiq siq| read writ| recv send| in out | int csw
0 45 44 6 0 4| 0 785M| 793M 1010k| 0 0 | 20k 11k
0 46 42 7 0 5| 0 899M|1010M 1282k| 0 0 | 19k 21k
0 43 46 8 0 3| 0 952M| 875M 1071k| 0 0 | 15k 16k
0 53 39 4 0 5| 0 983M|1040M 1298k| 0 0 | 16k 14k
0 40 48 8 0 5| 0 863M| 822M 986k| 0 0 | 15k 18k
0 26 68 4 0 2| 0 518M| 470M 581k| 0 0 |8190 7893
② E1000eの場合
次に、E1000eの測定を行う。NICのリンクスピードを確認すると、1000Mb/s = 1Gbpsとなっていることがわかる。
# ethtool ens224 | grep Speed
Speed: 1000Mb/s
E1000eのNICに付与されているIPアドレスに対してNFSマウントを行い、dd
コマンドで5GBのファイルを作成した際の転送速度を計測する。
まず、ファイル送信側のdd
コマンドの結果は、1.0 GB/sとなった。
# dd bs=100M count=50 if=/dev/zero of=/nfs/testfile
50+0 レコード入力
50+0 レコード出力
5242880000 バイト (5.2 GB) コピーされました、 5.22793 秒、 1.0 GB/秒
受信側となるNFSサーバでdstat
にて計測した結果も、recvの値が約1GB/sとなっている。
usr sys idl wai hiq siq| read writ| recv send| in out | int csw
0 43 48 5 0 4| 0 897M| 929M 1195k| 0 0 | 22k 15k
0 32 56 9 0 4| 0 825M| 833M 1060k| 0 0 | 19k 22k
0 40 46 11 0 4| 0 968M| 947M 1198k| 0 0 | 22k 33k
0 39 49 10 0 3| 0 918M| 912M 1148k| 0 0 | 18k 30k
0 45 43 7 0 4| 0 1059M|1061M 1369k| 0 0 | 22k 29k
0 14 82 4 0 1| 0 333M| 327M 437k| 0 0 |6957 11k
結果、リンクスピードが1GbpsとなっているE1000eを選択したとしても、VMXNET 3と同様に1Gbps以上で通信できることが確認できた。
まとめ
以上より、ESXiの仮想環境の仮想NICは、リンクスピードが通信速度の上限となるわけではなく、それ以上の通信速度が出せることがわかった。
ESXiでは仮想マシン作成時に、選択したOSに合わせて適切な仮想NICがデフォルトで選ばれるようになっているので、特に理由がなければ変更せずに使っても問題なく動作する。しかし、一般的にはE1000eよりもVMXNET 3を選択する方がパフォーマンスが向上すると言われているため、ネットワークのパフォーマンスがシビアな環境ではVMXNET 3に変えることも考慮した方がよいだろう。
うちの場合、仮想マシン windows server 2019(ドメインコントローラ)でVMXNET3 に変更したら、ファイルコピーのパフォーマンスが悪くなりました。コピーの途中で極端に速度が落ちるのです。ドメインコントローラではない windows Server だと、極端な速度低下はありませんが、速度は微妙に遅い感じでした。e1000に戻そうかと。
返信削除情報提供ありがとうございます!
削除私の環境だと特に大きな性能の差異はなさそうなので、細かいバージョンや環境の差異によるものかもしれないですね。