KNOWLEDGE - COLUMN ナレッジ - コラム

どのインスタンスを選べばいいの?EC2性能比較!

先端技術部
エバンジェリスト 松岡 政之 matsuoka2_274x380

こんにちは。先端技術部エバンジェリストの松岡です。
 
最近のx86 CPUの動向ですが、前々回のコラムで記載したbig.LITTLE構成の第12世代Coreプロセッサ(Alder Lake-S)が11月の頭にIntelから無事発売されました。
一方AMDはデスクトップ向けではあまり動きはありませんでしたが、前回のコラムで記載した最大768MBものL3キャッシュを搭載した、第3世代EPYC(Milan)を拡張したMilan-Xが正式発表されました。こちらは発売されればクラウド等にも採用されていくと思いますので、今後登場するインスタンスの性能が楽しみですね。

1.はじめに

では早速本題に入ります。
皆様EC2インスタンスタイプを選択する際、どれを選べばいいのか悩んだことはないでしょうか?中には同じコア数、同じメモリ搭載量のものもあり何が違うのかわかりづらいといった方もいらっしゃるかと思います。
インスタンスタイプのページ(※外部サイト:Amazon EC2 インスタンスタイプ)を見れば各インスタンスの概要は記載されていますが、具体的な傾向をつかむには実際に触ってみるのが一番です。
というわけで、今回はいくつかのインスタンスのベンチマーク結果を比較してみたいと思います。

2.前提

2.1 対象インスタンス

あまり高額なインスタンスで試すのはお財布がつらいので東京リージョンでの単価が0.2ドル前後の下表の17パターンのインスタンスについて比較します。実測時のCPUに関しては実際にインスタンスにログインしてから搭載CPUを確認したものになります。

No. インスタンスタイプ vCPU メモリ
(GB)
オンデマンドの時間単価(ドル) 実測時のCPU
1 c4.large 2 3.75 0.218 Intel(R) Xeon(R) CPU E5-2666 v3 @ 2.90GHz
2 c5.large 2 4 0.199 Intel(R) Xeon(R) Platinum 8124M CPU @ 3.00GHz
3 c5a.large 2 4 0.188 AMD EPYC 7R32   2.80 GHz
4 i3.large 2 15.25 0.275 Intel(R) Xeon(R) CPU E5-2686 v4 @ 2.30GHz
5 m4.large 2 8 0.221 Intel(R) Xeon(R) CPU E5-2686 v4 @ 2.30GHz
6 m5.large 2 8 0.216 Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz
7 m5a.large 2 8 0.204 AMD EPYC 7571   2.20 GHz
8 m6i.large 2 8 0.216 Intel(R) Xeon(R) Platinum 8375C CPU @ 2.90GHz
9 r4.large 2 15.25 0.252 Intel(R) Xeon(R) CPU E5-2686 v4 @ 2.30GHz
10 r5.large 2 16 0.244 Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz
11 r5a.large 2 16 0.229 AMD EPYC 7571   2.20 GHz
12 t2.large 2 8 0.1496 Intel(R) Xeon(R) CPU E5-2686 v4 @ 2.30GHz
13 t2.xlarge 4 16 0.2842 Intel(R) Xeon(R) CPU E5-2686 v4 @ 2.30GHz
14 t3.large 2 8 0.1364 Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz
15 t3.xlarge 4 16 0.2912 Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz
16 t3a.large 2 8 0.1255 AMD EPYC 7571   2.20 GHz
17 t3a.xlarge 4 16 0.2694 AMD EPYC 7571   2.20 GHz


蛇足ですが、せっかくのなので今回比較するインスタンスで使用されているCPUについて少し見ていきたいと思います。EC2インスタンスを利用する上ではあまり知っている必要のある情報ではないので興味がない方は次の「比較環境」の項目まで読み飛ばしていただいて構いません。
さて、今回比較するインスタンスで使用されているCPUは以下の7種類でした。
①AMD EPYC 7571 2.20GHz
②AMD EPYC 7R32 2.80GHz
③Intel® Xeon® CPU E5-2666 v3 @ 2.90GHz
④Intel® Xeon® CPU E5-2686 v4 @ 2.30GHz
⑤Intel® Xeon® Platinum 8124M CPU @ 3.00GHz
⑥Intel® Xeon® Platinum 8259CL CPU @ 2.50GHz
⑦Intel® Xeon® Platinum 8375C CPU @ 2.90GHz

では少し細かく見ていきましょう。
①AMD EPYC 7571 2.20GHz
 2017年6月に発表された第1世代EPYC (Naples)のシリーズですが、AMDによって公開されているモデルナンバには存在しないためAWS向けのカスタムモデルだと推測されます。こちらのシリーズは最大32コア64スレッドという1CPUでのコア数の多さと最大8チャンネルのメモリが特徴となります。

②AMD EPYC 7R32 2.80GHz
 2019年8月に発表された第2世代EPYC (Rome)のシリーズですが、こちらもAWS向けのカスタムモデルのようです。NaplesとはCPU内部の構造が大きく変わったことにより最大64コア128スレッドまで拡張され、1コア当たりの性能も大きく向上しています。

