すべてのプロダクト
Search
ドキュメントセンター

Elastic Compute Service:ネットワークパフォーマンステストの方法

最終更新日:Dec 27, 2025

パケット転送速度、ネットワーク帯域幅、ネットワーク遅延は、Elastic Compute Service (ECS) インスタンスのネットワークパフォーマンスを測定するための重要なメトリックです。1 秒あたりのパケット数 (pps) で測定されるパケット転送速度は、1 秒間に転送できるパケット数を示すメトリックです。ネットワーク帯域幅は、ネットワークのデータ転送速度を示すメトリックです。ネットワーク遅延は、データパケットが送信者から受信者に到達するまでにかかる時間を示すメトリックです。ネットワークパフォーマンスをテストすることで、ネットワークの安定性とスループットを向上させ、ネットワーク遅延を削減し、ユーザーエクスペリエンスとアプリケーションパフォーマンスを向上させることができます。このトピックでは、Netperf や sockperf などのツールを使用して、ECS インスタンスのパケット転送速度、ネットワーク帯域幅、ネットワーク遅延をテストする方法について説明します。テスト結果に基づいて、インスタンスのネットワークパフォーマンスを評価できます。

重要
  • データ損失を防ぐため、データを含まない新しい ECS インスタンスのネットワークパフォーマンスをテストすることを推奨します。

  • インスタンスタイプのメトリックはすべて、テスト環境内で検証および取得されたものです。実際のシナリオでは、インスタンスのパフォーマンスは、インスタンスの負荷やネットワークモデルなどの他の要因によって異なる場合があります。

テスト環境の準備

前提条件

  • パケット転送速度、ネットワーク帯域幅、ネットワーク遅延など、さまざまなネットワークパフォーマンスメトリックをテストするために使用できる ECS インスタンスを作成します。ECS インスタンスの作成方法の詳細については、「「カスタム起動」タブでのインスタンスの作成」をご参照ください。

    重要

    テスト結果の正確性と比較可能性を確保し、インスタンス仕様の違いなどの他の要因がテスト結果に与える影響を排除するために、ネットワークパフォーマンステストでは同じインスタンスタイプの ECS インスタンスを使用することを推奨します。

  • 同じテスト環境内のすべての ECS インスタンスが同じ Virtual Private Cloud (VPC) にデプロイされ、同じ vSwitch に接続され、同じセキュリティグループに属していることを確認してください。

環境の

以下は、このトピックのネットワークパフォーマンステストで使用されるプライマリおよび補助テスト ECS インスタンスのインスタンスタイプと数量です。ご自身のテストでは、実際の環境に基づいて 2 つのインスタンスを選択できます。

  • ECS インスタンスのパケット転送速度のテスト (このテストは Linux インスタンスでのみ実行可能)

    説明

    Windows インスタンスのパケット転送速度をテストするためのツールはありません。このトピックでは、Windows インスタンスのパケット転送速度のテスト方法については説明しません。

    パケット転送速度が 6,000,000 pps 未満の場合

    テスト項目

    テストマシン

    補助テストマシン

    インスタンスタイプ

    ecs.g7.large

    ecs.g7.large

    イメージ

    Alibaba Cloud Linux 3

    Alibaba Cloud Linux 3

    インスタンス数

    1 台

    1

    ネットワーク

    パブリック IP アドレスを割り当てます

    パケット転送速度が 6,000,000 pps を超え、20,000,000 pps 未満の場合

    テスト項目

    テストマシン

    補助テストマシン

    インスタンスタイプ

    ecs.g7.16xlarge

    ecs.g7.16xlarge

    イメージ

    Alibaba Cloud Linux 3

    Alibaba Cloud Linux 3

    インスタンス数

    1 台

    3 台

    ネットワーク

    パブリック IP アドレスを割り当てます。

    パケット転送速度が 20,000,000 pps を超える場合

    テスト例

    テストマシン

    補助テストマシン

    インスタンスタイプ

    ecs.g7.32xlarge

    ecs.g7.32xlarge

    イメージ

    Alibaba Cloud Linux 3

    Alibaba Cloud Linux 3

    インスタンス数

    1 台

    3 台

    ネットワーク

    パブリック IP アドレスを割り当てます

  • ECS インスタンスのネットワーク帯域幅とネットワーク遅延のテスト

    Linux インスタンス

    テスト項目

    テストマシン

    補助テストマシン

    インスタンスタイプ

    ecs.g7.large

    ecs.g7.large

    イメージ

    Alibaba Cloud Linux 3

    Alibaba Cloud Linux 3

    インスタンス数

    1

    1 台

    ネットワーク

    パブリック IP アドレスを割り当てます

    Windows インスタンス

    テスト項目

    テストマシン

    補助テストマシン

    インスタンスタイプ

    ecs.g7.large

    ecs.g7.large

    イメージ

    Windows Server 2022

    Windows Server 2022

    インスタンス数

    1 台

    1

    ネットワーク

    パブリック IP アドレスを割り当てます

