2020年12月22日火曜日

ESXiの仮想ネットワークアダプタ「E1000e」は、1Gbps以上の速度が出る

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に変えることも考慮した方がよいだろう。

参考

2 件のコメント:

  1. うちの場合、仮想マシン windows server 2019(ドメインコントローラ)でVMXNET3 に変更したら、ファイルコピーのパフォーマンスが悪くなりました。コピーの途中で極端に速度が落ちるのです。ドメインコントローラではない windows Server だと、極端な速度低下はありませんが、速度は微妙に遅い感じでした。e1000に戻そうかと。

    返信削除
    返信
    1. 情報提供ありがとうございます!

      私の環境だと特に大きな性能の差異はなさそうなので、細かいバージョンや環境の差異によるものかもしれないですね。

      削除

人気の投稿