Amazon EC2 Linux インスタンス間のネットワーク帯域幅を評価する必要があります。その方法を教えてください。

Amazon EC2 ネットワークのパフォーマンスに影響を与える可能性のある要因を以下にいくつか示します。

  • 降順で定義されている EC2 インスタンスの物理的な近さ:
    • 同じアベイラビリティーゾーン内のインスタンス
    • 同じリージョンの異なるアベイラビリティーゾーン内のインスタンス
    • 同じ大陸の異なるリージョン内のインスタンス
    • 異なる大陸の異なるリージョン内のインスタンス
  • EC2 インスタンスの最大伝送単位(MTU)。EC2 インスタンスのデフォルトのインターフェイス設定では、1 つの Virtual Private Cloud (VPC) で高いスループットを可能にするジャンボフレーム(9001 MTU)が使用されます。ただし、1 つの VPC の外では、最大 MTU が 1,500 以下であるため、大きいパケットは中間システムによって分割される必要があります。したがって、デフォルトの MTU 値として 9,001 では効率が下がる可能性があり、ネットワークスループットが節約されても、それ以上に処理オーバーヘッドは高くなります。これは特に、お客様のネットワークトラフィックのほとんどがインターネット向けの場合です。ジャンボフレームを使用するように設定できるインスタンスタイプは CC2、C3、R3、CG1、CR1、G2、HS1、HI1、I2、T2、M3 などです。詳細については、「インスタンスタイプ」を参照してください。
  • EC2 インスタンスサイズ。インスタンスタイプのインスタンスサイズが大きくなるほど、一般的にネットワークパフォーマンスは高くなりますが、同じタイプのインスタンスサイズは小さくなります。
  • T2 および M3 インスタンスタイプを除く、Linux 対応 EC2 拡張ネットワーキングサポート。
  • プレイスメントグループを使用した EC2 ハイパフォーマンスコンピューティング(HPC)のサポート。HPC では、2 分割帯域幅と短いレイテンシーが特徴で、10 ギガビットのネットワーク速度がサポートされています。詳細については、「プレイスメントグループでのインスタンスの起動」を参照してください。各インスタンスタイプのネットワークパフォーマンスを確認するには、「インスタンスタイプのマトリックス」を参照してください。

これらの要因のため、多くの場合、クラウド環境間でネットワークパフォーマンスは大きく異なります。クラウドベースのアプリケーションに対するネットワークパフォーマンスの影響を評価するためのベストプラクティスには、お客様の環境の定期的なベースラインネットワークベンチマークテストを含める必要があります。この記事では、EC2 インスタンス間のネットワークパフォーマンスの設定とベンチマークに必要な手順について説明します。ネットワークパフォーマンスは、多くの場合、アプリケーションパフォーマンスの重要な側面であるため、ネットワークパフォーマンスのテストにより、ニーズに最適な EC2 のインスタンスタイプ、サイズ、設定を決定するための貴重な洞察を得られます。

ベンチマークテストを開始する前に、Linux EC2 インスタンスを起動して設定します。

  1. Amazon EC2 インスタンスを起動する」の手順に従って、ネットワークパフォーマンステストを実行する 2 つの Linux インスタンスを起動します。
  2. 可能な限りベストなネットワークパフォーマンスを得るために、インスタンスが Linux 対応拡張ネットワーキングをサポートしていることを確認してから、同一 VPC 内でインスタンスを起動し、「VPC 内の Linux インスタンスでの拡張ネットワーキングの有効化」の手順に従ってください。
  3. 同じプレイスメントグループに共存していないインスタンス間や、ジャンボフレームがサポートされていないインスタンス間でネットワークテストを実行する場合は、「EC2 インスタンスの最大ネットワーク伝送単位(MTU)」の手順に従って、Amazon EC2 インスタンスで MTU を確認して設定します。
  4. Linux インスタンスへの接続」の手順を完了して、インスタンスにアクセスできることを確認します。

ターミナルセッションを介して Linux インスタンスに接続し、以下のコマンドを実行して iperf3 をインストールします。

  • RHEL ベースの Linux ホストに iperf3 インストールするには:
         $ sudo yum --enablerepo=epel install iperf iperf3
  • Debian/Ubuntu ホストに iperf3 インストールするには:
         $ sudo apt-get update
         $ sudo apt-get upgrade
         $ sudo apt-get install git gcc make
         $ git clone https://github.com/esnet/iperf
         $ cd iperf
         $ ./configure
         $ sudo make
         $ sudo make install
         # optionally run "make clean" to free up disk space
         # by removing artifacts in the build tree.
         $ sudo make clean
         $ sudo ldconfig

