A1インスタンスのネットワーク性能をS3転送で測定してみた

AWSチームのすずきです。

ARM CPUを搭載した「A1」ファミリーのネットワーク性能を確認する為、 S3へのアップロード時間を測定、IGWを経由したインターネット性能を計測する機会がありましたので、 紹介させていただきます。

構成図

環境

インスタンス

ARM CPUを搭載した「A1」(a1.medium,a1.large,a1.xlarge) と、 x86 CPU の現行インスタンスとして、「t3.small」「m5.large」、 旧世代のインスタンスとして「t2.small」「m3.small」を比較対象として用意しました。

OS

Amazon Linux2 東京リージョン提供のAMIを利用しました。

  • amzn2-ami-hvm-2.0.20190823.1-arm64-gp2 (ami-024b748b625ec022a)
  • amzn2-ami-hvm-2.0.20190823.1-x86_64-gp2 (ami-0ff21806645c5e492)

S3

4リージョンにテスト用のS3バケットを用意しました。

PREFIX="test-s3-123456789012"
for REGION in ap-northeast-1 ap-northeast-2 us-east-1 us-west-2 ; do
  time aws s3 mb "s3://${PREFIX}-${REGION}"
done

検証

テストファイル作成

「dd」を利用して、S3転送に利用する4GiBのファイルを用意しました。

time dd bs=1M count=4096 if=/dev/urandom of=/tmp/dummy

S3アップロード所要時間測定

「awscli」を利用して4GiBのファイルをS3へのマルチロードアップロードを実施。所要時間より転送レートを求めました。

PREFIX="test-s3-123456789012"
for REGION in ap-northeast-1 ap-northeast-2 us-east-1 us-west-2 ; do
  time aws s3 sync /tmp/dummy "s3://${PREFIX}-${REGION}/"
done

S3のマルチパートアップロードに関係する最大同時リクエスト数、max_concurrent_requests は、デフォルト(10)としています

AWS CLI S3 Configurationを試したら想定以上にaws s3 syncが速くなった話

結果

インスタンス、リージョン別のS3転送アップロード帯域(MiB/s)

インスタンス 東京 ソウル バージニア オレゴン 4リージョンの平均
a1.medium 39.8 33.3 27.9 38.8 34.9 MiB/s
a1.large 53.5 55.0 42.9 52.4 50.9 MiB/s
a1.xlarge 63.2 66.0 49.1 64.1 60.6 MiB/s
m5.large 90.1 89.7 43.4 68.1 72.8 MiB/s
t3.small 87.3 85.1 53.8 64.0 72.5 MiB/s
t2.small 18.2 17.5 16.8 16.9 17.4 MiB/s
m3.medium 25.1 13.1 17.7 18.2 18.5 MiB/s

比較

リソーススペックと、オンデマンド単価(1時間Unix)より、A1インスタンスの比較を試みました。

M5

インスタンス メモリ(GiB) vCPU I/O オンデマンド単価(USD) 平均帯域(MB/s) 1USDあたり帯域(MiB/s)
a1.medium 2 1 Up to 10 Gbps 0.0321 34.9 1088.6
a1.large 4 2 Up to 10 Gbps 0.0642 50.9 793.5
a1.xlarge 8 4 Up to 10 Gbps 0.1284 60.6 471.9
m5.large 8 2 Up to 10 Gbps 0.124 72.8 587.4

「A1」インスタンス、メモリ、CPUを必要しない場合には、1USDあたりの帯域を 「M5」より費用帯効果よく利用できる可能性が確認できました。

T3

インスタンス メモリ(GiB) vCPU I/O オンデマンド単価(USD) 平均帯域(MB/s) 1USDあたり帯域(MiB/s)
a1.medium 2 1 Up to 10 Gbps 0.0321 34.9 1088.6
t3.small 2 2 Low to Moderate 0.0272 72.5 2667.0

a1.medium は、t3.small のおよそ1/2の性能でした。

平均負荷が常時高く「T3」のバースト性能に伴うvCPU課金が発生する場合、a1.medium が費用帯効果よく利用できる可能性があります。

  • t3.smallのvCPU(バースト)課金を含むオンデマンド費比較
CPU平均使用率 t3.small vCPU課金
〜20% 0.0274 0
25% 0.0324 0.005
30% 0.0374 0.01
50% 0.0574 0.03
70% 0.0774 0.05
100% 0.1074 0.08

T2,M3

インスタンス メモリ(GiB) vCPU I/O オンデマンド単価(USD) 平均帯域(MB/s) 1USDあたり帯域(MiB/s)
a1.medium 2 1 Up to 10 Gbps 0.0321 34.9 1088.6
t2.small 2 1 Low to Moderate 0.0304 17.4 571.2
m3.medium 3.75 1 Low to Moderate 0.096 18.5 193.1

a1.medium、旧世代の「T2」「M3」と比較して、2倍以上の性能を費用帯効果よく利用できる可能性が確認できました。

まとめ

ARM CPUを搭載した「A1」ファミリーのインスタンス、安定した性能をコストパフォーマンスよく利用できる可能性が確認できました。 特定CPUに依存しないサーバをEC2で構築する場合には、「A1」も候補として検討頂ければと思います。