GCPのインスタンス間のネットワーク速度を計測するために、PerfkitBenchmarkerを使用する。PerfKitbenchmarkerにはiperfなどのベンチマークツールが含まれており、各クラウドに対応しているので、クラウド同士の比較なども簡単にできる。
https://github.com/GoogleCloudPlatform/PerfKitBenchmarker
クラウド上でプロビジョニングするモードでは以下のコマンドを実行するだけで、ノードが2台とネットワークが作成され、ベンチマークを行なった後、ノードが削除されるので、クラウドの性能を計測するのに便利である。
また既に立ち上げているノードを利用することも当然できる。
今回は実行環境としてCloudShellを使用し、プロビジョニングモードでPerfKitBenchmarkerを実行。
git clone https://github.com/GoogleCloudPlatform/PerfKitBenchmarker.git
cd PerfKitBenchmarker
pip install -r requirements.txt -t lib
export PYTHONPATH=~/PerfKitBenchmarker/lib:$PYTHONPATH
n1-standard-8:thread_count:1, us-central1-aで計測
$ ./pkb.py --cloud=GCP --machine_type=n1-standard-8 --benchmarks=iperf --ip_addresses=INTERNAL --zones=asia-east1-c --iperf_sending_thread_count=8
-------------------------PerfKitBenchmarker Results Summary-------------------------
IPERF:
receiving_machine_type="n1-standard-8" receiving_zone="us-central1-a" runtime_in_seconds="60" sending_machine_type="n1-standard-8" sending_thread_count="1" sending_zone="us-central1-a"
Throughput 1204.000000 Mbits/sec (ip_type="external")
Throughput 8565.000000 Mbits/sec (ip_type="internal")
Throughput 1672.000000 Mbits/sec (ip_type="external")
Throughput 8522.000000 Mbits/sec (ip_type="internal")
End to End Runtime 747.215729 seconds
-------------------------
n1-standard-8:thread_count:8, us-central1-aで計測
-------------------------PerfKitBenchmarker Results Summary-------------------------
IPERF:
ip_type="internal" receiving_machine_type="n1-standard-8" receiving_zone="us-central1-a" runtime_in_seconds="60" sending_machine_type="n1-standard-8" sending_thread_count="8" sending_zone="us-central1-a"
Throughput 12139.000000 Mbits/sec
Throughput 13228.000000 Mbits/sec
End to End Runtime 583.234252 seconds
-------------------------
n1-standard-8:thread_count:8, asia-east1-cで計測
1coreあたり2Gbps、1node辺りの最大スループットは16Gbpsなので、理論値の98.6%でている。
-------------------------PerfKitBenchmarker Results Summary-------------------------
IPERF:
ip_type="internal" receiving_machine_type="n1-standard-8" receiving_zone="asia-east1-c" runtime_in_seconds="60" sending_machine_type="n1-standard-8" sending_thread_count="8" sending_zone="asia-east1-c"
Throughput 15200.000000 Mbits/sec
Throughput 15785.000000 Mbits/sec
End to End Runtime 531.351110 seconds
-------------------------