iperf3 は、TCP のパフォーマンスをテストするときにデフォルトでポート 5001 を介して通信を行います。ただし、このポートは -p スイッチを使用して設定できます。iperf3 によって使用されるポートを介した通信を許可するようにセキュリティグループが設定されていることを確認します。

  1. サーバーがデフォルトのポートでリッスンするように 1 つのインスタンスを設定するか、-p スイッチを使用して代替のリスナーポートを指定します。
         $ sudo iperf3 -s -p 80
  2. クライアントとして別のインスタンスを設定し、必要なパラメータを使用してサーバーに対してテストを実行します。たとえば、以下のコマンドでは、ポート 80 を介した 10 個の並列接続を使用するサーバーインスタンスを指定して、そのインスタンスに対して TCP テストを開始します。
         $ sudo iperf3 -c 10.0.2.176 -i 1 -t 60 -V -p 80

iperf3 パラメータを使用すると、出力には、TCP 接続ごとの間隔(60 秒)、接続ごとに転送されたデータ、各接続で利用された帯域幅が表示されます。ここで示している iperf3 出力は、同じプレイスメントグループに共存して HPC をサポートする 2 つ c4.8xlarge EC2 Linux インスタンスをテストすることで生成されました。すべての接続で利用された帯域幅の合計は 9.60 GB/秒でした。

出力:

[ ID] Interval       Transfer     Bandwidth

[  5]  0.0-60.0 sec  6.71 GBytes   960 Mbits/sec

[  4]  0.0-60.0 sec  6.69 GBytes   957 Mbits/sec

[  6]  0.0-60.0 sec  6.55 GBytes   937 Mbits/sec

[  7]  0.0-60.0 sec  6.84 GBytes   980 Mbits/sec

[  8]  0.0-60.0 sec  6.68 GBytes   956 Mbits/sec

[  9]  0.0-60.0 sec  6.76 GBytes   968 Mbits/sec

[ 10]  0.0-60.0 sec  6.55 GBytes   938 Mbits/sec

[ 12]  0.0-60.0 sec  6.77 GBytes   969 Mbits/sec

[ 11]  0.0-60.0 sec  6.70 GBytes   960 Mbits/sec

[ 13]  0.0-60.0 sec  6.80 GBytes   973 Mbits/sec

[SUM]  0.0-60.0 sec  67.0 GBytes  9.60 Gbits/sec

iperf3 は、UDP のパフォーマンスをテストするときにデフォルトでポート 5201 を介して通信を行います。ただし、このポートは -p スイッチを使用して設定できます。iperf3 によって使用されるポートを介した通信を許可するようにセキュリティグループが設定されていることを確認します。

  1. サーバーがデフォルトのポートでリッスンするように 1 つのインスタンスを設定するか、-p スイッチを使用して代替のリスナーポートを指定します。
         $ sudo iperf3 -s -p 80
  2. クライアントとして別のインスタンスを設定し、必要なパラメータを使用して、そのサーバーに対してテストを実行します。たとえば、以下のコマンドは、ポート 80 を介して 100 MB/秒の目標帯域幅を使用するサーバーインスタンスを指定して、そのインスタンスに対して UDP テストを開始します。
         $ sudo iperf3 -c 10.0.2.176 -p 80 -u -b 100m

出力には、間隔(時間)、データ転送量、達成帯域幅、ジッター(ネットワークジッタはデータグラムの定期的な到着時間のずれ)、UDP データグラムの損失/合計が示されます。

[ ID] Interval        Transfer     Bandwidth       Jitter    Lost/Total Datagrams

[  3]  0.0-10.0 sec   120 MBytes   101 Mbits/sec   0.005 ms  0/85470 (0%)

[  3]  0.0-10.0 sec   1 datagrams received out-of-order

[  3] Sent 15113 datagrams

Amazon EC2 Linux, ネットワーク, パフォーマンス, プレイスメントグループ, HPC, スループット, iperf, iperf3, MTU, VPC, UDP, TCP


このページは役に立ちましたか? はい | いいえ

AWS サポートナリッジセンターに戻る

サポートが必要ですか?AWS サポートセンターをご覧ください。