ネットワークパフォーマンスのテスト

パケット転送速度のテスト (Linux インスタンスのみ)

説明

Windows インスタンスのパケット転送速度をテストするためのツールはありません。このセクションでは、Windows インスタンスのパケット転送速度のテスト方法については説明しません。

パケット転送速度が 6,000,000 pps 未満の場合

  1. テストマシンと 1 台以上の補助テストマシンに接続します。

    詳細については、「Workbench を使用した Linux インスタンスへの接続」をご参照ください。

  2. テストマシンと補助テストマシンで次のコマンドを実行して、Netperf インストールパッケージをダウンロードします。

    wget https://benchmark-packages.oss-cn-qingdao.aliyuncs.com/netperf-2.7.0.tar.gz
  3. テストマシンと補助テストマシンで次のコマンドを実行して、Netperf と sar をインストールします。

    1. 次のコマンドを実行して、Netperf インストールパッケージを解凍します。

      sudo yum install -y gcc autoconf automake libtool sysstat
      tar -zxvf netperf-2.7.0.tar.gz
    2. 次のコマンドを実行して、gcc のバージョン番号を照会します。

      gcc -v 2>&1
    3. テストマシンと補助テストマシンにインストールされている gcc のバージョンが 10 より後の場合は、次の操作を実行して gcc がコードを正しくコンパイルできるようにします。それ以外の場合は、このステップをスキップできます。

      1. 次のコマンドを実行して、nettest_omni.c ファイルを修正します。

        cd netperf
        vim src/nettest_omni.c
      2. i キーを押して編集モードに入り、nettest_omni.c ファイルから次の変数宣言を手動で削除します。

        変数は次のように宣言されています。

        /* different options for the sockets        */
        
        int
          loc_nodelay,    /* don't/do use NODELAY  locally    */
          rem_nodelay,    /* don't/do use NODELAY remotely  */
          loc_sndavoid,    /* avoid send copies locally    */
          loc_rcvavoid,    /* avoid recv copies locally    */
          rem_sndavoid,    /* avoid send copies remotely    */
          rem_rcvavoid;   /* avoid recv_copies remotely    */
      3. ファイルを修正した後、Esc キーを押し、:wq と入力してから Enter キーを押してファイルを保存し、終了します。

    4. 次のコマンドを実行して、Netperf と sar をインストールします。

      cd netperf
      sudo ./configure
      sudo make && sudo make install
  4. テストマシンで次のコマンドを実行して、64 個の netserver サービスを開始します。

    #!/bin/bash
    for j in `seq 64`; do
        netserver -p $[16000+j] > server_$[16000+j].netperf > /dev/null 2>&1  &
    done
  5. テストマシンで次のコマンドを実行して、テストマシンのプライベート IP アドレスを照会します。

    ifconfig || ip addr

    image.png

  6. 補助テストマシンで次のコマンドを実行して、テストマシンにトラフィックを送信します。

    #!/bin/bash
    server_ip=<Private IP address of the test machine>
    for j in `seq 64`; do
        port=$[16000+j]
        netperf -H ${server_ip} -l ${run_time:-300} -t UDP_STREAM  -p $port  -- -m 1 -D > /dev/null 2>&1 &
    done

    <Private IP address of the test machine> を、前の手順で取得したテストマシンのプライベート IP アドレスに置き換えます。次の図は例を示しています。

    image.png

  7. テストマシンで次のコマンドを実行して、テストマシンのパケット転送速度をテストします。

    sar -n DEV 1

    テスト結果で、rxpck/s 列の値を確認します。rxpck/s は、テストマシンが 1 秒あたりに受信するパケットの総数を示します。次の図の例では、テストマシンが 1 秒あたりに受信する平均パケット数は約 940,000 です。

    image.png