③Intel® Xeon® CPU E5-2666 v3 @ 2.90GHz
 2014年9月に発売されたサーバ向けCPUで、第4世代Coreシリーズで使用されているアーキテクチャ(Haswell)をベースにしたものです。最大18コア36スレッドの製品群ですが、こちらの型番だと10コア20スレッドの製品になります。周波数の高さからもわかるとおりIntel製品は1コア当たりの性能が高いことが特徴です。

④Intel® Xeon® CPU E5-2686 v4 @ 2.30GHz
 E5 v3シリーズの後継で2015年6月に発表されたものです。こちらの製品群では最大22コア44スレッドまで拡張され、こちらの型番も18コア36スレッドの製品になります。

⑤Intel® Xeon® Platinum 8124M CPU @ 3.00GHz
 2017年11月に発売されたサーバ向けCPU第1世代Xeon®スケーラブル・プロセッサー(Skylake-SP)で、第6世代Coreシリーズで使用されているアーキテクチャ(Skylake)をベースにしたものです。最大28コア56スレッドで8ソケット対応の製品群ですが、こちらの型番だと18コア36スレッドの製品です。

⑥Intel® Xeon® Platinum 8259CL CPU @ 2.50GHz
 2019年4月に発表された第2世代Xeon®スケーラブル・プロセッサー(Cascade Lake-SP)です。最大28コア56スレッドの製品群ですが、こちらの型番だと24コア48スレッドの製品になります最大28コアと記載しましたが、こちらのシリーズを2個組み合わせて1つのパッケージにした最大56コア112スレッドの製品も存在します。

⑦Intel® Xeon® Platinum 8375C CPU @ 2.90GHz
 2020年6月発表の第3世代Xeon®スケーラブル・プロセッサー(Cooper Lake)です。最大40コア80スレッドの製品群で、こちらの型番だと32コア64スレッドになります。

2.2 比較環境

ベンチマークを実施する環境はインスタンスの差以外を極力なくすために以下に統一しています。
①AMI:ami-09bc270287ac18e02 (Windows_Server-2022-Japanese-Full-Base-2021.11.16)
②EBS:gp2、30GB、デフォルトEBSキーで暗号化
③リージョン:東京リージョン

2.3 実施テスト

今回は、「インターネット通信速度」、「CPU処理能力」、「メモリ帯域」、「ディスク読み書き速度」の4つの観点で比較してみたいと思います。
インターネット通信速度を計測できるサイトはたくさんありますが今回はfast.comで計測します。因みに私の自宅はダウンロード、アップロードともに200Mbps前後でした。
CPU処理能力についてはCINEBENCH R23で計測します。こちらはMaxon Computer GmbHが販売しているCinema 4Dという3Dモデリング等を行うソフトでのレンダリング性能を測定するソフトです。もちろんCPUごとにワークロードの得手不得手があるのでこちらの結果がCPUの絶対的な性能を示すものではありませんが、全コアフルロード時での性能を簡単に計測することができます。

続いてメモリ帯域についてはSTREAMベンチマークで計測します。こちらはメモリ帯域を計測する際に業界標準的に利用されているベンチマークソフトです。
最後にディスク読み書き速度はCrystalDiskMarkで計測します。過去のコラムでFSxやStorage Gatewayの性能測定にも使わせていただいたものです。

3.ベンチマーク結果

3.1 インターネット通信速度

まずはインターネット通信速度を見ていきましょう。こちらはWebサーバ等にする際、アクセスの多い場合には重要になってくるかと思います。
結果は下表に示す通りです。それぞれあまりにも乖離した結果を除いて3回計測し、その平均を採用しています。ここに示すdownloadとuploadはインスタンスから見た方向なので、Webサーバとしてクライアントから見た場合は逆になる点ご留意ください。

インターネット通信速度グラフ


この結果からわかることは、c4やm4、t2などの旧世代のインスタンスは最新世代に比べてインターネット通信速度が劣ることがわかります。ただし、t2やt3、t3aの結果からインスタンスサイズをあげると性能が向上しているので処理性能やメモリの容量等が影響している可能性もあります。
インスタンスタイプごとにネットワークパフォーマンスが異なりますが、インターネットだと別のところがボトルネックとなりその上限までパフォーマンスを発揮できないようで、最新世代同士の比較だとそこまで大きな差はなさそうです。

3.2 CPU処理能力

続いてCPUの処理能力を見ていきます。
今回はすべてのコアを処理に使用した場合の性能を測定しています。ただし、TシリーズのインスタンスについてはCPUクレジットが使えるかどうかで性能が大きく変わりますので、CPUクレジットを無制限にした状態とわざと使い切った状態の2パターン測定しています。
結果は下表に示す通りです。Tシリーズの(有)(無)に関しては上述のCPUクレジット残高の有無を示しています。

Cinebench(Multi)


