EC2の新インスタンスタイプ”C4″をベンチマークしてみた
ウィスキー、シガー、パイプをこよなく愛する大栗です。
re:Invent 2014でアナウンスされていた新しいEC2のインスタンスタイプ"C4"を使用できるようになりました。C3に比べて、どの程度早くなったのか計測してみました。
C4自体の説明はせーのがAmazon EC2の新インスタンス「C4ファミリー」を触ってみたという記事を書いておりますので、こちらを参照下さい。
ベンチマーク1
インスタンス全体のパフォーマンスを計速します。
計測環境
計測ツールはいつも通りにUnixBenchを使用します。
計測内容は以下の通りです。
- UnixBench 5.1.3
- EC2インスタンス:c3.large(2並列)、c4.large(2並列)、c3.xlarge(4並列)、c4.xlarge(4並列)
- EBS:gp2 1000GB
- 使用リージョン:東京(ap-northeast-1)
- 使用AMI:Amazon Linux AMI 2014.09.1 (HVM) - ami-4985b048
計測結果
以下が計測結果になります。なお、UnixBenchは複数回計測した結果の平均を出力するため、UnixBench自体の計測回数は1回です。
vCPUs:2 (2並列) |
vCPUs: 4 (4並列) |
|||||
---|---|---|---|---|---|---|
c3.large | c4.large | c4/c3 | c3.xlarge | c4.xlarge | c4/c3 | |
Dhrystone 2 using register variables (整数演算) | 3443.1 | 3789.8 | 110.1% | 6869.1 | 7591.0 | 110.5% |
Double-Precision Whetstone (浮動小数点) |
1332.0 | 1458.3 | 109.5% | 2663.7 | 2923.9 | 109.8% |
Execl Throughput (システムコール) |
1392.0 | 1664.7 | 146.6% | 2849.9 | 3267.4 | 114.6% |
File Copy 1024 bufsize 2000 maxblocks (ディスクI/O) | 2417.3 | 3544.7 | 146.6% | 2275.4 | 2623.1 | 115.3% |
File Copy 256 bufsize 500 maxblocks (ディスクI/O) | 1618.3 | 2251.9 | 139.2% | 1425.0 | 1691.9 | 118.7% |
File Copy 4096 bufsize 8000 maxblocks (ディスクI/O) | 5561.5 | 7237.6 | 130.1% | 4833.9 | 3829.0 | 79.2% |
Pipe Throughput (パイプ) |
1605.6 | 1896.8 | 118.1% | 3323.2 | 3829.0 | 115.2% |
Pipe-based Context Switching (パイプ) |
971.4 | 1168.8 | 120.3% | 1910.3 | 2124.8 | 111.2% |
Process Creation (プロセスフォーク) |
1616.2 | 1912.4 | 118.3% | 2970.1 | 3490.0 | 117.5% |
Shell Scripts (1 concurrent) (シェルのテキスト処理:1並列) |
2021.5 | 2339.8 | 115.7% | 3944.7 | 4471.4 | 113.4% |
Shell Scripts (8 concurrent) (シェルのテキスト処理:8並列) |
1950.1 | 2271.2 | 116.5% | 3897.8 | 4445.5 | 114.1% |
System Call Overhead (システムコール) |
1939.7 | 2415.6 | 124.5% | 3645.6 | 4000.4 | 109.7% |
System Benchmarks Index Score (総合スコア) | 1930.4 | 2353.9 | 121.9% | 3123.9 | 3569.8 | 114.3% |
ベンチマーク2
C4インスタンスは標準でEBS最適化が有効になっているので、ディスクI/Oのパフォーマンスも計測します。
なお、C4インスタンスにはInstance Storeがありません。そのためC3、C4共にEBSで計測しました。
計測環境
ディスクI/Oの計測ツールはfioを使用します。
計測内容は以下の通りです。
- fio 2.1.5
- EC2インスタンス:c3.large、c4.large、c3.xlarge、c4.xlarge
- EBS:gp2 1000GB
- 使用リージョン:東京(ap-northeast-1)
- 使用AMI:Amazon Linux AMI 2014.09.1 (HVM) - ami-4985b048
計速コマンド
計測は、シーケンシャルリード、シーケンシャルライト、ランダムリード、ランダムライトの4種類で行い、12GBのサイズを64並列で実行させます。
シーケンシャルリード
fio -filename=/home/ec2-user/fio/testfio.file -direct=1 -rw=read -bs=16k -size=12G -group_reporting -name=seqread -numjobs=64 -runtime=60
シーケンシャルライト
fio -filename=/home/ec2-user/fio/testfio.file -direct=1 -rw=write -bs=16k -size=12G -group_reporting -name=seqwrite -numjobs=64 -runtime=60
ランダムリード
fio -filename=/home/ec2-user/fio/testfio.file -direct=1 -rw=randread -bs=16k -size=12G -group_reporting -name=randread -numjobs=64 -runtime=60
ランダムライト
fio -filename=/home/ec2-user/fio/testfio.file -direct=1 -rw=randwrite -bs=16k -size=12G -group_reporting -name=randwrite -numjobs=64 -runtime=60
計測結果
以下が計測結果になります。
iops
sequential read | sequential write | randam read | randam write | |
c3.large | 3795 | 804 | 3064 | 950 |
c4.large | 3799 | 1356 | 3064 | 1369 |
c3.xlarge | 3859 | 1577 | 3065 | 1561 |
c4.xlarge | 996 | 1626 | 614 | 1617 |
bandwidth
sequential read | sequential write | randam read | randam write | |
c3.large | 60735 | 12873 | 49036 | 15207 |
c4.large | 60799 | 21708 | 49036 | 21915 |
c3.xlarge | 61759 | 25242 | 49040 | 24985 |
c4.xlarge | 15937 | 26019 | 26019 | 25887 |
まとめ
C4はC3と比較するとカタログ上はECU比が8:7で価格比もほぼ同じ(c4.8xlargeを除く)です。CPUのみの価格性能比はC3とC4で変わらないようです。そのため、ディスクの使い方と「AVX2」命令の有無で使い分けをした方が良いと思われます。
ディスクは、C3にInstance Storeが有りC4にはありません。また、C4の場合はEBS最適化が標準で有効になっているためEBSへのアクセス速度が速くなっています(なぜかc4.xlargeのReadの計測値が低かったですが)。swapへのアクセスが多い場合にはC3、通常のディスクI/Oが多い場合はC4の方が良いと思われます。
また、「AVX2」命令に最適化できるアプリケーションである場合はC4を使用するべきでしょう。
さいごに
C3とC4を比較してみましたが、双方とも現行世代のため極端な差になりませんでした。ディスクの用途で使い分けをした方が良いと思われるので、動かすアプリケーションのワークロードに合うか確認しましょう。
なお、C4は仮想化タイプがHVMのみ対応しています。Paravirtualで作成したAMIを使用できないのでご注意下さい。