👻

Azure VM ネットワーク性能測定

2023/03/29に公開

はじめに

Azure VMをいくつかの配置パターンで配置し、それぞれのVM間のネットワーク性能を測定してみた。
今回は測定ツールとしてqperfを使用。

【測定環境】(サーバー/クライアント双方)
VMイメージ:Red Hat Enterprise Linux 8.6 (LVM) - x64 Gen2
VMサイズ:Standard_D2s_v5
OSディスク:Premium SSD
ネットワーク:高速ネットワークを有効

VM作成後、測定ツールのqperfのインストールとfirewalldを停止。

測定コマンドは以下の通り。

# スループット
$ qperf -vs -t 10 --use_bits_per_sec "Server_VM_IP" tcp_bw
# 遅延
$ qperf -vs -t 10 "Server_VM_IP" tcp_lat

同一AZ内で測定

東日本リージョンの同一可用性ゾーンに作成したVM間で測定。

  • スループット(Gbps)
1回目 2回目 3回目 平均
12.3 12.0 12.1 12.133
  • 遅延(us)
1回目 2回目 3回目 平均
22.2 24.8 23.5 23.5

同一リージョンの別AZ間で測定

東日本リージョンの別可用性ゾーンに作成したVM間で測定。

AZ1 - AZ2

  • スループット(Gbps)
1回目 2回目 3回目 平均
12.0 12.2 12.2 12.133
  • 遅延(us)
1回目 2回目 3回目 平均
318 316 324 319.33

AZ1 - AZ3

  • スループット(Gbps)
1回目 2回目 3回目 平均
8.87 9.18 9.24 9.09
  • 遅延(us)
1回目 2回目 3回目 平均
519 530 528 525.66

AZ2 - AZ3

  • スループット(Gbps)
1回目 2回目 3回目 平均
9.8 10.0 11.1 10.3
  • 遅延(us)
1回目 2回目 3回目 平均
426 459 426 437

近接配置グループのVM間で測定

近接配置グループを使用して作成したVM間で測定。

  • スループット(Gbps)
1回目 2回目 3回目 平均
12.3 12.3 12.3 12.3
  • 遅延(us)
1回目 2回目 3回目 平均
26.5 25.2 24.8 25.5

リージョン間で測定

東日本リージョンと西日本リージョンに作成したVM間で測定。
VnetピアリングしプライベートIPで測定。
他の表と単位が違うので注意。

  • スループット(Mbps)
1回目 2回目 3回目 平均
942 974 972 962.66
  • 遅延(ms)
1回目 2回目 3回目 平均
4.23 4.07 3.94 4.08

まとめ、考察

条件によるのかもしれないが、近接配置グループを使用した場合と
単に同一AZにVMを作成した場合でほとんど差はみられなかった。

AZ間については、「ラウンドトリップ待ち時間が 2 ミリ秒未満」という可用性ゾーンの要件を
満たしていることは確認できた。ただし、ゾーンの選び方によって0.2ms程度の差異が出るという点はゾーンを選ぶうえで意識しておくべきかもしれない。

リージョン間の結果については、東西間でデータ転送することは多いと思うので、
その参考情報として取得した。
結果は記載していないが、東日本リージョン側のAZを変えて試したが、
試行回数による誤差の範囲内となったため、割愛している。

追記:可用性ゾーンのマッピング

REST APIを使用して可用性ゾーンの論理マッピングを確認可能。
今回検証で使用したサブスクリプションは偶然ではあるが番号が一致していた。
※サブスクリプションIDは0に置換。

Azure REST API | Subscriptions - Check Zone Peers

{
  "subscriptionId": "00000000-0000-0000-0000-00000000000000",
  "location": "japaneast",
  "availabilityZonePeers": [
    {
      "availabilityZone": "1",
      "peers": [
        {
          "subscriptionId": "00000000-0000-0000-0000-00000000000000",
          "availabilityZone": "1"
        }
      ]
    },
    {
      "availabilityZone": "2",
      "peers": [
        {
          "subscriptionId": "00000000-0000-0000-0000-00000000000000",
          "availabilityZone": "2"
        }
      ]
    },
    {
      "availabilityZone": "3",
      "peers": [
        {
          "subscriptionId": "00000000-0000-0000-0000-00000000000000",
          "availabilityZone": "3"
        }
      ]
    }
  ]
}

Discussion