Graviton4リリース！EC2インスタンスのコスト削減でよく出るワード「Graviton」とは？

## はじめに

AWS re:Invent 2023にて、[Graviton4プロセッサを搭載した新たなEC2インスタンスタイプ (R8g) ](https://aws.amazon.com/jp/blogs/aws/join-the-preview-for-new-memory-optimized-aws-graviton4-powered-amazon-ec2-instances-r8g/)が発表されました。

AWSコスト削減において、Gravitonという単語はしばしば出るものの、実態としてどういうものか知らない方も多いのではないでしょうか。アドベントカレンダー1日目は、そんなGravitonと最新のGraviton4＆R8gについて紹介します。

## １．Graviton、Graviton4とは？

### Gravitonとは

[Graviton](https://aws.amazon.com/jp/ec2/graviton/)とは、AWSが独自開発したCPUのことです。

<img width="400" name="aaa" alt="graviton" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/534839/895228da-9ee7-519a-dd47-07445dba7e5c.jpeg">　　
＜ 写真：AWS re:Invent 2023で展示されていたGraviton ＞

GravitonはARMv8ベースであり、[Graviton2はARMv8.2-a、Graviton3はARMv8.4-aアーキテクチャを採用](https://github.com/aws/aws-graviton-getting-started/tree/main#building-for-graviton2-graviton3-and-graviton3e)しております。
そのためarm64で動作するシステムはGravitonで動作し、ARMv8ベースで動かないシステムをGraviton上で動かすためには、ARM対応が必要になります。

:::note info
ARMv8、arm64について

CPUには主に二つのアーキテクチャ思想があります。

|CPUのアーキテクチャ思想  |アーキテクチャ思想の特徴  |CPUの実装例  |
|---|---|---|
|CISC(Complex Instruction Set Computer) |一つの命令で複雑な処理を実施可能  |x86、x86-64  |
|[RISC(Reduced Instruction Set Computer)](https://www.arm.com/glossary/risc)|単純な命令を並列に高速で実施可能|arm、arm64 |

2011年にArm社からRISCベースのARMv8アーキテクチャが発表され、これによりCPUが64bit対応できるようになりました。このARMv8アーキテクチャを採用しているCPUがarm64です。
:::

Graviton上でシステムを動かすための情報は、下記公式情報をぜひご覧ください。

- [Gravitonスタートガイド](https://aws.amazon.com/jp/ec2/graviton/getting-started/)
- [Graviton利用にあたってのテクニカルガイド](https://github.com/aws/aws-graviton-getting-started/tree/main#readme)
- [アプリケーション観点でのAWS Graviton へのワークロード移⾏](https://pages.awscloud.com/rs/112-TZM-766/images/2_App_perspective_graviton_migration.pdf)

なお、GravitonはEC2上だけでなく、RDSやLambdaといった[AWSの各種マネージドサービスでも順次利用できるようになっています。](https://github.com/aws/aws-graviton-getting-started/blob/main/managed_services.md)マネージドサービスに関しては、arm64に準拠しているかどうかをユーザが確認する必要はありません。

:::note warn
Graviton4は2023/11/29にpreview版が発表されたばかりなので、2023/12/1時点ではEC2のみで利用可能です。
:::

### Graviton4とは

Graviton4とは、[2023/11/29に発表された最新バージョンのGraviton](https://press.aboutamazon.com/2023/11/aws-unveils-next-generation-aws-designed-chips)です。

|Graviton4の特徴  |補足  |【参考】Graviton3、2の特徴  |
|---|---|---|
|96個の[Neoverse V2コア](https://developer.arm.com/Processors/Neoverse%20V2)を搭載|Neoverse V2はArm社の開発している最新の高性能なコアです。またコア数が96個とかなり多く、マルチタスクに優れております。 |Graviton3、2共に64個の[Neoverse V1コア](https://developer.arm.com/Processors/Neoverse%20V1)を搭載|
|1コアあたり2MBのL2キャッシュを搭載|キャッシュは一時的に情報を保存する高速メモリです。つまり、これが大きいため多くの情報を高速に処理できます。|Graviton3、2共に1コアあたり1MBのL2キャッシュを搭載|
|12個ものDDR5-5600メモリチャネルが連携|DDR5-5600はメモリチップ規格のひとつです。この規格に準拠しているメモリチップは、1秒あたり56億回（5600MT/s）のデータ伝送が可能です。|Graviton3は8個のDDR5、Graviton2は8個のDDR4|

簡単に表すと、Graviton4のスペックは下記の通りです。

- Graviton3の1.3倍のコンピューティング性能
- Graviton3の1.5倍のコア数
- Graviton3の1.75倍のメモリ帯域
- 全物理ハードウェアインターフェースの暗号化によるセキュリティ水準向上

公式見解では、[Graviton4はGraviton3よりもデータベースは40%はやく、Webアプリケーションは30%はやく、巨大なJavaアプリケーションは45%はやく処理できます。](https://aws.amazon.com/jp/blogs/aws/join-the-preview-for-new-memory-optimized-aws-graviton4-powered-amazon-ec2-instances-r8g/)

## ２．GravitonベースのインスタンスとR8gインスタンスについて

### Gravitonベースのインスタンスとは 

R8gインスタンスの前にGravitonベースのインスタンスについて記載します。Gravitonベースのインスタンスは下記の通り様々あり、これらは総じて他の類似インスタンスファミリーよりもコストが削減可能です。

|カテゴリ  |Gravitonベースのインスタンスファミリー  |
|---|---|
|一般用途向け |M7g、M4gd、T4g |
|コンピューティング最適化|C7g、C7gd、C7gn、C6g、C6gd、C6gn |
|メモリ最適化|R7g、R7gd、X2gd |
|ストレージ最適化|Im4gn、Is4gen |
|高速コンピューティング|G5g |
 
またAWS公式によると、AWS Gravitonベースのインスタンスは他の類似EC2インスタンスよりも、エネルギー使用量が最小で40%となります。
そのため、AWS独自でつくっているCPUを活用し、なおかつエネルギー使用量が少ないためにGravitonベースのインスタンスはコスト効率がよくなっていると考えられます。

### R8gインスタンスとは

R8gインスタンスとは、Graviton4が利用できるインスタンスタイプです。
インスタンスファミリーからわかる通り、メモリ最適化されたインスタンスタイプで、データベースやインメモリキャッシュ、大規模データ分析といったメモリを大量に使用するユースケースに適しています。

2023/12/1時点では、まだ下記画像の通り、リリースするインスタンスタイプのインスタンスサイズやvCPU、メモリといった詳細情報はまだ外部公開されておりません。ただ、少なくとも「R7g（Graviton3搭載インスタンス）よりもvCPUとメモリが3倍」という記載から、最大サイズはかなり大きなインスタンスになると想定されます。
（preview版においては、mediumから48xlargeまで存在しております。）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/534839/6ed7825b-3f32-c9d6-fb27-27aa5542714c.png)  
＜ 画像：https://aws.amazon.com/ec2/instance-types/?nc1=h_ls ＞

:::note info
2023/12/1時点ではpreview版のため、利用するには下記URLから申請が必要です。
- https://pages.awscloud.com/EC2-R8g-Preview.html
:::

## まとめ

R8gインスタンスは大規模データを取り扱う際に使うインスタンスタイプです。
「Graviton4をこのインスタンスタイプとともに発表した」のは、AWSがGraviton4の性能に大きな自信があるからではないでしょうか。

今後、R8g以外のインスタンスタイプもGraviton4バージョンが出たり、マネージドサービスもゆくゆくGraviton4対応をしていくと思われますので、とても楽しみです。個人的には、AuroraでGraviton4が使えるのを楽しみにしています。