パケット転送速度が 6,000,000 pps を超え、20,000,000 pps 未満の場合

  1. テストマシンと 1 台以上の補助テストマシンに接続します。

    詳細については、「Workbench を使用した Linux インスタンスへの接続」をご参照ください。

  2. 3 台の補助テストマシンと 1 台のテストマシンで次のコマンドを実行して、sockperf をインストールします。

    sudo yum install -y autoconf automake libtool gcc-c++
    cd /opt
    sudo wget https://github.com/Mellanox/sockperf/archive/refs/tags/3.8.tar.gz
    sudo tar -zxf 3.8.tar.gz
    cd sockperf-3.8/
    sudo ./autogen.sh
    sudo ./configure
    sudo make -j `cat /proc/cpuinfo| grep process | wc -l`
    sudo make install
  3. テストマシンで次のコマンドを実行して、テストマシンのプライベート IP アドレスを照会します。

    ifconfig || ip addr

    image.png

  4. 3 台の補助テストマシンのそれぞれで次のコマンドを実行して、テストマシンにトラフィックを送信します。

    server_ip="<private IP address of the test machine>"
    threads=64
    msg_size=14
    run_time=60
    
    basePort=6666
    for((i=0;i<$threads;++i));do
        nohup sockperf tp -i $server_ip --pps max -m ${msg_size} -t ${run_time} --port $[${basePort}+${i}] 2>&1 &
    done

    <private IP address of the test machine> をテストマシンのプライベート IP アドレスに置き換えます。run_time はトラフィックを送信する期間を指定します。必要に応じて値を変更できます。

  5. 3 台の補助テストマシンと 1 台のテストマシンで次のコマンドを実行して、パケット転送速度をテストします。

    sar -n DEV 1

    テストマシンで、rxpck/s 列の値を確認します。rxpck/s は、テストマシンが 1 秒あたりに受信するパケット数を示します。次の図の例では、テストマシンが 1 秒あたりに受信するパケット数は約 1,200 万です。接收数据包

パケット転送速度が 20,000,000 pps を超える場合

  1. テストマシンと 1 台以上の補助テストマシンに接続します。

    詳細については、「Workbench を使用した Linux インスタンスへの接続」をご参照ください。

  2. 3 台の補助テストマシンと 1 台のテストマシンで次のコマンドを実行して、sockperf をインストールします。

    sudo yum install -y autoconf automake libtool gcc-c++
    cd /opt
    sudo wget https://github.com/Mellanox/sockperf/archive/refs/tags/3.8.tar.gz
    sudo tar -zxf 3.8.tar.gz
    cd sockperf-3.8/
    sudo ./autogen.sh
    sudo ./configure
    sudo make -j `cat /proc/cpuinfo| grep process | wc -l`
    sudo make install
  3. テストマシンで次のコマンドを実行して、割り込みリクエスト (IRQ) をバインドします。

    1 秒あたりに大量のパケットが転送されるシナリオでは、IRQ を CPU コアにバインドして、IRQ が CPU コアによって処理されるようにすることができます。これにより、コンテキストスイッチが削減され、IRQ 処理効率が向上します。

    a=$(cat /proc/interrupts | grep virtio2-input | awk -F ':' '{print $1}')
    cpu=0
    for irq in $a; do
        echo $cpu >/proc/irq/$irq/smp_affinity_list
        let cpu+=2
    done
  4. テストマシンで次のコマンドを実行して、テストマシンのプライベート IP アドレスを照会します。

    ifconfig || ip addr

    image.png

  5. 3 台の補助テストマシンのそれぞれで次のコマンドを実行して、テストマシンにトラフィックを送信します。

    server_ip="<private IP address of the test machine>"
    threads=64
    msg_size=14
    run_time=60
    
    basePort=6666
    for((i=0;i<$threads;++i));do
        nohup sockperf tp -i $server_ip --pps max -m ${msg_size} -t ${run_time} --port $[${basePort}+${i}] 2>&1 &
    done

    <private IP address of the test machine> をテストマシンのプライベート IP アドレスに置き換えます。run_time はトラフィックを送信する期間を指定します。必要に応じて値を変更できます。

  6. 3 台の補助テストマシンと 1 台のテストマシンで次のコマンドを実行して、パケット転送速度をテストします。

    sar -n DEV 1

    テストマシンで、rxpck/s 列の値を確認します。rxpck/s は、テストマシンが 1 秒あたりに受信するパケット数を示します。次の図の例では、テストマシンが 1 秒あたりに受信するパケット数は約 2,000 万です。2400万PPS

