VM インスタンスのネットワーク帯域幅の増加をベンチマークする


このドキュメントでは、2 つの VM を作成し、トラフィックを前後にストリーミングしてネットワーク パフォーマンスを監視することにより、VM ごとの Tier_1 ネットワーキング パフォーマンスをテストする方法について説明します。この機能を利用するには、Google Virtual NIC(gVNIC)をサポートするオペレーティング システムで VM を作成する必要があります。VM ごとの Tier_1 ネットワーキング パフォーマンスにはより大きな VM サイズが必要なため、VM を作成するのに十分な CPU 割り当てがあることを確認してください。

準備

  • gVNIC をサポートする公開イメージを使用していることを確認するか、プロジェクトでカスタム イメージを作成します。
  • iperf パフォーマンス テストを可能にするために、ポート TCP:5001 または別のポートでの上り(内向き)を許可する VPC ファイアウォール ルールを作成したことを確認します。
  • ベンチマークを実行するには、iPerf のバージョン 3 ではなくバージョン 2 を使用します。
  • まだ設定していない場合は、認証を設定します。認証とは、Google Cloud サービスと API にアクセスするために ID を確認するプロセスです。ローカル開発環境からコードまたはサンプルを実行するには、次のように Compute Engine に対する認証を行います。

    このページのサンプルをどのように使うかに応じて、タブを選択してください。

    コンソール

    Google Cloud コンソールを使用して Google Cloud サービスと API にアクセスする場合、認証を設定する必要はありません。

    gcloud

    1. Google Cloud CLI をインストールし、次のコマンドを実行して初期化します。

      gcloud init
    2. デフォルトのリージョンとゾーンを設定します

    REST

    このページの REST API サンプルをローカル開発環境で使用するには、gcloud CLI に指定した認証情報を使用します。

      Google Cloud CLI をインストールし、次のコマンドを実行して初期化します。

      gcloud init

ベンチマーク用の VM の設定

VM ごとの Tier_1 ネットワーキング パフォーマンスを有効にした 2 つの n2-standard-64 vCPU マシンを作成し、最も大きな最大伝送単位(MTU)に設定します。これにより、VM は最大 75 Gbps の最大下り(外向き)帯域幅(内部 IP を使用)を実現できます。

gcloud

  1. イメージを作成するには、gcloud compute images create コマンドを使用します。

      gcloud compute images create IMAGE_NAME \
       --project=PROJECT_ID \
       --source-image-family=SOURCE_IMAGE_FAMILY \
       --source-image-project=SOURCE_IMAGE_PROJECT \
       --guest-os-features=GVNIC
    

    次のように置き換えます。

    • PROJECT_ID: プロジェクトの名前。
    • IMAGE_NAME: 作成するイメージの名前。
    • SOURCE_IMAGE_FAMILY: 公開イメージの必須バージョン。このテストでは、ubuntu-2004-lts を使用します。
    • SOURCE_IMAGE_PROJECT: ソースイメージを含むプロジェクトの名前。このテストでは、ubuntu-os-cloud を使用します。

    gcloud compute images create benchmark-image-test \
      --project=my-project \
      --source-image-family=ubuntu-2004-lts \
      --source-image-project=ubuntu-os-cloud \
      --guest-os-features=GVNIC
    
  2. 最大 MTU 設定を使用する自動モード VPC ネットワークを作成します。

      gcloud compute networks create NETWORK_NAME \
      --project=PROJECT_ID \
      --subnet-mode=AUTO --mtu=8896
    

    次のように置き換えます。

    • PROJECT_ID: プロジェクトの名前。
    • NETWORK_NAME: ネットワークの名前。
  3. 同一のインスタンスを 2 つ作成します。

      gcloud compute instances create \
          VM_NAME_1 VM_NAME_2 \
          --project=PROJECT_ID \
          --zone=ZONE \
          --machine-type=n2-standard-64 \
          --image=projects/PROJECT_NAME/global/images/IMAGE_NAME \
          --network=NETWORK_NAME \
          --network-interface=nic-type=GVNIC \
          --network-performance-configs=total-egress-bandwidth-tier=TIER_1
    

    次のように置き換えます。

    • VM_NAME_1VM_NAME_2: 作成する VM インスタンスの名前。
    • PROJECT_ID: プロジェクト名。
    • ZONE: VM のゾーン。両方の VM は同じゾーン内に配置されている必要があります。
    • PROJECT_NAME/global/images/IMAGE_NAME: プロジェクト名とイメージ名。
    • NETWORK_NAME: 最大 MTU 設定で構成したネットワークの名前。