この結果より、Tシリーズを除いて旧世代より新世代のインスタンスの方が高性能なことがわかります。一方Tシリーズについては意外にもt3インスタンスよりもt2インスタンスの方が高性能だという結果になりました。これについては機会があればまた細かく調査してみたいですね。ただし、金額的にはt2インスタンスよりt3インスタンスの方が安いので、CPU以外の測定結果も踏まえ、どちらを利用するか選択する必要がありそうです。また、CPUクレジットに関しては使い切ってしまうと著しく性能が低下することがわかります。継続的に負荷がかかる用途では、CPUクレジットをすぐに使い切ってしまうのでTシリーズは向いていないでしょう。一方、夜間バッチ処理等短期間に負荷が集中する用途ではほかのシリーズとそん色ない性能を低価格で利用できるので向いているかと思います。
 
IntelとAMD(末尾aのインスタンス)の比較です。第1世代EPYCが搭載されているm5a, r5a, t3aインスタンスではIntel CPUのm5, r5, t3インスタンスに劣っていますが、第2世代EPYCが搭載されているc5aインスタンスでは、Intel CPUのc5インスタンスを上回る性能であることがわかります。単位時間当たりのコストはc5インスタンスよりc5aインスタンスの方が安いため、CPU性能が重要な用途ではc5aインスタンスはかなりお得なシリーズかもしれません。今後、より高性能な第3世代EPYC (Milan)やMilan-Xが採用されたインスタンスが、どのような形で登場するか非常に楽しみですね!高性能なm6iインスタンスに並ぶもしくは上回るものは出てくるのでしょうか!?

3.3 メモリ帯域

次にメモリ帯域を見ていきます。結果は下表に示す通りです。

STREAM


この結果からは、概ね各インスタンスの搭載CPUごとに結果が分かれていることがわかります。各CPUを2.1節で記載した番号で記載すると性能順は以下の通りです。
①(m5a, r5a, t3a) < ④(i3, m4, r4, t2) < ③(c4) ≦ ⑥(m5, r5, t3) < ⑤(c5) < ⑦(m6i) < ②(c5a)
基本的にはやはり新しい世代の方がより広帯域なことがわかります。メモリ帯域が重要となるワークロードではCPUコア数とメモリ容量のバランスが許すならc5aシリーズが最適ですが、メモリ容量も重要ならm6iやr5シリーズでの検討となりそうです。

3.4 ディスク読み書き速度

最後にディスクの読み書き速度を見ていきます。こちらはCドライブとして設定したEBS(gp2, 30GB, デフォルトEBSキーで暗号化)の読み書き性能を計測しています。
私の予想では、EBS側の性能に依存するため、インスタンスタイプではあまり差が出ないと思っていましたが、実際どうなのか結果を見ていきましょう。

CrystalDiskMark(Read)

CrystalDiskMark(Write)


結果として、まずはRead、Writeともに傾向としては変わりませんでした。
そして、c4, i3, m4, r4の旧シリーズのインスタンスは意外にも軒並みシーケンシャルが低くEBSの性能を引き出せていないことがわかります。ただし、ランダムに関しては最新世代とほぼ違いはありませんでした。
新規にインスタンスを作成する場合、あえて旧世代のインスタンスを採用する理由はほぼないと思いますが、ファイルサーバ等サイズの大きいファイルを取り扱う用途の場合は最新世代のインスタンスを選ぶのが無難そうです。gp2を使用する範囲ではおそらく最新世代同士ではほぼ差はないので、インスタンス検討時にはEBSへの読み書き速度はあまり気にする必要はないでしょう。
ただし、EBS側がボトルネックだとするとio2ボリュームを使用してEBSの性能を引き上げるとインスタンスタイプごとに差が出る可能性はあります。また機会と予算があれば検証してみたいと思います。

4.まとめ

ここまで17種類のインスタンスタイプについてその性能を検証してきましたが、コア数やメモリ搭載量にかかわらず、インスタンスタイプや世代によってその性能が大きく異なることがわかりました。ただし、基本的には旧世代のインスタンスを選ぶメリットはなさそうです。
また、AMDのCPU(EPYC)が搭載されている末尾がaのインスタンスはCPUの世代によってその性能が大きく異なり、各インスタンスシリーズの最新世代で必ずしも新しい世代のCPUが搭載されているとは限らないため、性能要件が厳格な用途の場合実際に搭載されているCPUの世代を確認して選択する必要がありそうです。因みにEPYCの場合モデルナンバ4桁の内、最後の一桁が世代を表しています。(例:7571は第1世代で、7R32は第2世代)
インスタンスタイプごとに得手不得手もあるようなので、目的とする用途に対してのそれぞれの性能と価格を天秤にかけ、皆様がインスタンスを選定する際に今回の検証が参考になれば幸いです。

 
それではよいクラウドライフを!

当サイトの内容、テキスト、画像等の転載・転記・使用する場合は問い合わせよりご連絡下さい。

エバンジェリストによるコラムやIDグループからのお知らせなどを
メルマガでお届けしています。

メルマガ登録ボタン


松岡 政之

株式会社インフォメーション・ディベロプメント 先端技術部 エバンジェリスト

この執筆者の記事一覧

関連するナレッジ・コラム

AWS Backupでバックアップを楽楽監査

AIに人間の言葉を理解させてみよう

VUCA時代に対応するための学習の取組み方