ネットワーク帯域幅のテスト

Linux インスタンス

  1. テストマシンと補助テストマシンに接続します。

    詳細については、「Workbench を使用した Linux インスタンスへの接続」をご参照ください。

  2. テストマシンと補助テストマシンで次のコマンドを実行して、Netperf インストールパッケージをダウンロードします。

    wget https://benchmark-packages.oss-cn-qingdao.aliyuncs.com/netperf-2.7.0.tar.gz
  3. テストマシンと補助テストマシンで次のコマンドを実行して、Netperf と sar をインストールします。

    1. 次のコマンドを実行して、Netperf インストールパッケージを解凍します。

      sudo yum install -y gcc autoconf automake libtool sysstat
      tar -zxvf netperf-2.7.0.tar.gz
    2. 次のコマンドを実行して、gcc のバージョン番号を照会します。

      gcc -v 2>&1
    3. テストマシンと補助テストマシンにインストールされている gcc のバージョンが 10 より後の場合は、次の操作を実行して gcc がコードを正しくコンパイルできるようにします。それ以外の場合は、このステップをスキップできます。

      1. 次のコマンドを実行して、nettest_omni.c ファイルを修正します。

        cd netperf
        vim src/nettest_omni.c
      2. i キーを押して編集モードに入り、nettest_omni.c ファイルから次の変数宣言を手動で削除します。

        変数宣言は次のとおりです。

        /* different options for the sockets        */
        
        int
          loc_nodelay,    /* don't/do use NODELAY  locally    */
          rem_nodelay,    /* don't/do use NODELAY remotely  */
          loc_sndavoid,    /* avoid send copies locally    */
          loc_rcvavoid,    /* avoid recv copies locally    */
          rem_sndavoid,    /* avoid send copies remotely    */
          rem_rcvavoid;   /* avoid recv_copies remotely    */
      3. ファイルを修正した後、Esc キーを押し、:wq と入力してから Enter キーを押してファイルを保存し、終了します。

    4. 次のコマンドを実行して、Netperf と sar をインストールします。

      cd netperf
      sudo ./configure
      sudo make && sudo make install
  4. テストマシンで次のコマンドを実行して、64 個の netserver サービスを開始します。

    #!/bin/bash
    for j in `seq 64`; do
        netserver -p $[16000+j] > server_$[16000+j].netperf 2>&1 &
    done
  5. テストマシンで次のコマンドを実行して、テストマシンのプライベート IP アドレスを照会します。

    ifconfig || ip addr

    image.png

  6. 補助テストマシンで次のコマンドを実行して、テストマシンにトラフィックを送信します。

    #!/bin/bash
    server_ip=<Private IP address of the test machine>
    for j in `seq 64`; do
        port=$[16000+j]
        netperf -H ${server_ip} -l ${run_time:-300} -t TCP_STREAM -p $port -- -D > /dev/null 2>&1 & 
    done

    <Private IP address of the test machine> を、前の手順で取得したテストマシンのプライベート IP アドレスに置き換えます。次の図は例を示しています。

    image.png

  7. テストマシンで次のコマンドを実行して、ネットワーク帯域幅をテストします。

    sar -n DEV 1

    次の図に示すように、テスト結果の rxkB/s 列の値を確認します。rxkB/s 列には、テストマシンが 1 秒あたりに受信したパケットのサイズが表示されます。単位:KB/s。1 バイトは 8 ビットに相当します。rxkB/s 列のパケットサイズに 8 を掛けると、Kbit/s 単位のネットワーク帯域幅の値が得られます。

    次の図は一例です。image.png