ベンチマークの実行

2 つの VM は同じゾーンと同じ VPC ネットワーク上に存在する必要があります。ベンチマークでは、これらの 2 つの VM が VPC ネットワーク パスの双方向テストを実行します。

MTU の設定を確認する

いずれかの VM のゲスト OS で ifconfig を使用して、Virtual Private Cloud(VPC)ネットワークに最大 MTU 設定が構成されていることを確認します。

  1. VM の 1 つに接続します

  2. ターミナル ウィンドウで、次のコマンドを実行します。

     /sbin/ifconfig | grep mtu
    

    MTU 8896 が出力されます。

     ens4: flags=4163  mtu 8896
     lo: flags=73  mtu 65536
    

VM 構成を確認する

仮想マシンのプロパティを調べて、仮想マシンで Tier_1 ネットワーキングが有効になっていることを確認します。

gcloud

インスタンスを表示するには、gcloud compute instances describe コマンドを使用します。

gcloud compute instances describe VM_NAME_1 \
    --project=PROJECT_ID \
    --zone=ZONE \
    --format="text(networkPerformanceConfig)"
gcloud compute instances describe VM_NAME_2 \
    --project=PROJECT_ID \
    --zone=ZONE \
    --format="text(networkPerformanceConfig)"

次のように置き換えます。

  • VM_NAME_1: 表示する VM インスタンスの名前。
  • VM_NAME_2: 表示する VM インスタンスの名前。
  • PROJECT_ID: プロジェクト名。
  • ZONE: VM のゾーン。両方の VM は同じゾーン内に配置されている必要があります。

レスポンスに次のように表示されます。

networkPerformanceConfig.totalEgressBandwidthTier: TIER_1

Debian ベースのシステムで iPerf を使用してベンチマークを実行する

