Amazon EC2で高速SSDを8つも搭載した新しいI2インスタンスのベンチマークをとってみた

by mtlin



AWS re:Inventで発表されていた、SSDによる高性能ランダムI/O用に最適化されたという、Amazon EC2の新しいインスタンスタイプ「I2インスタンス」が先日使えるようになりました。
インスタンスタイプとしては"i2.*"からはじまるやつです。

I2インスタンスタイプは、特にリレーショナルデータベース、NoSQLデータベース、およびトランザクションシステムによって生成されるI/O集約型のワークロードをホストするように設計されています。最も大きいサイズのI2インスタンスタイプは、4KBのブロックサイズでの計測で、秒間365,000を超えるランダムリードと秒間315,000を超えるランダムライトの性能を発揮します。4つのインスタンスサイズをご利用いただけますので、必要なストレージとI/O性能が高くなのに合わせて、小さくスタートし、スケールアップしていくことができます。
このインスタンスタイプはHI1インスタンスの後継にあたる第2世代のハイI/Oインスタンスタイプで、HI1インスタンスの欠けていた部分を補います。HI1インスタンスタイプと比較して、I2ファミリーは、より高速なプロセッサー、3つの追加のインスタンスサイズ、仮想CPUあたり2倍のメモリ容量、56% 多くなったSSDベースのインスタンスストレージを提供します。

Amazon Web Services ブログ: 【AWS発表】Amazon EC2 の 新インスタンスタイプ I2 が利用可能に!


これは、かなり凄そうな雰囲気が出ているので、いつものごとく軽くベンチマークをとってみることにしました。

利用できるインスタンスタイプ

上記の公式ブログより抜粋しますが、以下のような感じです。

インスタンスタイプ 仮想CPU数 メモリ SSDの容量 料金
i2.xlarge 4 30.5GB 1 x 800 GB $0.85/h
i2.2xlarge 8 61GB 2 x 800 GB $1.71/h
i2.4xlarge 16 122GB 4 x 800 GB $3.41/h
i2.8xlarge 32 244GB 8 x 800 GB $6.82/h


今回は最も性能の良い、SSDを8本積んでいる"i2.8xlarge"を使ってみました。

ベンチマーク方法

今回も、"fio"を使ってベンチマークをとってみます。他、Amazon Linuxを利用したり、ファイルシステムはxfsを使う等、基本的な計測方法は、以下のエントリで紹介したやり方と同じです。


尚、計測対象は、以下の4パターンです。

  • 800GBのSSD1本のデバイスに対して計測
  • 800GBのSSD2本をソフトウェアRAID0で束ねたデバイスに対して計測
  • 800GBのSSD4本をソフトウェアRAID0で束ねたデバイスに対して計測
  • 800GBのSSD8本をソフトウェアRAID0で束ねたデバイスに対して計測


ちなみにベンチマークを取るのに使ったfioコマンドとオプションは以下の6つです。

まず、上から4つは、それぞれシーケンシャルリード/ライトとランダムリード/ライト、ブロックサイズは4kで設定しています。IOPSのチェックが主目的です。

# fio -filename=/data/test5g -direct=1 -rw=read -bs=4k -size=5G -numjobs=64 -runtime=16 -group_reporting -name=file1
# fio -filename=/data/test5g -direct=1 -rw=write -bs=4k -size=5G -numjobs=64 -runtime=16 -group_reporting -name=file1
# fio -filename=/data/test5g -direct=1 -rw=randread -bs=4k -size=5G -numjobs=64 -runtime=16 -group_reporting -name=file1
# fio -filename=/data/test5g -direct=1 -rw=randwrite -bs=4k -size=5G -numjobs=64 -runtime=16 -group_reporting -name=file1


あとの2つは、ブロックサイズを大きくして、主にbandwidth(転送レート)をチェックしています。

# fio -filename=/data/test5g -direct=1 -rw=read -bs=32m -size=5G -numjobs=16 -runtime=16 -group_reporting -name=file1
# fio -filename=/data/test5g -direct=1 -rw=write -bs=32m -size=5G -numjobs=16 -runtime=16 -group_reporting -name=file1

I2インスタンス(i2.*)の起動

公式ブログにも記載がありますが、I2インスタンスを使う際は、HVM(ハードウェア仮想化マシン)用のAMIを選択する必要があります。
(最初この点を見逃していて、「あれ、I2インスタンスが選べない...!!」って探していました・・・。)

I2インスタンスは、ハードウェア仮想化 (HVM) AMIのみをサポートします。このインスタンスから最高のI/Oパフォーマンスを得るためには、Amazon Linux AMI 2013.09.02もしくは、バージョン3.8以上のカーネルを持ったLinux AMIを使う必要があります。古いバージョンのカーネルでは、I2インスタンスを使っても十分なI/O性能を発揮することができません。

Amazon Web Services ブログ: 【AWS発表】Amazon EC2 の 新インスタンスタイプ I2 が利用可能に!


AWS Management Consoleでは、↑のようにHVM imageなAmazon Linuxを選択しましょう。