Windows インスタンス

  1. テストマシンと補助テストマシンに接続します。

    詳細については、「Workbench を使用して Windows インスタンスにログイン」をご参照ください。

  2. テストマシンと補助テストマシンにテストツールをインストールし、ファイアウォールを無効にします。

    1. ntttcp.exe ツールをダウンロードし、ツールが保存されているパスを取得します。

    2. 「ファイル名を指定して実行」ダイアログボックスを開きます。powershell と入力し、[OK] をクリックして PowerShell を起動します。

    3. 次のコマンドを実行して、ファイアウォールを無効にします。これにより、ファイアウォールが 2 台のマシン間の接続をブロックするのを防ぎます。

      Set-NetFirewallProfile -Profile * -Enabled:false

      または、インバウンドルールを追加して、ntttcp.exe からのパケットがファイアウォールを通過できるようにすることもできます。

      $ntttcpPath = "<Path of ntttcp.exe>"
      New-NetFirewallRule -DisplayName ntttcp -Protocol Any -Direction Inbound -Action Allow -Enabled True -Profile Any -Program $ntttcpPath
      説明

      <actual path of ntttcp.exe> をテストマシン上の実際のパスに置き換えてください。

  3. テストマシンで次のコマンドを実行して、ネットワークアダプター (ネットワークインターフェイスコントローラーとも呼ばれる) の Receive Side Scaling (RSS) を設定します。

    RSS は、複数の CPU コア上の受信キューにパケットを効率的に分散させてネットワークパフォーマンスを向上させ、同時ネットワーク処理を可能にするネットワークドライバーテクノロジーです。コマンドでは:

    • テストマシンに最大 16 個の CPU コアがある場合、RSS 受信キューの数を CPU コアの数に設定して、各 CPU コアがネットワークトラフィックを処理するための独立した RSS 受信キューを持つようにします。

    • テストマシンに 16 個を超える CPU コアがある場合、RSS を無効にします。多くのネットワークアダプターは最大 16 個の RSS キューをサポートしています。16 個を超える CPU コアを持つテストマシンで RSS を使用すると、リソースが均等に割り当てられないか、管理の複雑さが増す可能性があります。

    $cpuNum = (Get-CimInstance -ClassName Win32_Processor).NumberOfLogicalProcessors
    if ($cpuNum -le 16) {
      Set-NetAdapterRss -Name <Name of the network adapter on the test machine> -NumberOfReceiveQueues $cpuNum
    } else {
      Disable-NetAdapterRss -Name <Name of the network adapter on the test machine>
    }
    説明
    • <name of the network adapter on the test machine> を必要に応じて置き換えます。Get-NetAdapter | Select-Object Name コマンドを実行して名前を取得できます。

    • ネットワークアダプターの RSS 設定を変更した後、ネットワークアダプターサービスを再起動する必要があります。これにより、ネットワークアダプター上のネットワーク接続が中断される可能性があります。ネットワーク接続が再確立されるまで待ってから、後続の操作を実行してください。

  4. テストマシンで次のコマンドを実行して、データ受信の準備をします。

    $serverIp = (Get-NetIPConfiguration -InterfaceAlias <name of the network adapter on the test machine>).IPv4Address.IPAddress
    $cpuNum = (Get-CimInstance -ClassName Win32_Processor).NumberOfLogicalProcessors
    $threadNum = $cpuNum
    & <actual path of ntttcp.exe on the test machine> -r -m $threadNum,0,$serverIp -t 300
    説明

    <name of the network adapter on the test machine><actual path of ntttcp.exe on the test machine> を適宜置き換えてください。

  5. 補助テストマシンで次のコマンドを実行して、データを送信します。

    $serverIp = "<Private IP address of the test machine>"
    $threadNum = "<Thread number of the test machine>"
    <Path of ntttcp.exe on the auxiliary test machine> -s -m $threadNum,*,$serverIp -t 100
    説明

    <private IP address of the test machine> (ipconfig コマンドを実行して取得可能)、<threadNum of the test machine> ($cpuNum コマンドを実行して取得可能)、および <actual path of ntttcp.exe on the auxiliary test machine> を必要に応じて置き換えてください。

  6. テストマシンでテストされたネットワーク帯域幅を確認します。

    次の図はテスト例を示しています。Throughput(MB/s) の値はネットワーク帯域幅を示します。

    image

ネットワーク遅延のテスト