gcloud

  1. まだ行っていない場合は、ベンチマーク用の VM の設定の手順を行います。

  2. 両方の VM を実行したら、SSH を使用していずれかの VM に接続します。

    gcloud compute ssh VM_NAME_1 \
      --project=PROJECT_ID
    

    次のように置き換えます。

    • VM_NAME_1: 最初の VM の名前。
    • PROJECT_ID: プロジェクト名。
  3. 最初の VM で次の手順を行います。

    1. iperf をインストールします。

      sudo apt-get update && sudo apt-get install iperf
      
    2. この VM の内部 IP アドレスを取得します。後で使用できるように、内部 IP アドレスをメモします。

      ip a
      
    3. iPerf サーバーを起動します。

      iperf -s
      

      これにより、ベンチマークを実行するために接続をリッスンするサーバーが起動します。テスト中は iPerf サーバーを稼働したままにします。

  4. 別のクライアント ターミナルで、SSH を使用して 2 番目の VM に接続します。

    gcloud compute ssh VM_NAME_2 \
       --project=PROJECT_ID
    

    次のように置き換えます。

    • VM_NAME_2: 2 番目の VM の名前。
    • PROJECT_ID: プロジェクト名。
  5. 2 番目の VM で次の手順を行います。

    1. iPerf をインストールします。

      sudo apt-get update && sudo apt-get install iperf
      
    2. iperf テストを実行し、最初の VM の IP アドレスをターゲットとして指定します。

      iperf -t 30 -c internal_ip_of_instance_1 -P 16
      

      30 秒のテストが実行されます。iPerf が他の VM に到達できない場合は、VM 上、または Google Cloud コンソールでネットワークやファイアウォール設定の調整が必要になることがあります。

      結果は次の例のようになります。Tier_1 ネットワーキングが有効になっている n2-standard-64 の下り(外向き)帯域幅の上限が 75 Gbps で、デフォルトの下り(外向き)帯域幅の上限である 32 Gbps を超えています。

      ------------------------------------------------------------
      Client connecting to 10.128.0.10, TCP port 5001
      TCP window size: 1.59 MByte (default)
      ------------------------------------------------------------
      [ 12] local 10.128.0.11 port 57722 connected with 10.128.0.10 port 5001
      [ 11] local 10.128.0.11 port 57720 connected with 10.128.0.10 port 5001
      [ 16] local 10.128.0.11 port 57730 connected with 10.128.0.10 port 5001
      [  6] local 10.128.0.11 port 57710 connected with 10.128.0.10 port 5001
      [ 13] local 10.128.0.11 port 57724 connected with 10.128.0.10 port 5001
      [  8] local 10.128.0.11 port 57712 connected with 10.128.0.10 port 5001
      [  9] local 10.128.0.11 port 57716 connected with 10.128.0.10 port 5001
      [ 14] local 10.128.0.11 port 57726 connected with 10.128.0.10 port 5001
      [ 15] local 10.128.0.11 port 57728 connected with 10.128.0.10 port 5001
      [ 10] local 10.128.0.11 port 57718 connected with 10.128.0.10 port 5001
      [  4] local 10.128.0.11 port 57706 connected with 10.128.0.10 port 5001
      [  5] local 10.128.0.11 port 57708 connected with 10.128.0.10 port 5001
      [  3] local 10.128.0.11 port 57704 connected with 10.128.0.10 port 5001
      [ 17] local 10.128.0.11 port 57732 connected with 10.128.0.10 port 5001
      [  7] local 10.128.0.11 port 57714 connected with 10.128.0.10 port 5001
      [ 18] local 10.128.0.11 port 57734 connected with 10.128.0.10 port 5001
      [ ID] Interval       Transfer     Bandwidth
      [ 12]  0.0-30.0 sec  7.63 GBytes  2.19 Gbits/sec
      [ 11]  0.0-30.0 sec  17.7 GBytes  5.07 Gbits/sec
      [ 16]  0.0-30.0 sec  9.15 GBytes  2.62 Gbits/sec
      [  6]  0.0-30.0 sec  43.8 GBytes  12.6 Gbits/sec
      [ 13]  0.0-30.0 sec  23.6 GBytes  6.76 Gbits/sec
      [  8]  0.0-30.0 sec  13.3 GBytes  3.80 Gbits/sec
      [  9]  0.0-30.0 sec  9.29 GBytes  2.66 Gbits/sec
      [ 14]  0.0-30.0 sec  19.6 GBytes  5.62 Gbits/sec
      [ 15]  0.0-30.0 sec  12.5 GBytes  3.58 Gbits/sec
      [ 10]  0.0-30.0 sec  11.1 GBytes  3.19 Gbits/sec
      [  4]  0.0-30.0 sec  19.0 GBytes  5.43 Gbits/sec
      [  5]  0.0-30.0 sec  7.32 GBytes  2.10 Gbits/sec
      [  3]  0.0-30.0 sec  8.78 GBytes  2.51 Gbits/sec
      [ 17]  0.0-30.0 sec  17.5 GBytes  5.02 Gbits/sec
      [  7]  0.0-30.0 sec  33.4 GBytes  9.57 Gbits/sec
      [ 18]  0.0-30.0 sec  7.64 GBytes  2.19 Gbits/sec
      [SUM]  0.0-30.0 sec   261 GBytes  74.9 Gbits/sec
      

ベンチマーク テスト後にリソースを削除する

イメージと追加の VM に対する課金が行われないように、ベンチマーク テスト中に作成したリソースを削除します。

gcloud

  1. ベンチマーク テスト用に作成したインスタンスを削除するには、gcloud compute instances delete コマンドを使用します。

    gcloud compute instances delete \
      VM_NAME_1 VM_NAME_2 \
       --project=PROJECT_ID \
       --zone=ZONE
    

    次のように置き換えます。

    • VM_NAME_1VM_NAME_2: 削除する 2 つの VM インスタンスの名前。
    • PROJECT_ID: プロジェクト名。
    • ZONE: VM のゾーン。両方の VM は同じゾーンに存在する必要があります。
  2. ベンチマーク テスト用に作成したネットワークを削除するには、gcloud compute networks delete コマンドを使用します。

    gcloud compute networks delete NETWORK_NAME  \
       --project=PROJECT_ID
    

    次のように置き換えます。

    • NETWORK_NAME: 削除するネットワークの名前。
    • PROJECT_ID: プロジェクト名。
  3. ベンチマーク テスト用に作成したイメージを削除するには、gcloud compute images delete コマンドを使用します。

     gcloud compute images delete IMAGE_NAME  \
        --project=PROJECT_ID
    

    次のように置き換えます。

    • IMAGE_NAME: 削除するイメージの名前。
    • PROJECT_ID: プロジェクト名。

次のステップ