AWS Summit 2015 - Day1 - EBSパフォーマンスベンチマーク2015
- AWS 小林さん
EBSのおさらい
- ブロックレベルのストレージ
- スナップショットを使ってバックアップ
- 暗号化
99.999%の可用性
特徴
- 容量は1G単位で16TBまで
- マグネティックは1TBまで
- AZごとに独立
- スナップショットから任意のAZに復元可能
- 容量は1G単位で16TBまで
-
- 付け替えは可能
アーキテクチャ
ボリュームタイプ
汎用SSD
- デフォルト
- 費用対効果の高いディスク
- 一時的に3000IOPSになるバースト機能を備えている
1GBあたり3IOPSを常時確保(ベースパフォーマンス)
- 容量が1000GB以下の場合は3000IOPSに一時的に引き上げるバーストが可能
- たとえばOS起動時にはバーストさせて一気に起動させたり
- 最大は10,000 IOPSまで上昇
- 3334GBを超えたところで、常時10000IOPS
- 容量が1000GB以下の場合は3000IOPSに一時的に引き上げるバーストが可能
バーストの継続時間はIOクレジットの残高で決まる
- バーストが発生するとクレジットを消費
- 下回ったら時間とともにクレジットが溜まっていく
容量とスループット
- 容量依存でスループットが上がる
- 170GB以下では128MB/s
- 徐々に上がる
- 214GB以上では常時160MB/s
Provisioned IOPS
- SSDを超える性能
- 99.99%の時間について、指定IOPSの+-10%の範囲で性能発揮する
- 最大20000IOPSまで
- 最大320MB/s(1280IOPS以上)
- IOPS設定値依存
Magnetic
- 磁気ディスク
- かつてのデフォルト
- コスト安
- 1TBまで
- 平均100IOPS
- 最大数百IOPSまでバーストできる場合がある
- IOPSの命令回数ベースで課金
パフォーマンスの律速要素
EC2インスタンス側のスループット
- EBS-Optimized オプションを有効に
インスタンスタイプごとに上限値があるので、そこに到達していないか
- CloudWatchの Volume Read/Write Bytesの合計値で判断
上限に達している場合は、インスタンスタイプを大きくする
- EBS最適化をOnにすると、EBSへのアクセス回線をインターネットの帯域と別に確保する
- インスタンスタイプごとに帯域が異なる
EBS側のIO性能を改善する
- EBS側の実績値を確認する
- CloudWatchの Volume Read/Write Opsを参照
- OS から見てもいい
- 上限に達していたばあいは、ボリュームの上限を改善
EBS側のスループットを改善する
事前ウォーミング
- EBS各ブロックの初回アクセスに限り、IOPSが5~50%低下する
- 性能測定など
- プレウォーミングを実施すると、回避できる
実運用時には事前ウォーミング不可能な場合もある
実行方法
RAID構成
ベンチマーク検証
- それぞれのボリュームタイプについて、仕様通りの性能が出ていることを確認
RAIDによってそれを超えた性能が出せることをチェック
構成
- c3.8xlarge
- 2015.03
- xfs
- EBSはpre-warmingずみ
このへんはもうグラフ見ないと伝えづらい。。。
- こまかいブロック(8KB, 16KB)の場合はIOPSが高まって、そちらで頭を打つ
- スループットは余力があがったりする
- 大きなブロック(4MB)の場合は、IOPSの上限の前に、スループットが頭を打ってしまう
- 大きなブロックの場合、IOPS値を大きく取り過ぎてしまうと費用がもったいない場合があるので、注意
インスタンスストアとEBS
- もっと性能が欲しい場合は、インスタンスストアを使う
- 追加ストアなしで使えるディスク
- スループットはEBSとは独立している
- インスタンスを止めるとデータは消える
- 再起動では消えない
- アプリケーションが使う一時的なデータの置き場所や分散システムのデータ置き場
ベンチマークをしてみる
ボリュームの暗号化
- AES-256
- ハードウェア機能を使って暗号化するので、パフォーマンスに影響しない
- ほんと?というのを確認
fioで負荷をかけてiostat/vmstatでチェック
実際にグラフを見ると、IOPSはほぼ変わらない
- CPU使用率も殆ど差がない
典型的な構成例
小さいデータへのアクセスが多い場合
大きいデータへのアクセスが多い場合
- IOPSよりもスループットを重視
- シーケンシャルな場合も同様
- 無駄にIOPSを高めないようにするほうが、コストを抑えられる
低コストなストレージが必要な場合
- アクセス頻度が低い・パフォーマンスが不要な場合はマグネティック
極めて高いIOが必要な場合
- インスタンスストアを利用する
- OSやアプリケーションが必要とする大事なデータはEBSを利用する