読者です 読者をやめる 読者になる 読者になる

まめ畑

ゆるゆると書いていきます

T2インスタンスがでたので簡単に性能をみてみた

AWS

昨日、EC2の新instance familyでT2シリーズが出ました。
今まで、t1.micro/m1.smallとか言われてたシリーズの現行版で、General Purposeにカテゴリも変更されています。

リリースは以下の記事
http://aws.amazon.com/blogs/aws/low-cost-burstable-ec2-instances/
http://aws.typepad.com/aws_japan/2014/07/low-cost-burstable-ec2-instances.html

置き換えは

t1.microをt2.microへ
m1.smallをt2.smallへ
m1.mediumをt2.mediumへ

という感じです。

特徴としては、CPU(ECU)がバーストするということです。
リリースにも書かれている通りのアルゴリズムでバーストします。

また、特徴として、HVMだけ受け付けるようになり、CPUも Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz が使用されています。

普段は負荷が少ないけど、ある時間のみCPUをおもいっきり使用する様なケースに置いて有用なインスタンスだと思います。
先日発表されたSSD EBS (gp2)とあわせることで、起動時の速度EBSで、処理の速度向上をt2のバーストで行なうことで、起動や処理速度の向上が期待できます。

バーストを見てみた

t2.micro or t1.microでAmazon Linux を使ったUnix Benchをしてみました。実行中はバーストが常に起こる状態です。結果をわかりやすくするため、microを使いました。

 CPU 0: Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz (5000.2 bogomips)
          Hyper-Threading, x86-64, MMX, Physical Address Ext, SYSENTER/SYSEXIT, SYSCALL/SYSRET
   10:05:14 up 10 min,  1 user,  load average: 0.06, 0.05, 0.05; runlevel 3

------------------------------------------------------------------------
Benchmark Run: Tue Jul 01 2014 10:05:14 - 10:33:19
1 CPU in system; running 1 parallel copy of tests

