edit-icon download-icon

ECSインスタンスのネットワークパフォーマンスのテスト方法

最終更新日: May 31, 2018

この記事では、ECS インスタンスのネットワークパフォーマンスをテストする方法を説明します。この記事で説明する内容は次のとおりです。

  1. 次のような環境の準備:
    1.1. テストサーバーの準備
    1.2. コンパニオントレーニングサーバーの準備
    1.3. Netperf のインストール
    1.4. 複数キュー機能の有効化
  2. 次のようなテスト:
    2.1. ツール関連パラメーターの導入
    2.2. インバウンドトラフィックのテスト
    2.3. アウトバウンドトラフィックのテスト
    2.4. テスト結果の分析

1. 環境の準備

テストを完了するには、以下を準備する必要があります。

  • テストサーバー: 1 秒あたりのパケット数 (PPS) パフォーマンスを判断するためにストレステストを行う ECS インスタンス。サーバーは、Netperf テストでクライアントまたはサーバーとして使用できます。

  • 8 台のコンパニオントレーニングサーバー: Netperf テストでクライアントまたはサーバーとして使用される 8 つの ECS インスタンス。テストサーバーとの制御接続を確立して、テスト設定情報とテスト結果を渡します。

すべての ECS インスタンスが同じセキュリティグループにある必要があります。

1.1. テストサーバーの準備

  • 画像: centos_7_2_64_40G_base_20170222.vhd
  • インスタンスタイプ: ecs.se1.14xlarge
  • 数量: 1
  • ECS インスタンス名: i-test-vm (仮定)

テストサーバーの IP アドレスは 172.0.0.1 と想定します。

1.2. 8 台のコンパニオントレーニングサーバーの準備

  • 画像: centos_7_2_64_40G_base_20170222.vhd
  • インスタンスタイプ: ecs.se1.2xlarge
  • 数量: 8
  • ECS インスタンス名: i-partnerVm-{1-8}

8 台のテストサーバーの IP アドレスは 172.0.0.2−172.0.0.9 と想定します。

1.3. Netperf のインストール

手順に従ってテストサーバーとコンパニオントレーニングサーバーに Netperf をインストールします。

  1. 次のコマンドを実行して、Netperf をダウンロードします。

    1. wget -c "https://codeload.github.com/HewlettPackard/netperf/tar.gz/netperf-2.5.0" -O netperf-2.5.0.tar.gz
  2. 次のコマンドを実行して、Netperf をインストールします。

    1. tar -zxvf netperf-2.5.0.tar.gz
    2. cd netperf-netperf-2.5.0
    3. ./configure && make && make install && cd ..
  3. netperf -h および netserver -h を実行して、インストールが正常に終了したかどうかを認証します。

1.4. 複数キュー機能の有効化

テストサーバーで次のコマンドを実行して (eth0 NIC が有効化されると想定します)、複数キュー機能を有効にします。

  1. ethtool -L eth0 combined 4
  2. echo "ff" > /sys/class/net/eth0/queues/rx-0/rps_cpus
  3. echo "ff" > /sys/class/net/eth0/queues/rx-1/rps_cpus
  4. echo "ff" > /sys/class/net/eth0/queues/rx-2/rps_cpus
  5. echo "ff" > /sys/class/net/eth0/queues/rx-3/rps_cpus

2. テスト

2.1. Netperf パラメーターの導入

Netperf がインストールされた後、netservernetperf の 2 つのツールが生成されます。2 つのプログラムの主要パラメーターを表に示します。

ツール名 Netperf でのロール 主要パラメーター パラメーターの説明
netserver サーバー -p ポート
netperf クライアント -H ECS インスタンスの IP アドレスを指定します。
-p ECS インスタンスのポートを指定します。
-l 実行時刻を指定します。
-t 一括データ転送パフォーマンスのプロトコルとタイプ (TCP_STREAM または UDP_STREAM) を指定します。UDP_STREAM をお勧めします。
-m データパケットのサイズを指定します。
  • PPS パフォーマンスのテストでは 1 に設定します。
  • 1 秒あたりのビット数 (bps) パフォーマンスのテストでは 1400 に設定します。

