新しいSSDベースのEBSボリューム(General Purpose)のベンチマークをとった

by Marcell Dietl



昨日の Amazon Web Services からの公式発表により、Amazon EBSのボリュームとして、「General Purpose (SSD)」が選択できるようになりました。詳細は、以下のAWS公式ブログにてご確認ください。


で、で、既に今回追加された新しいEBSのボリュームタイプに関しては、以下のエントリでまとめられています。


へー、なるほどねぇ、、、とか思いながら読んでいたのですが、最後のところで、

新型EBSのベンチマークについては、いつもの id:rx7 さんが颯爽ベンチってくれると思うので待ちます。

http://rimtty.hatenablog.com/entry/2014/06/17/184348

とあったので、軽くベンチマークをとって、まとめてみますねw

ベンチマーク方法

今回も、いつもと同様"fio"を使ってベンチマークをとってみます。基本的なやり方は、以下のエントリで紹介した内容とほぼ同じです。


一応、箇条書きしておくと、

  • Tokyoリージョンを利用
  • Amazon Linux AMI 2014.03.1 (Linux version 3.10.35-43.137.amzn1.x86_64) を利用
  • 利用したEC2インスタンスタイプは c3.8xlarge
  • ファイルシステムはxfsを利用
  • 利用したボリュームタイプと容量は、General Purpose (SSD)100GB1000GBの2パターン、あと暗号化オプションを使ったパターン

です。

つまり、以下な感じでボリュームをアタッチさせました。


それでは、早速性能まわりをみていきましょうか。

EBS General Purpose (SSD) 100GB x 1

まずは、100GBのSSDボリュームを1つ作って、それに対するベンチマークです。

Benchmark Type Bandwidth IOPS
4k, sequential read 20.1MB/s 5134
4k, sequential write 19.8MB/s 5061
4k, randam read 12.1MB/s 3106
4k, randam write 12.1MB/s 3109
32m, sequential read 118.0MB/s 3
32m, sequential write 122.0MB/s 3

General Purpose (SSD) のタイプに関しては、Base Performanceとして、基本的に容量1GBあたり3IOPSの性能が保障されているので、少なくとも100GBの容量では300IOPSが出るはず。
だけど、最大3000IOPSまでバーストできるようになっていて、その持続時間についてもドキュメントに記載があり、ざっくり言うと約30分間。厳密に計算すると100GBのボリュームであれば約2000秒はバーストが持続する計算となっています。


よって、ブロックサイズ4kのアクセスであれば、上記の通り安定したランダムアクセスについては3000IOPS付近で安定した数字が出ていました。ちなみに、シーケンシャルアクセスについては5000IOPS付近まで出ていた。

EBS General Purpose (SSD) 100GB x 1 => "-runtime=120"(秒)

先ほどのベンチマークは16秒に対するもので、これまでデフォルトで使えたEBSボリュームについても短時間であれば、かなりバーストできた(参考: Amazon EBS の性能ベンチマーク その1 (Standard編) - 元RX-7乗りの適当な日々 )ので、試しに120秒ほどかけてみた。

Benchmark Type IOPS
4k, sequential read 4969
4k, sequential write 5256
4k, randam read 3066
4k, randam write 3066

先ほどの結果と、ほとんど変わらず。
さっき書いたとおりですが、100GBのボリュームであればバースト可能な持続時間が2000秒程度になっているはずなので、この結果は期待通り。

EBS General Purpose (SSD) 1000GB x 1

次は、General Purpose (SSD) タイプの1000GB(1TB)のボリュームを作成してやってみた。

Benchmark Type Bandwidth IOPS
4k, sequential read 21.0MB/s 5367
4k, sequential write 18.3MB/s 4675
4k, randam read 12.1MB/s 3106
4k, randam write 12.1MB/s 3107
32m, sequential read 130.4MB/s 4
32m, sequential write 105.5MB/s 3

結果はこの通りで、数十秒ベンチマークをかける程度であれば、100GBのボリュームと変わらないです。
ですが、こちらはBase Performanceが3000IOPSとなるので、常に3000IOPSの性能が保証された形になります。常に多めのIOアクセスが続くような環境では、黙って1TBのボリュームを作るか、Provisioned IOPS (SSD) のボリュームを作って運用する形になりそうですね。

EBS General Purpose (SSD) 1000GB x 2 (RAID0)

次、General Purpose (SSD) タイプの1000GB(1TB)のボリュームをRAID0(ストライピング)で2本束ねた結果。

Benchmark Type Bandwidth IOPS
4k, sequential read 26.0MB/s 6660
4k, sequential write 25.1MB/s 6437
4k, randam read 24.2MB/s 6199
4k, randam write 24.2MB/s 6193
32m, sequential read 248.1MB/s 7
32m, sequential write 215.0MB/s 6

シーケンシャルアクセスのバーストっぷりが少し小さくはなっていますが、ほぼ仕様通り+αという結果。
RAIDでストライピングする限りは、多少はインスタンスのスペックも影響するでしょうが、まぁ普通にディスクの本数に比例してパフォーマンスが出ると見て良さそうです。

EBS General Purpose (SSD) 100GB x 1 (Encrypt)

最後に"Encrypt this volume"にチェック(暗号化オプション)を入れて作成したボリュームに対してのベンチマーク。

Benchmark Type Bandwidth IOPS
4k, sequential read 19.8MB/s 5080
4k, sequential write 19.6MB/s 5013
4k, randam read 12.1MB/s 3106
4k, randam write 12.1MB/s 3107
32m, sequential read 123.1MB/s 3
32m, sequential write 94.3MB/s 2

こちらも暗号化なしのパターンとそれほど変わらない感じでした。

まとめ

  • 新しい General Purpose (SSD) タイプのEBSボリュームは、MAXで1ボリュームあたり3000IOPSとはなっているが、バースト時間がそこそこ長く使えるので、安定という意味で、旧来のEBS(Magnetic volumes)とProvisioned IOPSの中間的な位置付けかな、と思う。
  • バーストしている時間内でしかベンチマークをとっていないので、何とも言えないところはあるけど、少なくともその時間内では3000IOPSという数字でかなり安定したパフォーマンス・レイテンシが出ていた。(綺麗にキャップされている)
  • 新しい General Purpose (SSD) タイプのEBSボリュームは、旧来のEBS(Magnetic volumes)で設定されていたI/Oリクエストに対する課金がなくなっているのが、何気に1つの特徴ではないだろうか。
    • 旧来は、ボリュームに負荷試験ばりにIOリクエストをめちゃめちゃ投げていると、料金やばかったからね・・・うん。
  • RAIDでストライピングすると、ほぼ本数に比例してIOPSは向上する。(スケールする)
  • 暗号化オプションを利用しても、パフォーマンスはそれほど変わらないと思われる。


と、こんな感じでしょうか。
次回予告(宿題)として、バースティングできるクレジットを使い切ったときにどの程度のパフォーマンスになるかを挙げておきますw

それでは! =͟͟͞͞(๑•̀=͟͟͞͞(๑•̀д•́=͟͟͞͞(๑•̀д•́๑)=͟͟͞͞(๑•̀д•́