クラウド事業部の原口です。
昨年のre:Inventで発表されプレビュー状態だったGraviton4ですが、
本日ついにGAとなりましたーー!!👏
amazon(AWS)とARMのファンとしては嬉しいですねー。まだ日本リージョンでは提供していないとしても。。。
- https://aws.amazon.com/jp/about-aws/whats-new/2024/07/amazon-ec2-r8g-instances-aws-graviton4-generally-available/
- https://aws.amazon.com/jp/blogs/aws/aws-graviton4-based-amazon-ec2-r8g-instances-best-price-performance-in-amazon-ec2/
Graviton4とは
GravitonとはARMベースで作られているAWSが独自に設計したプロセッサになります。
ARMベースのCPUの特徴として小型で省電力 (高い電力効率)である事です。従来よりスマートフォンなどのモバイル端末で多く利用されているものでしたが、2018年。AWSがARMアーキテクチャーの Graviton を発表しました。
Gravitonは多くのクラウドワークロードにおいて従来のx86のCPU(インテル等)に対して高いパフォーマンスを発揮しました。
- 省電力でサステナブル
- 従来のEC2インスタンスに比べて価格が安く
- 高いパフォーマンスを発揮する
まるで魔法のようなCPUとなったのです。
さて、そんなGravitonの第4世代であるGraviton4は以下のように書かれています。
- AWS Graviton3 ベースのインスタンスと比較して最大 30% 優れたパフォーマンス
- ウェブアプリケーションでは最大 30%、データベースでは最大 40%、大規模な Java アプリケーションでは最大 45% 高速
- r7gに比べて、より大きなインスタンスタイプを提供 (r8g.48xlarge)
いつものことですが、こうした公式発表は結局は「ワークロードによる」につきてしまうので早速検証していきたいと思います。
ベンチマークしたインスタンスタイプ一覧
今回のGraviton8は r系で追加されているので、インテルのr7i、Graviton3と比較していきたいと思います
Type | 料金(us-east-1) | vCPU | Memory | arch | 備考 |
r7i.large | USD 0.1323 | 2 | 16 GiB | x86 | Xeon第4世代CPU 東京リージョンなし |
r7i.xlarge | USD 0.2646 | 4 | 32 GiB | x86 | Xeon第4世代CPU 東京リージョンなし |
r7i.2xlarge | USD 0.5292 | 8 | 64 GiB | x86 | Xeon第4世代CPU 東京リージョンなし |
r7g.large | USD 0.1071 | 2 | 16 GiB | ARM | Graviton3 |
r7g.xlarge | USD 0.2142 | 4 | 32 GiB | ARM | Graviton3 |
r7g.2xlarge | USD 0.4284 | 8 | 64 GiB | ARM | Graviton3 |
r8g.large | USD 0.11782 | 2 | 16 GiB | ARM | Graviton4 |
r8g.xlarge | USD 0.23564 | 4 | 32 GiB | ARM | Graviton4 |
r8g.2xlarge | USD 0.47128 | 8 | 64 GiB | ARM | Graviton4 |
残念ながらr8gインスタンスは東京リージョンへは来ていないため、すべてus-east-1での価格としています。Graviton4はXeon第4世代CPUに比べて10%低額な価格設定となっています。反面、Graviton3に比べては10%高額な価格設定です。
まずは実際のワークロードでの測定
結局のところ実際のワークロードにて優れたパフォーマンスを発揮するかどうかは「そのワークロードによる」という感じというところがあります。
そのため弊社がEC2を使う際に多いWordPress + Apache + php8.2 + MariaDB10.5 の環境でインストール済みのWordPressのTOPページに対してAB(Apache Bench)してみました。
1# インストール
2sudo yum install -y php8.2
3sudo yum install -y php8.2-pdo php8.2-mysqlnd mariadb105-server httpd
4sudo mysqld_safe --skip-grant-tables --skip-networking &
5sudo curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
6sudo chmod +x wp-cli.phar
7sudo mv wp-cli.phar /usr/local/bin/wp
8sudo mysql -u root -e "create database wp_sample;"
9
10# wordpressインストール
11wp core download --locale=ja --path=/var/www/html --allow-root
12wp core config --dbname=wp_sample --dbuser=root --dbhost=localhost --dbprefix=wp_ --path=/var/www/html --allow-root
13wp core install --url=http://localhost/ --title=test --admin_user=admin --admin_password=admin1234 --admin_email=admin@example.com --path=/var/www/html --allow-root
14
15# ab実行
16ab -n 10000 -c 100 http://localhost/
インスタンスタイプ以外は以下の条件となっております。
1[AMI]
2ami-01450e8988a4e7f44 (Amazon Linux 2023 AMI 2023.3.20231218.0 x86_64 HVM kernel-6.1)
3ami-07832e309d3f756c8 (al2023-ami-2023.5.20240701.0-kernel-6.1-arm64)
4
5[PHP]
68.2
7
8[MariaDB]
910.5
以下が結果です。
実ワークロードに近いパフォーマンス評価では、同等の CPU を搭載する Intel 系のr7iインスタンスと比較して、AWS Graviton4 ベンチマーク性能は 67% 高速となっています!
また、AWS Graviton4 と AWS Graviton3 の 比較では、AWS Graviton4 の方が44% 高速になっていました。これは公式公表である「ウェブアプリケーションでは最大 30%高速」を超えていく結果になりました。(実際のワークロードに依る、がこんな結果になるなんて😄)
今回構築したLAMP 環境での各コンポーネント毎のパフォーマンスを確認したところ、AWS Graviton4ではPHPというよりは特にApache および MySQL のパフォーマンスが優れていることが確認できました。
これは AWS Graviton4 搭載インスタンスの活用領域として、Web サーバおよび RDS/Aurora 等での活用にかなりの期待が持てるということになります。
RDS/AuroraでのAWS Graviton4インスタンスの登場が期待されますね。
とはいえ!AWS Graviton4において過去のGravitonに比べるとx86インスタンスと比較した金額的な割引率は抑えられているという現実があります。
そこで、以下のようにUSD 1ベースでのコスパを計測してみました。
Apache Bench によるパフォーマンス測定結果をEC2インスタンスオンデマンド料金で割り、USD 1あたりの速度として、実ワークロードにおけるコストパフォーマンスを比較しています。
この結果、Intel 系 CPU 搭載インスタンスおよび過去世代の AWS Graviton 搭載インスタンスの中で、R8g インスタンスが最もコストパフォーマンスに優れているという結果となりました。
とにかく弊社のワークロードにおいて有用なことは間違い無いので、早く東京リージョンに来て欲しいですね。
phoronix-test-suite
phoronix-test-suite にて行なったベンチマークの結果を掲載します。
「openssl(sha256)」
「gcrypt」
「pef-bench(memcopy)」
「stress-ng(cpu stree)」
「phpbench」
「php zend-bench」
と6つのテストツールでのテストを試してみます。
インストールとベンチ実施手順は以下となります。
1# phoronix-test-suiteのインストール
2sudo yum install -y php8.2 perl
3sudo yum install -y php8.2-pdo php8.2-mysqlnd mariadb105-server httpd
4sudo yum install -y perl-IPC-Cmd expat-devel ss elfutils-libelf-devel python-devel elfutils-devel libunwind-devel
5sudo yum install -y java-21-amazon-corretto
6wget https://phoronix-test-suite.com/releases/phoronix-test-suite-10.8.4.tar.gz
7tar zxvfpa phoronix-test-suite-10.8.4.tar.gz
8cd phoronix-test-suite
9sudo ./install-sh
10
11# ベンチマークの実行
12phoronix-test-suite benchmark openssl gcrypt stress-ng phpbench java-jmh perf-bench php
openssl(sha256)
openssl組み込みのopensslspeedを使ったベンチマークで、SHA256での暗号化スピードのベンチマークです。
順当に進化しておりAWS Graviton4が最高性能を出していますね。
opensslの暗号化という領域についてはAWS Gravitonは総じて性能が良いです。
gcrypt
GnuPGプロジェクトの一部として開発された汎用暗号ライブラリであるLibgcryptにて、暗号化/マック/ハッシュ化を50回繰り返すのにかかる時間を測定するベンチマークです。
ですので、かかった時間が少ないほど高性能という事になります。
こちらのベンチはシングルコアに対するものなので同インスタンスファミリーにおけるスペックによる差はありません。
AWS Graviton4においてはAWS Graviton3に比べて明確な性能向上は見られますが、結果はR7iのスペックが圧倒!ハッシュ化のように乱数生成によるCPU負荷については非常に得意なようです。逆にGravitonについては苦手な領域なのかな、といった感じですね。
perf-bench(memcpy)
perf-benchと呼ばれるベンチマークを使ったメモリへのデータコピー速度のベンチマーク結果です。
こちらのベンチはシングルコアに対するものなので同インスタンスファミリーにおけるスペックによる差はありません。。。と思うのですがAWS Graviton4においてはlargeだけが少し性能が見劣りしているように見えますね。
とはいえこのr8g.largeにおいてもベンチマーク結果を共有するサイト openbenchmarking.org の結果を確認するところでは、35GB/sec の結果は全体として非常に高いパフォーマンスになっており十分な性能であると言えるものである。
r8g.large以外は、AWS Graviton3に対して優位な結果を出しており、メモリの取り扱いが非常に進化したCPUの印象です。
stress-ng(CPU)
stress-ngはcpuに負荷をかけさせる事ができるツールですが、「1秒あたりの偽オペレーション」のスループットを計測する事ができ、そちらの値となります。stress-ngのドキュメントには「あまりベンチマークには使わないで」とあったので微妙かもしれませんがベンチ結果は安定して出ています。
AWS Graviton4は3に比べて 21% ほどの性能向上が見られるものの、結果はR7iのスペックが圧倒!そしてAWS Gravitonについてはかなり苦手な領域なのかな、といった感じです。
https://manpages.ubuntu.com/manpages/xenial/man1/stress-ng.1.html
manページにもあるように、パフォーマンス測定というよりはストレステスト(例えばハードウェア不具合などの検出)という感じのテストという意味合いが強く、CPU性能を測るには別の方法の方が適しているということですので参考程度ではありますね。
phpbench
PHPBenchは多数の単純なテストを実行し、総合的なスコアとして性能を算出するPHPのベンチマークです。こちらのベンチはシングルコアに対するものなので同インスタンスファミリーにおけるスペックによる差はありません。
AWS Graviton4においては過去世代から順当に進化が見られ、R7iインスタンスとの性能差も明確に縮まってきていることがわかりますね。
php(zend bench)
PHPマイクロベンチマークであるZendBenchについても試してみました。
こちらのベンチはシングルコアに対するものなので同インスタンスファミリーにおけるスペックによる差はありません。かかった時間が少ないほど高性能というベンチマークです。
こちらもAWS Graviton4においては過去世代から順当に進化が見られ、R7iインスタンスとの性能差も明確に縮まってきていることがわかりますね。
java-jmh (Amazon Corretto 21)
javaのJMHベンチマークです。SDKはAmazon Corretto 21でテストしました。
この結果はなかなか興味深いですね。
R7iにおいてはCorretto21ではかなり良い結果となっていたのですが、AWS Graviton3がかなりよい結果となっています。そんな高パフォーマンスの結果をAWS Graviton4は上回る性能を出すという結果に。
Javaアプリケーションへの最適化はかなり頑張っているように思います。
まとめ
AWS Graviton4 ベンチマークの結果、AWS Graviton4 は(一部ベンチマーク結果を除き)AWS Graviton3 に比べ約 10 〜 40% 程度パフォーマンスが向上し、過去 Graviton 世代と同様の傾向で順当に進化していることがわかりました!
ざっくり言ってしまうと、今までの傾向通り「新世代のインスタンスタイプを使っておけば間違いなし」って事ですね。
ベンチマーク結果の中で特筆すべきは、Javaに対しては常に最高のパフォーマンスが計測されている事。また、実ワークロードを想定した、LAMP 環境におけるWordPress に対する負荷試験の結果で、1USD あたりのパフォーマンスは Intel 搭載インスタンスに比べて優れているだけでなく、AWS Graviton3 インスタンスに比べて 30% 以上向上していた事です。
LAMP 環境では PHP のパフォーマンス以上に、Apache や MySQL の性能向上が顕著に見られたことから、Web サーバとしてのコストパフォーマンスはもちろんとして、RDS/Aurora が AWS Graviton4 対応した際のコストパフォーマンスをどうしても期待してしまいますね。
うーん楽しみ!早く日本に来てください!