2.2. インバウンドトラフィックのテスト

  1. テストサーバーで netserver プロセスを開始し、-p を使用して異なるポートを指定します。

    1. netserver -p 11256
    2. netserver -p 11257
    3. netserver -p 11258
    4. netserver -p 11259
    5. netserver -p 11260
    6. netserver -p 11261
    7. netserver -p 11262
    8. netserver -p 11263
  2. コンパニオントレーニングサーバーで netperf プロセスを開始し、データ接続用に異なるコンパニオントレーニングサーバーへのテストサーバーの netserver ポートを指定します。

    1. netperf -H 172.0.0.1 -p 11256 -t UDP_STREAM -l 300 -- -m 1 #Server 1
    2. netperf -H 172.0.0.1 -p 11257 -t UDP_STREAM -l 300 -- -m 1 #Server 2
    3. netperf -H 172.0.0.1 -p 11258 -t UDP_STREAM -l 300 -- -m 1 #Server 3
    4. netperf -H 172.0.0.1 -p 11259 -t UDP_STREAM -l 300 -- -m 1 #Server 4
    5. netperf -H 172.0.0.1 -p 11260 -t UDP_STREAM -l 300 -- -m 1 #Server 5
    6. netperf -H 172.0.0.1 -p 11261 -t UDP_STREAM -l 300 -- -m 1 #Server 6
    7. netperf -H 172.0.0.1 -p 11262 -t UDP_STREAM -l 300 -- -m 1 #Server 7
    8. netperf -H 172.0.0.1 -p 11263 -t UDP_STREAM -l 300 -- -m 1 #Server 8

    bps パフォーマンスをテストする場合は、上記のコマンドを次のように変更する必要があります。

    1. netperf -H 172.0.0.1 -p 11256 -t UDP_STREAM -l 300 -- -m 1400 #Server 1
    2. netperf -H 172.0.0.1 -p 11257 -t UDP_STREAM -l 300 -- -m 1400 #Server 2
    3. netperf -H 172.0.0.1 -p 11258 -t UDP_STREAM -l 300 -- -m 1400 #Server 3
    4. netperf -H 172.0.0.1 -p 11259 -t UDP_STREAM -l 300 -- -m 1400 #Server 4
    5. netperf -H 172.0.0.1 -p 11260 -t UDP_STREAM -l 300 -- -m 1400 #Server 5
    6. netperf -H 172.0.0.1 -p 11261 -t UDP_STREAM -l 300 -- -m 1400 #Server 6
    7. netperf -H 172.0.0.1 -p 11262 -t UDP_STREAM -l 300 -- -m 1400 #Server 7
    8. netperf -H 172.0.0.1 -p 11263 -t UDP_STREAM -l 300 -- -m 1400 #Server 8

2.3. アウトバウンドトラフィックのテスト

  1. すべてのコンパニオントレーニングサーバーで netserver プロセスを開始し、-p を使用して 8 台すべてのサーバーでポートを指定します。

    1. netserver -p 11256
  2. テストサーバーで 8 つの netperf プロセスを開始し、-H を使用してデータ接続用に 8 台のコンパニオンテストサーバーすべての IP アドレスを指定します。

    1. netperf -H 172.0.0.2 -p 11256 -t UDP_STREAM -l 300 -- -m 1 #Server 1
    2. netperf -H 172.0.0.3 -p 11256 -t UDP_STREAM -l 300 -- -m 1 #Server 2
    3. netperf -H 172.0.0.4 -p 11256 -t UDP_STREAM -l 300 -- -m 1 #Server 3
    4. netperf -H 172.0.0.5 -p 11256 -t UDP_STREAM -l 300 -- -m 1 #Server 4
    5. netperf -H 172.0.0.6 -p 11256 -t UDP_STREAM -l 300 -- -m 1 #Server 5
    6. netperf -H 172.0.0.7 -p 11256 -t UDP_STREAM -l 300 -- -m 1 #Server 6
    7. netperf -H 172.0.0.8 -p 11256 -t UDP_STREAM -l 300 -- -m 1 #Server 7
    8. netperf -H 172.0.0.9 -p 11256 -t UDP_STREAM -l 300 -- -m 1 #Server 8

    bps パフォーマンスをテストする場合は、上記のコマンドを次のように変更する必要があります。

    1. netperf -H 172.0.0.2 -p 11256 -t UDP_STREAM -l 300 -- -m 1400 #Server 1
    2. netperf -H 172.0.0.3 -p 11256 -t UDP_STREAM -l 300 -- -m 1400 #Server 2
    3. netperf -H 172.0.0.4 -p 11256 -t UDP_STREAM -l 300 -- -m 1400 #Server 3
    4. netperf -H 172.0.0.5 -p 11256 -t UDP_STREAM -l 300 -- -m 1400 #Server 4
    5. netperf -H 172.0.0.6 -p 11256 -t UDP_STREAM -l 300 -- -m 1400 #Server 5
    6. netperf -H 172.0.0.7 -p 11256 -t UDP_STREAM -l 300 -- -m 1400 #Server 6
    7. netperf -H 172.0.0.8 -p 11256 -t UDP_STREAM -l 300 -- -m 1400 #Server 7
    8. netperf -H 172.0.0.9 -p 11256 -t UDP_STREAM -l 300 -- -m 1400 #Server 8

2.4. テスト結果の分析

クライアント上の各 netperf プロセスは次の結果を出力します。

  1. Socket Message Elapsed Messages
  2. Size Size Time Okay Errors Throughput
  3. bytes bytes secs # # 10^6bits/sec
  4. 124928 1 10.00 4532554 0 3.63
  5. 212992 10.00 1099999 0.88

結果のフィールドについて次の表で説明します。

フィールドデータ 意味
124928 ソケットサイズ (バイト)
1 データパケットサイズ (バイト)
10.00 テスト時間 (秒)
4532554 成功したデータパケット
0 失敗したデータパケット
3.63 ネットワークスループット (Mbit/秒)

PPS = 成功したデータパケット/テスト時間

サーバーで sar を実行して、実際に受信したパケット数を計算し、それを結果として使用することをお勧めします。具体的なコマンドは sar -n DEV 1 320 です。