VMCのENIのスループットを実測してみた
こんばんわ
今日は、VMC on AWSとConnected VPCとのスループットを検証する機会がありましたので、紹介したいと思います。
構成イメージはこんな感じです。
<VMC構成>
リージョン/AZ:東京/ap-northeast-1a
SDDCバージョン:1.12
ESXiホスト:i3.metal 3ノード
VM:Windows Server2016 × 3台(各ホストに分散)
<AWS構成>
EC2:Windows Server 2016(m5.xlarge) × 1台
<測定方法>
ツール:iperf-3.1.3
EC2をサーバーモードで起動し、VMCのVM3台から同時にiperfを実行
結果の前に、、、、
そもそもVMCは、いわゆるAWSインフラストラクチャ上に構築されたサービスです。
ENI(Elastic Network Interface)と記載している部分について、VMCの場合VMware Cloud ENIと呼ばれたりしますが、ENI自体はAWSのコンポーネントになります。
つまり、ENIは、ESXi ホスト(厳密にはベアメタルの ENA(Elastic Network Adapter) )に対して構成されるコンポーネントです。
↑のように、実態としてはAWSのi3.metalインスタンスのENAであり、AWSの公表値では、ネットワークパフォーマンスは25Gbpsと記載されています。
※ただし、AWS側の仕様によりシングルフロー通信は5Gbpsとなります。
ちなみに、ENIの数は1クラスタあたり17個作成されます。
これは、1クラスタあたりMAXノード 16台(vSAN制約) + メンテナンス用の1つ、です。
また、VMC側の観点では、i3.metalインスタンスをNSXによって仮想化したネットワークとなっているので、T0-Routerを含めたネットワーク帯域は、同じく25Gbpsで構成されています(各VMのNICは10Gbpsです)。
前置きが長くなりましたが、試してみた結果を以下に。
まず、1台のみに対して実施
ウィンドウサイズを変更すると、初回1秒だけ5Gbpsくらいのスループットが出ますが、以降は1Gbps前後に収まります。
3台同時実施
およそ、1台あたり800~900Mbpsのスループットとなりました。
・・・・・・なるほど。
(どこかボトルネックが別にあるかも・・・?)
今回はちょ~~っと軽い気持ちで試してみたのですが、色々試すには時間がない!ということで、続きの検証は次回以降に持ち越したいと思います。
おそらくVM数を増やせばそのぶんスループットは上がるものだと思います。
あとは、スペックとかOS設定とか仮想NICとか、EC2側の構成とか色々ありますが、なかなかどうしてパフォーマンス検証というのは、往々にして深みにハマることがありますよね。。。
という言い訳を残しつつ今回はオサラバさせていただきます!ドロン
※追記
どうやらボトルネックは、EC2のスループットだったようです。
上記の通り、EC2はm5.xlarge(Network Perfomance:Up to 10 Gigabit)でしたが、、、この「Up to」はいわゆるバーストした際の最大スループットでございます。
・・・・じゃあ、ベーススループットはナンボなの?
という話ですが、AWS公式ではネットワークスループットに関してはベース値の記載がない!のです。
(EBSとかは詳細にバーストの仕組みとかベーススループットとかが記載されてるんですが・・・)
で、色々と検証してみたら、m5.xlargeはベースが1Gbps なのではなかろうか、、という結論にいたりました。