りむっちスケッチ

ハニカムログ

EC2に全く新しいSSD-Backed EBSがきたぞ!

この瞬間を待ってたぞ!

  • New SSD-Backed Elastic Block Storage

http://aws.amazon.com/jp/blogs/aws/new-ssd-backed-elastic-block-storage/

とりあえず公式ブログをざっくりよんでまとめた。

  • これまでのEBS

    • A Single EBSボリュームで4000IOPSが最大 (1GB - 1TB ディスクサイズにも依存)
    • Multiple PIOPS EBSボリュームで48,000IOPS (with raid)
  • これからのEBS

    • General Purpose (SSD)
    • コストは一律$0.10/GB-month
      • IOオペレーションやPIOPSなどの要因による課金はない
    • Boot Boost
      • EBSがSSDになるのでOSをより早く起動させることができる
      • Linuxをブートさせるには7000I/Oくらいがだいたい必要で、Windowsの場合は70,000I/Oが必要。
      • これまでの磁器ドライブからSSDに変更した場合
        • Windows2008 R2で50%も高速化した。
      • すでにあるAMIを起動するときにGeneral Purpose(SSD)を選択できるし、これまでのStandardEBS(MagneticEBS)も引き続き選択することができるようになった。

General Purpose (SSD)のバースト耐性

  • 今回のハードウェア設計ストラテジにはトークンパケットアルゴリズムを採用している
    • 1read/1writeをI/O クレジットという単位で管理していて、バースティングを挙用できるロジックが採用される。
    • それぞれのSSDでは540万トークンまで保持する。
    • トークンは3IOPS/GB/secのペースで蓄積できる。
    • 1つのボリュームあたり3,000IOPSを処理する事ができる。

料金について

Tokyo

drive cost/GB cost/PIOPS
General Purpose (SSD) $0.12/GB
PIOPS(SSD) $0.142/GB $0.114/GB
Magnetic volumes(StandardEBS) $0.08/GB $0.08/100万IOリクエスト
S3へのEBSスナップショット $0.095

N.virginia

drive cost/GB cost/PIOPS
General Purpose (SSD) $0.10/GB
PIOPS(SSD) $0.125/GB $0.10/GB
Magnetic volumes(StandardEBS) $0.05/GB $0.05/100万IOリクエスト
S3へのEBSスナップショット $0.095

Ireland

drive cost/GB cost/PIOPS
General Purpose (SSD) $0.11/GB
PIOPS(SSD) $0.138/GB $0.11/GB
Magnetic volumes(StandardEBS) $0.055/GB $0.055/100万IOリクエスト
S3へのEBSスナップショット $0.095

やはりアジアパシフィックリージョンは高いね。

新EBSのタイプ別に特性などを確認してみた

General Purpose (SSD)

  • 通常利用でお勧め。特にシステムブートなんかで使った方がいい。AMI起動時にはこれを選択していくことになりそう
  • ボリュームサイズは 1GiB - 1TiBが選択可能
    • ベースパフォーマンスは 3IOPS/GiB なので100GBのEBSブロックをつくったら300IOPSくらいは能力として備えているということになる。
    • PIOPSを使わないという形なので300IOPSはあくまで目安なのでネットワーク帯域の状況や、トークンパケットのロジックもふまえて考えるとパフォーマンスが十分でてこない可能性もあると予想
    • 1000GiBまでのボリュームがつくれるので実質のバースト最大は3000IOPSということになる。
    • APIで利用時のボリューム名称は gp2。
  • 設計的には、一桁台ミリセカンドのレイテンシで応答するIOパフォーマンスを提供。
  • それぞれのボリュームは初期I/Oクレジットとして、540万IOクレジットを蓄積できる。
  • 最大バーストでは30分間の間、3,000IOPSを持続することを可能としている。(クレジットが回復する期間のことについてもよく考えないとあぶないかもしれない)

Provisioned IOPS (SSD)

  • クリティカルな高負荷データベースなどに利用することをお勧め。
    • RandomIOでのパフォーマンスをしっかりと出してくれるとのこと。
  • ボリュームサイズは 10GiB - 1TiB で利用可能
    • 一貫した性能を発揮するらしい。 4,000IOPS を最大として提供する。
    • とはいえ基本は3IOPS/GiBということなんだと思われる。
  • APIで利用時のボリューム名称はio1
  • PIOPSにするには、一定の割合ルールに従う必要がる。
    • 3,000IOPSを設定したければ、100GIBのディスクが必要といった具合に、ボリュームの30倍が最低でも最大IOPS指定となる。
    • よりパフォーマンスの高いIOPSを獲得したければ例によってRaidを組めというおぼし召しがあった。

Magnetic EBS (Standard EBS)

  • しょぼい用途に利用
  • ボリュームサイズは 1GiB - 1TiB
  • 平均して最大で100IOPS程度のパフォーマンスを発揮する
  • APIで利用時のボリューム名称は standard

SSD-Backed EBSのバースティングについて

  • 何度も30分間に3000IOPSのバースティングができると謡っている箇所があるけれど、どういうことなのかドキュメントをさらっと確認してみた

ベースパフォーマンスとバースティング持続時間について

  • まず、1GBあたり3IOPSが保障される
  • そして1ボリュームあたり540万IOクレジットが確保される。
  • ボリュームごとにディスクのIOPSバースティング最大を3000IOPSと設定されているので仮に3000IOPSが出たとしたら以下の計算式でバースト持続時間が決定されるらしい。
バースト持続時間=(IOクレジットの残り)/(バーストIOPS) - 3*(ボリュームサイズ) 
  • つまり1GBのボリュームの場合に300IOPSのバースティングが発生したと仮定すると下記のようになる。
540万IOクレジット/3000IOPS - 3*1(GiB) = 1797 (sec) = 29.95 (miniutes)
  • 一つ懸念点があって、ドキュメントに"Seconds to fill empty credit balance"という項目がある。これはfill empty creditとなってるけど540万IOクレジットが何秒で回復できるかを示したものでたとえば、1GIBでは3IOPSずつしか回復できない。
(540万IOクレジット)/(3 io credits/sec) = 1,800,000秒 回復にかかる
  • Raidを組んで、マルチプルボリュームにすることで、この3,000IOPSよりもパフォーマンスを獲得できるとしている。

ボリュームごとのバースト目安表

  • 漢はだまって1TBのEBSボリュームを作れというおぼし召しである。
size(GB) base performance(IOPS) バースト持続可能時間@3,000IOPS /seconds クレジットが全回復するまでの時間(sec)
1 3 1,802 1,800,000
100 300 2,000 18,000
250 750 2,400 7,200
500 1,500 3,600 3,600
750 2,250 7,200 2,400
1,000 3,000 無限 N/A

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

(追記)
早速、並河さんがベンチマークをバシっと公開しています!この行動力!尊敬します!!!
2014-06-18 - 元RX-7乗りの適当な日々 http://d.hatena.ne.jp/rx7/20140618/