Linux インスタンス

  1. テストマシンと補助テストマシンに接続します。

    詳細については、「Workbench を使用した Linux インスタンスへの接続」をご参照ください。

  2. テストマシンと補助テストマシンで、次のコマンドを実行して sockperf をインストールします。

    sudo yum install -y autoconf automake libtool gcc-c++
    cd /opt
    sudo wget https://github.com/Mellanox/sockperf/archive/refs/tags/3.8.tar.gz
    sudo tar -zxf 3.8.tar.gz
    cd sockperf-3.8/
    sudo ./autogen.sh
    sudo ./configure
    sudo make -j `cat /proc/cpuinfo| grep process | wc -l`
    sudo make install
  3. テストマシンで次のコマンドを実行して、テストマシンのプライベート IP アドレスを照会します。

    ifconfig || ip addr

    image.png

  4. テストマシンで次のコマンドを実行して、サービスを開始します。

    sockperf sr --tcp --daemonize
  5. 補助テストマシンで次のコマンドを実行して、テストマシンにトラフィックを送信します。

    sockperf pp -i <Private IP address of the test machine> --tcp -t 30 -m 14 --full-log=result.json

    <private IP address of the test machine> を、前の手順で取得したテストマシンのプライベート IP アドレスに置き換えます。

  6. テストマシンでテストされたネットワーク遅延を確認します。

    次の図はテストの例です。

    • avg-latency で始まる値は、マイクロ秒 (μs) 単位の平均遅延を示します。

    • percentile 99.000 で始まる値は、μs 単位の 99 パーセンタイルの遅延を示します。

    image.png

Windows インスタンス

  1. テストマシンと補助テストマシンに接続します。

    詳細については、「Workbench を使用して Windows インスタンスにログイン」をご参照ください。

  2. テストマシンと補助テストマシンにテストツールをインストールし、ファイアウォールを無効にします。

    1. latte.exe ツールをダウンロードし、ツールが保存されているパスを取得します。

    2. 「ファイル名を指定して実行」ダイアログボックスを開きます。powershell と入力し、[OK] をクリックして PowerShell を起動します。

    3. ファイアウォールがテストマシンと補助テストマシンへの接続をブロックするのを防ぐために、マシンで次のコマンドを実行してファイアウォールを無効にします。

      Set-NetFirewallProfile -Profile * -Enabled:false

      または、インバウンドルールを追加して、latte.exe パケットがファイアウォールを通過できるようにすることもできます。

      $lattePath = "<Path of latte.exe>"
      New-NetFirewallRule -DisplayName Latte -Protocol Any -Direction Inbound -Action Allow -Enabled True -Profile Any -Program $lattePath
      説明

      <actual path of latte.exe> をテストマシン上の latte.exe へのパスに置き換えてください。

  3. テストマシンで次のコマンドを実行して、データ受信の準備をします。

    $serverIp = (Get-NetIPConfiguration | Where-Object {$_.InterfaceAlias -eq '<Name of the network adapter on the test machine>'} | Select-Object -ExpandProperty IPv4Address).IPAddress
    $port = <Communication port>
    & "<Path of latte.exe on the test machine>" -a "$serverIp`:$port" -i 65535
    説明
    • <name of the network adapter on the test machine> (Get-NetAdapter | Select-Object Name コマンドを実行して取得可能) と <actual path of latte.exe on the test machine> を必要に応じて置き換えてください。

    • <communication port> の値を定義します。ポート番号は、テストマシンと補助テストマシンで同じである必要があります。

  4. 補助テストマシンで次のコマンドを実行して、データを送信します。

    $serverIp = "<Private IP address of the test machine>"
    $port = <Communication port>
    & "<Path of latte.exe on the auxiliary test machine>" -c -a "${serverIp}:$port" -i 65535
    説明
    • <private IP address of the test machine> (ipconfig コマンドを実行して取得可能) と <actual path of latte.exe on the auxiliary test machine> を正しい値に置き換えてください。

    • <communication port> の値を指定します。ポート番号は、テストマシンと補助テストマシンで同じである必要があります。

  5. テストマシンでテストされたネットワーク遅延を確認します。

    次の図はテスト例を示しています。Latency(usec) の値は、マイクロ秒 (μs) 単位の平均データ転送遅延を示します。

    image