Dhrystone 2 using register variables       35848981.6 lps   (10.0 s, 7 samples)
Double-Precision Whetstone                     4529.7 MWIPS (10.0 s, 7 samples)
Execl Throughput                               5337.1 lps   (30.0 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks       1159756.7 KBps  (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks          327710.4 KBps  (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks       3648669.1 KBps  (30.0 s, 2 samples)
Pipe Throughput                             2117176.4 lps   (10.0 s, 7 samples)
Pipe-based Context Switching                 384038.3 lps   (10.0 s, 7 samples)
Process Creation                              17517.4 lps   (30.0 s, 2 samples)
Shell Scripts (1 concurrent)                   7047.2 lpm   (60.0 s, 2 samples)
Shell Scripts (8 concurrent)                    970.8 lpm   (60.0 s, 2 samples)
System Call Overhead                        2707725.1 lps   (10.0 s, 7 samples)

System Benchmarks Index Values               BASELINE       RESULT    INDEX
Dhrystone 2 using register variables         116700.0   35848981.6   3071.9
Double-Precision Whetstone                       55.0       4529.7    823.6
Execl Throughput                                 43.0       5337.1   1241.2
File Copy 1024 bufsize 2000 maxblocks          3960.0    1159756.7   2928.7
File Copy 256 bufsize 500 maxblocks            1655.0     327710.4   1980.1
File Copy 4096 bufsize 8000 maxblocks          5800.0    3648669.1   6290.8
Pipe Throughput                               12440.0    2117176.4   1701.9
Pipe-based Context Switching                   4000.0     384038.3    960.1
Process Creation                                126.0      17517.4   1390.3
Shell Scripts (1 concurrent)                     42.4       7047.2   1662.1
Shell Scripts (8 concurrent)                      6.0        970.8   1618.0
System Call Overhead                          15000.0    2707725.1   1805.2
                                                                   ========
System Benchmarks Index Score                                        1813.3
CPU 0: Intel(R) Xeon(R) CPU E5-2650 0 @ 2.00GHz (3600.0 bogomips)
          Hyper-Threading, x86-64, MMX, Physical Address Ext, SYSENTER/SYSEXIT, SYSCALL/SYSRET
   10:05:28 up 8 min,  1 user,  load average: 0.68, 0.22, 0.10; runlevel 3

------------------------------------------------------------------------
Benchmark Run: Tue Jul 01 2014 10:05:28 - 10:33:29
1 CPU in system; running 1 parallel copy of tests

Dhrystone 2 using register variables       20450227.0 lps   (10.0 s, 7 samples)
Double-Precision Whetstone                     2382.0 MWIPS (9.9 s, 7 samples)
Execl Throughput                               1034.8 lps   (30.0 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks        190620.7 KBps  (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks           49930.0 KBps  (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks        637706.3 KBps  (30.0 s, 2 samples)
Pipe Throughput                              275945.7 lps   (10.0 s, 7 samples)
Pipe-based Context Switching                  52613.4 lps   (10.0 s, 7 samples)
Process Creation                                785.0 lps   (30.1 s, 2 samples)
Shell Scripts (1 concurrent)                    771.1 lpm   (60.3 s, 2 samples)
Shell Scripts (8 concurrent)                     59.9 lpm   (60.1 s, 2 samples)
System Call Overhead                          97154.5 lps   (10.0 s, 7 samples)

System Benchmarks Index Values               BASELINE       RESULT    INDEX
Dhrystone 2 using register variables         116700.0   20450227.0   1752.4
Double-Precision Whetstone                       55.0       2382.0    433.1
Execl Throughput                                 43.0       1034.8    240.6
File Copy 1024 bufsize 2000 maxblocks          3960.0     190620.7    481.4
File Copy 256 bufsize 500 maxblocks            1655.0      49930.0    301.7
File Copy 4096 bufsize 8000 maxblocks          5800.0     637706.3   1099.5
Pipe Throughput                               12440.0     275945.7    221.8
Pipe-based Context Switching                   4000.0      52613.4    131.5
Process Creation                                126.0        785.0     62.3
Shell Scripts (1 concurrent)                     42.4        771.1    181.9
Shell Scripts (8 concurrent)                      6.0         59.9     99.8
System Call Overhead                          15000.0      97154.5     64.8
                                                                   ========
System Benchmarks Index Score                                         250.9

CPU CreditとCPU Usage

CloudWatchで見ることができます。オレンジがt1.micro / 青が t2.microです。
f:id:con_mame:20140702214124p:plain
f:id:con_mame:20140702214128p:plain

Creditを使いきってみた

f:id:con_mame:20140702214213p:plain
f:id:con_mame:20140702214218p:plain
f:id:con_mame:20140702214217p:plain


見て分かる通り、バースト中でCPUを100%使える状態から、クレジットが減少してきてt2.microのベースラインである10%に綺麗にキャップされていく様子が見れると思います。
サーバ内ではstealの割合が上昇していき、90% stealという状態になりました。実際に使えるのが10%ということですね。
System Benchmarks Index Score は 3回の平均で700程度と落ち込み、10%に完全にキャップされた状態では、t2.microでunix benchが完走しない事もありました。

クレジットは1分ごとに各インスタンスタイプ毎に決められた割合で復活していきますので、バーストを必要としない状態になったら徐々に回復していきます。
リリースやドキュメントにもある通り

t2.micro - 144 (6 CPU Minutes / hour * 24 hours)
t2.small - 288 (12 CPU Minutes / hour * 24 hours)
t2.medium - 576 (24 CPU Minutes / hour * 24 hours)

まで貯めることが出来ます。(6 CPU Minutesなどが1分間の回復量です)

まとめ

今回のT2シリーズはバーストアルゴリズムが公開されていることも去ることながら、General Purposeにカテゴライズされていることも注目だと思っています。
普段はバーストしないが、バッチの瞬間だけおもいっきりCPU使いたいとか、ある処理の瞬間だけCPUをフルに使いたいという場合にちょうど良いのではないでしょうか。お財布にやさしい感じだと思っています。

しかし、今回はt2.microを使ったため極端な性能劣化が見受けられましたが、t2.small/mediumなどワークロードにあったインスタンスを要件に合わせて使うことが大事だと思います。