すると、こんな感じで、インスタンスタイプの選択画面でI2インスタンスが選べるようになります。
何気に、"i2.8xlarge"は10Gネットワーク利用可です。

I2インスタンス(i2.8xlarge)を起動!!

↓のように、/dev/xvdb/dev/xvdiまで、800GBのSSDデバイスがズラリと並んでいるのは壮観。

# ll /dev/xvd*
brw-rw---- 1 root disk 202,   0 Dec 23 13:22 /dev/xvda
brw-rw---- 1 root disk 202,   1 Dec 23 13:22 /dev/xvda1
brw-rw---- 1 root disk 202,  16 Dec 23 13:22 /dev/xvdb
brw-rw---- 1 root disk 202,  32 Dec 23 13:22 /dev/xvdc
brw-rw---- 1 root disk 202,  48 Dec 23 13:22 /dev/xvdd
brw-rw---- 1 root disk 202,  64 Dec 23 13:22 /dev/xvde
brw-rw---- 1 root disk 202,  80 Dec 23 13:22 /dev/xvdf
brw-rw---- 1 root disk 202,  96 Dec 23 13:22 /dev/xvdg
brw-rw---- 1 root disk 202, 112 Dec 23 13:22 /dev/xvdh
brw-rw---- 1 root disk 202, 128 Dec 23 13:22 /dev/xvdi


CPUは、公称通りの Xeon E5-2670 v2 (2.50GHz) が2発!

# cat /proc/cpuinfo
processor       : 0
vendor_id       : GenuineIntel
cpu family      : 6
model           : 62
model name      : Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
stepping        : 4
microcode       : 0x416
cpu MHz         : 2500.088
cache size      : 25600 KB
physical id     : 0
siblings        : 16
core id         : 0
cpu cores       : 8
apicid          : 0
initial apicid  : 0
fpu             : yes
fpu_exception   : yes
cpuid level     : 13
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx rdtscp lm constant_tsc arch_perfmon rep_good nopl xtopology pni pclmulqdq ssse3 cx16 pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm xsaveopt fsgsbase smep erms
bogomips        : 5000.17
clflush size    : 64
cache_alignment : 64
address sizes   : 46 bits physical, 48 bits virtual
power management:

・・・・・が、32core分続きます・・・・・

ベンチマーク結果

以下が、SSD1本の単体と、複数のSSDデバイスをRAID0(ストライピング)で束ねた際(2, 4, 8本)のベンチマーク結果です。

IOPS

Benchmark Type SSD x1 SSD x2 SSD x4 SSD x8
4k, sequential read 62898 122407 180835 197893
4k, sequential write 35716 42150 42152 41265
4k, randam read 61290 126650 192157 203979
4k, randam write 22085 37529 36699 37269

BandWidth(帯域幅, 単位はMB/s)

Benchmark Type SSD x1 SSD x2 SSD x4 SSD x8
32m, sequential read 468.8 922.9 1798.2 3557.2
32m, sequential write 462.9 917.5 1808.8 3490.9


結果ですが、SSD単体でシーケンシャル/ランダムリードともに60,000IOPS超と、なかなか優秀な結果です。
IOPSについては、シーケンシャル/ランダムリードについては、4本までは、ほぼリニアな感じで性能が伸びていますが、8本になると、今回のベンチマーク環境や計測の仕方では、IOPS値が伸びませんでした。ベンチマークのやり方を変えると、また値が変わりそうな気がします。
また、シーケンシャル/ランダムライトのIOPSについては、これも今回の環境依存な気もしますが、40,000超で伸びなくなってしまいました。
公称値は、ランダムリード365,000IOPS、ランダムライト315,000IOPSなので、冬休みの宿題的な感じで時間が取れれば、FSを変えたりベンチマーク方法を少しやり直して見たいと思っています。


尚、BandWidth(帯域幅)のスループットについては、完全にリニアな感じで伸びていきました。MAXで3.5GB/secで読み書きできるわけですから、相当高速です。


↓は、RAID0でSSDデバイスを8本束ねたときの"df"の出力結果ですが、やはり驚異的なことは、20万〜30万IOPS3.5GB/secスループットの高パフォーマンスを叩き出す約6TBもの超高速ストレージが、AWSで使えるようになったということは、公式ブログにも記載がありますが、さらに可能性が大きく広がったと思います。

# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/xvda1            7.9G  1.3G  6.6G  16% /
tmpfs                 121G     0  121G   0% /dev/shm
/dev/md0              5.9T   34M  5.9T   1% /data


ちょっと、おじさんビックリしてしまいましたが、このSSDデバイスをEBSみたいな感じで、自由な容量で好きなインスタンスで利用できるようになれば、もっとおじさんビックリ(凄そう)です!(ネットワークを介したデバイスで、このパフォーマンスを出し続けることは、難しいかもしれませんが。)

いったん今日はここまで。それでは!=͟͟͞͞(๑•̀=͟͟͞͞(๑•̀д•́=͟͟͞͞(๑•̀д•́๑)=͟͟͞͞(๑•̀д•́