AWS ECS Fargateについて、CPU(Linux/ARM64とLinux/X86_64)ごとに、1分間にいくつまで数えられるか調べてみました。
AWSの記事に以下の記載がありますが、実際にどれくらい性能が違うの?という点について調査するために、Fargateにカウントアップさせて、1分間にいくつまで数えられるかやってみました!!
AWS Graviton2 プロセッサは、64 ビットの Arm Neoverse コアを使用してアマゾンウェブサービスがカスタムビルドしたもので、Graviton2 を搭載した Fargate は、同等のインテル x86 ベースの Fargate に比べて、最大 40% の料金性能向上と 20% の低コストを実現し、
上記のAWSの記載をまとめると以下のようになると思います。
Linux/ARM64(Graviton2)の方が、最大 40% の料金性能向上
Linux/ARM64(Graviton2)の方が、20% の低コスト
→Linux/ARM64(Graviton2)の方が安くて早い
では、実際に、Linux/ARM64(Graviton2)とLinux/X86_64(インテルCPU)の比較検証をしていきます。
検証ではカウントアップするだけという簡単なプログラムを使用していきます!
検証条件
まずは、検証条件についてです。
プログラム言語
使用するプログラム言語:python
ECS Fargate タスク性能
CPU:1vCPU
メモリ:2 GB
使用したプログラム
import time
import timeout_decorator
# 60秒でタイムアウト
@timeout_decorator.timeout(60)
def test():
cnt = 0
while True: # タイムアウトするまで、ひたすらカウントアップ
if cnt % 10000 == 0:
print(cnt)
cnt += 1
if __name__ == '__main__':
try:
test()
except:
print ("test timed out ")
使用したDockerファイル
FROM python:3.12
RUN pip install timeout-decorator
# 検証用プログラムをコピー
COPY . .
# コンテナ起動時に検証用プログラムを実行
CMD ["python", "./test.py"]
検証結果
Linux/ARM64(Graviton2)
<検証方法>
- ビルドし、ECRにイメージをpush
- ECSタスク定義の「オペレーティングシステム/アーキテクチャ」でLinux/ARM64を指定
- タスクを起動
<検証結果>
カウントアップできた数:702,420,000
Linux/X86_64(インテルCPU)
<検証方法>
- ビルドし、ECRにイメージをpush
- ECSタスク定義の「オペレーティングシステム/アーキテクチャ」でLinux/X86_64を指定
- タスクを起動
<検証結果>
カウントアップできた数:558,450,000
検証結果比較
- Linux/ARM64(Graviton2)
- カウントアップできた数:702,420,000
- Linux/X86_64(インテルCPU)
- カウントアップできた数:558,450,000
- Linux/ARM64(Graviton2)の方が、1.4億くらい多くカウントできました
- Linux/ARM64(Graviton2)の方が、26%程度性能が良い結果です!!
まとめ
以下のAWS記事情報を前提に検証しました。今回やってみた簡単なカウントアップの検証では、性能はLinux/ARM64(Graviton2)の方が、26%程度高い結果となりました。コストが20%程度低いことから、料金性能は以下の「最大 40% の料金性能向上」とほぼ一致と思いますー
Linux/ARM64(Graviton2)の方が、最大 40% の料金性能向上
Linux/ARM64(Graviton2)の方が、20% の低コスト
→Linux/ARM64(Graviton2)の方が安くて早い