こんにちは佐々木です。 AWSのEC2のインスタンスタイプを見ていたついでに、表記方法をまとめてみました。アルファベットと数字の組み合わせでビビっている人の救いになれば幸いです。
インスタイプの表記
まずインスタンスタイプの表記の構造についてです。
インスタンスタイプは、インスタンスファミリー、世代、属性とサイズの組み合わせで一意に表現されます。
インスタンスの分類とインスタンスファミリー
インスタンスの種類は用途に応じて分類されます。インスタンス選びの際は、まずは用途に応じたカテゴリをみるとよいです。それも解らないよという方は、まずは一般用途向けをみると良いです。
- 一般用途向け
- コンピューティング最適化
- メモリ最適化
- 高速コンピューティング
- ストレージ最適化
- HPC 最適化
分類された上で、更に細分化されています。これがインスタンスファミリーです。例えば、一般用途向けでは、次のようなインスタンスファミリーがあります。
インスタンスファミリー | 概要 |
---|---|
m | 一番オーソドックスな構成のファミリー。 最初のEC2インスタンスは、M1.smallだった |
t | バースト可能なCPU。。 もともとTiny(小さな)という意味でパワーとコストを抑えたファミリー |
a | ArmベースのAWS Graviton プロセッサを搭載 |
mac | Macが利用できる唯一のインスタンス |
一般用途向けだけでも、4種類あります。ここで検討すべきは、基本的にはmとtです。EC2インスタンスは、m1.smallから始まっています。つまり一番ベーシックな型です。これに対して、CPUに多くのリソースを振っているのが、コンピューティング最適化で具体的なインスタンスファミリーとしては「c」などがあります。また、メモリを多く積んでいるのがメモリ最適化で、「r」など幾つかの種類があります。なので、ベーシックなのがmと覚えておきましょう。
次に「t」タイプです。これは、開発環境用途なのでできるだけリソースは小さくてもよいので、できるだけコストをおさえて使いたいという用途に応じる形ででてきたのだと思います。その際に、一定期間だけCPUがバーストするという特徴を持たせたので、全インスタンスファミリーのなかで、かなり特異な位置づけになりました。使いこなすと開発環境だけに留めるにはもったいない特性をもっています。これについては、どこか別の機会で話したいですね。
世代
インスタンスファミリーの後に続く数字が、世代です。たとえばm7g.largeの場合、インスタンスファミリー「m」の7世代目のインスタンスを意味します。また新しいインスタンスファミリーが登場した場合は、1から始まります。9の次がそのまま10になるか、違う表記になるか、密かにドキドキしています。
属性の表記
最近のインスタンスでは、ほぼ必ずついているのが属性です。代表的な属性は以下のとおりです。
カテゴリ | 表記 | 概要 |
---|---|---|
プロセッサー種別 | i | インテル プロセサー |
プロセッサー種別 | g | Graviton プロセサー |
プロセッサー種別 | a | AMD プロセサー |
ネットワーク拡張 | n | ネットワーク帯域幅が大きい |
実は、これ以外にもいくつかの属性があります。ただ命名規則に一貫性を維持しきれていないケースも見受けられます。例えば、R7izなどはizは第 4 世代のインテル Xeon スケーラブルプロセッサを表しているとおもわれます。一方で、比較的早い段階でXeonスケーラブルプロセッサを搭載していたX1eなどはiが付かずにeのみで表記。次の世代では、X2iednなどieで表現するなどしています。取りうるオプションが増えているなかで、この対応は仕方がないと思います。そのため属性については見れば解るというものではなく、属性により一意性をつけているもの程度で捉えておけばよいと思います。
インスタンスサイズ
インスタンスサイズは、ドットの後にでてくるサイズ表記の英単語+倍率で表されます。
インスタンスサイズ | 概要 |
---|---|
nano | 最小のインスタンスサイズ。tファミリーにのみ存在 |
micro | tファミリーにのみ存在 |
small | 最近はtファミリーにのみ存在 |
medium | 最近はmediumからスタートすることが増えてきた |
large | この辺りが標準的に利用されることが多い |
xlarge | largeの2倍がxlarge |
2xlarge | 以降、xlargeに対して何倍かを数字で表現 |
metal | ベアメタルインスタンス。ホストを専有 |
ここで重要なのが、同一インスタンスファミリー内の同一世代のみで比較できるという点です。m7ファミリーとm6ファミリーの比較を例に考えていきましょう。
サイズ | m7gスペック | m7g費用 | m6gスペック | m6g費用 |
---|---|---|---|---|
medium | 1vCPU 4GiBメモリ | 0.0408 USD/時 | 1vCPU 4GiBメモリ | 0.0385 USD/時 |
large | 2vCPU 8GiBメモリ | 0.0816 USD/時 | 2vCPU 8GiBメモリ | 0.077 USD/時 |
xlarge | 4vCPU 16GiBメモリ | 0.1632 USD/時 | 4vCPU 16GiBメモリ | 0.154 USD/時 |
2xlarge | 8vCPU 32GiBメモリ | 0.3264 USD/時 | 8vCPU 32GiBメモリ | 0.308 USD/時 |
※バージニア北部リージョンのオンデマンド利用/Linuxでの価格例
表を見ていただくとわかるように、サイズがあがると、性能・費用とも倍々になっていきます。これは、インスタンス共通のルールです。その上で、m7gとm6gを較べてみて、vCPUのサイズが同じだから性能も同じとはならないことに注意してください。同一世代で同一CPUの場合は性能も同じになることもありますが、今回のm7gとm6gの比較ではベースとなるCPUがGraviton3とGraviton2と違っています。そのため、搭載しているvCPUの数が同じでも同一の性能にはなりません。
まとめ
インスタンスタイプの表記は、読み方がわかればシンプルです。今回調査した目的である属性の表記方法については、いろいろ調べてみたもののやっぱり規則性が解らないところが残りました。世代によって使われ方が変わっているものもあるので、あまり気にしないでもいいんじゃないかと思います。基本的な読み方をマスターした上で、属性については時代の変化を感じる程度でお気軽に捉えると良いと思います。