Amazon EBS ボリュームの性能特性と構成方法を習得する! 松本大樹 (Matsumoto Hiroki) 2014 Amazon.com, Inc. and its affiliates. All rights reserved. May not be copied, modified, or distributed in whole or in part without the express consent of Amazon.com, Inc.
自己紹介 松本大樹 ( まつもとひろき ) エコシステムソリューション部部長パートナーソリューションアーキテクト 十数年 某ハードウェアベンダーにてエンジニアを経験 インフラを含め Oracle DB, Java EE, SAP などエンタープライズシステムを主に担当
Agenda Amazon EBSとは? 各 EBSの性能特性を見る General Purpose (SSD) をきちんと理解する Encrypt Optionについて AWS 上で どう構成すべきか まとめ
Amazon EBS (Elastic Block Store) とは?
Amazon EBS とは? Elastic Block Store EC2 EBS EC2 にアタッチして利用するブロックデバイスのストレージ OS やアプリケーション データベースなど 様々な用途で利用される S3 へのスナップショット機能なども備えている 99.999% の可用性を持つように設計されている
3 種類の EBS EBS Magnetic Volumes (Standard EBS) EBS Provisioned IOPS (SSD) Volumes EBS General Purpose (SSD) Volumes
EBS Magnetic Volumes [standard] 今までStandard EBSと呼ばれていたディスク 最も古くからあるEBS ベストエフォート型な性能のEBS 最も容量単価が安い $0.08 /GB/month $0.08 /100 万 IOリクエスト
EBS Provisioned IOPS (SSD) [io1] I/O 性能を保証する 1 年間の内 99.9% の期間は指定した I/O 性能の ±10% 以内の性能を保証 容量とプロビジョンする I/O 性能に課金される $0.142 /GB/month $ 0.074 /IOPS/month
EBS General Purpose (SSD) [gp2] 新しいルールの新しい EBS クレジット (Credit) という新しい考え方 負荷によって性能がバーストする 容量に応じて最低限の I/O 性能が確保される 容量 x3 の IOPS 性能がベースパフォーマンス 容量のみに費用が必要 $0.12 /GB/month
各 EBS の性能特性を見る
注意事項 セッションでは AWS の仕様を公開している訳ではなく 今回の為に実際に測定した検証結果を説明しています AWS の機能は ものすごい速度で次々と更新されていきますので 定期的に情報収集や性能測定を実施頂く事が重要となります
検証環境 - EBS 性能特性 c3.8xlarge FIO settings rw=[randrw, write, read] blocksize=[1k - 1m] size=10g directory=/ebstest direct=1 loops=1 numjobs=2 runtime=600 group_reporting EBS standard io1 gp2 c3.8xlarge I/O 帯域が最大性能を持つインスタンスタイプを選ぶ Amazon Linux 2014.03 File System : xfs EBS 各種 EBS タイプを利用 Tools FIO : version 2.1.5
I/O 性能とスループット I/O 性能 単位は IOPS (I/O per Second) 1 秒間当りに処理した I/O 数 Read( 読み取り ) も Write( 書き込み ) も含む スループット 単位は MB/sec や KB/sec など 1 行間当りに転送したデータ容量 Read( 読み取り ) も Write( 書き込み ) も含む
IOPS EBS の基礎性能 - Magnetic Volume Random Read/Write の負荷 MB/sec 250 Random Read/Write 30 200 150 100 50 25 20 15 10 5 性能に凸凹があり それほど安定していないことがグラフから読み取れる また数値でも最大で 230 IOPS 程度もしくは 25 MB/sec 程度であることが確認できる 0 0 Block size MB/sec IOPS
IOPS EBS の基礎性能 - Magnetic Volume Sequential Read の負荷 MB/sec 6,000 5,000 4,000 3,000 2,000 1,000 0 Sequential Read Block size MB/sec IOPS 100 90 80 70 60 50 40 30 20 10 0 ブロックサイズが小さい時は I/O 性能は最大で 4,000 IOPS を超え ブロックサイズが大きい時はスループットが 100MB/sec 近くまで出ていることが確認できる 多少の凸凹はあるが 性能はそれなりに安定していることが分かる
IOPS EBS の基礎性能 - Provisioned IOPS Random Read/Write MB/sec 4,500 4,000 3,500 3,000 2,500 2,000 1,500 1,000 500 0 Random Read/Write Block size MB/sec IOPS 160 140 120 100 80 60 40 20 0 4kB など小さいブロックサイズでは 4,000 IOPS でリミッターが掛かっている様な形になっている 128kB など大きなブロックサイズではスループット帯域が 130MB/sec 程度で頭打ちになっていることも確認できる
IOPS EBS の基礎性能 - Provisioned IOPS Sequential Read MB/sec 4,500 4,000 3,500 3,000 2,500 2,000 1,500 1,000 500 0 Sequential Read Block size MB/sec IOPS 160 140 120 100 80 60 40 20 0 Sequential Read は非常に特性が分かり易く出る ブロックサイズ 32KB まで 4,000 IOPS で頭打ちとなっている それ以降はスループットが 130MB/sec 辺りで頭打ちになり IOPS 性能が落ちているのが確認できる
IOPS EBS の基礎性能 - General Purpose Random Read/Write MB/sec 3,500 3,000 2,500 2,000 1,500 1,000 500 0 Random Read/Write Block size MB/sec IOPS 140 120 100 80 60 40 20 0 General Purpose (gp2) の容量を 1,000GB として 3,000IOPS 性能を確保した状態 他の EBS と同様に特性が出ており 3,000 IOPS および 130 MB/sec がリミットとなっているのが確認できる
IOPS EBS の基礎性能 - General Purpose Sequential Read MB/sec 3,500 3,000 2,500 2,000 1,500 1,000 500 0 Sequential Read 160 140 120 100 80 60 40 20 0 同じく General Purpose (gp2) の容量を 1,000GB として 3,000IOPS 性能を確保した状態 Random Read/Write と同様に特性が出ており 3,000 IOPS および 130 MB/sec がリミットとなっているのが確認できる Block size MB/sec IOPS
EBS 性能特性のまとめ Magnetic Volume Random アクセスでは数百 IOPS までで 性能安定性も弱い Sequential アクセスの場合は 条件によっては 100MB/sec 程度の性能が確認できた Provisioned IOPS/General Purpose Random, Sequential のどちらも安定した性能が出る 指定した IOPS か 130MB/sec の帯域のどちらかが頭打ちになるまで性能が伸びる
General Purpose (SSD) を きちんと理解する
General Purpose をもう少し詳細に SSD ベースの新たな EBS ボリュームタイプ ベースパフォーマンスとして 1GB あたり 3 IOPS を保証 100GB のボリュームの場合 300 IOPS 500GB なら 1,500 IOPS となる 1,000 GB なら 3,000 IOPS 固定となる 1EBS で最大 3,000 IOPS までバースト可能 システムの起動ボリュームや 短期的に読み書きが集中する場合に適する バースト可能時間は I/O Credit の残高とベースパフォーマンスに依存 ( 後述 ) シンプルな料金体系 1GB あたり 1 ヶ月 0.12 ドル ( 東京リージョン ) IOPS あたりの課金や I/O リクエストへの課金が無く 容量ベースの課金のみ 参考資料 :http://docs.aws.amazon.com/awsec2/latest/userguide/ebsvolumetypes.html
General Purpose の動きをきちんと理解する 容量 500GB と 100GB の gp2 ディスクを作成し負荷を掛けてみた 500GB は 1,500 IOPS 100GB は 300 IOPS のベースラインまで性能が落ちていることが確認できる
General Purpose の動きをきちんと理解する IOPS 初期状態で I/O Credit 残高は 5,400,000 再び高負荷が発生すると I/O Credit の残高に応じてバースト I/O Credit 残高 I/O Credit が残っている間はバースト 3000IOPS 出る 残高が 0 になると I/O 性能もベースパフォーマンスに戻る ベースパフォーマンス gp2 500GB 時 バースト中は I/O Credit の残高を取り崩す形となる 残高が 0 になるとバーストは終了 I/O 負荷がベースパフォーマンスを下回ると Credit が貯金される 分
General Purpose Volumes で RAID を組むと? I/O 負荷の開始 Credit が無くなる ベースパフォーマンスを維持 I/O 負荷を停止 I/O 負荷を再開 1EBS のみ Credit が無くなる ベースパフォーマンスを維持 1EBS のみに若干の負荷を掛け続ける
Provisioned IOPS と General Purpose のどちらが良いのか? Provisioned IOPS [PIOPS] 非常に高い I/O 性能を求められた場合は最適 1 年間の 99.9% が指定した IOPS の ±10% を実現する設計となっている 非常に I/O 性能が重要な高性能 高信頼性の大型のデータベースなど General Purpose [gp2] 短期的に高負荷が集中するようなシステム 中小規模のデータベースや大規模システムの開発 検証環境など OS のブートボリューム
Encrypt Option について
Encrypt Option とは? EBS ボリュームを暗号化する為のオプション 現状 暗号化キーは AWS が管理 全ての EBS タイプで利用可能 Snapshot も暗号化される 暗号化されたボリュームはアカウント間での共有は出来ない 現状ではルートボリューム ( システムボリューム ) への暗号化は出来ない 暗号化は物理ホスト側で実施する為 性能影響が少ない
検証環境 for Encrypt Option c3.8xlarge FIO settings rw=[randrw, write, read] blocksize=[1k - 1m] size=10g directory=/ebstest direct=1 loops=1 numjobs=2 runtime=600 group_reporting EBS io1 Encrypt = on c3.8xlarge Amazon Linux 2014.03 File System : xfs EBS Provisioned IOPS Encrypt Option を有効化 Tools FIO : verion 2.1.5
Encrypt Option( 暗号化 ) の影響 IOPS 性能について Encrypt Option を有効にしても 無効のボリュームと比較しても性能差は全くないことが確認できる
Encrypt Option( 暗号化 ) の影響 CPU 利用率について CPU 利用率に関しては暗号化を有効にした方が若干ながら CPU 利用率が高く 内訳としては Wait IO であった ただし僅かなのでそれほど慎重に考慮する必要は無いと思われる
AWS 上で どう構成すべきか
EC2 で考慮すべきポイント No EBS-Optimized EC2 normal EBS-Optimized EC2 EBS- Optimized EBS Network EBS Network EBS-Optimized を有効にすることで決まった帯域を確保可能 Instance Type が大きいほど使える帯域が広い Instance Type Dedicated EBS Throughput 16K blocksize IOPS C3.xlarge 500 Mbps (62.5 MB/sec) 4,000 C3.2xlarge 1,000 Mbps (125 MB/sec) 8,000 C3.4xlarge 2,000 Mbps(250 MB/sec) 16,000 C3.8xlarge 10Gbps (1,250 MB/sec) 80,000
どの位まで性能が出るのか? 24 本の EBS を利用して負荷を掛けてみました Provisioned IOPS: 4,000 IOPS x 24 EBS c3.8xlarge Provisioned EBS c3.8xlarge: 32vCPU, 60GB Mem, 10 Gbps network
本セッションのまとめ
構成時にどこをチェックすべきか? EBS Optimized を有効にしてネットワーク負荷と別に EBS 用の帯域をきちんと確保しているか アクセス特性に適した EBS の選択と構成をしているか EC2 必要なスループットと IOPS が満たせるディスク本数を構成しているか 必要な帯域を満たせるようなインスタンスタイプを選択しているか EBS Encrypt Option は必要か 価格面において最適な EBS を選択 そしてコスト計算をしているか
まとめ EBS の性能特性を実測結果を使って説明しました アクセスパターンや IOPS スループット性能などを考慮して最適な EBS を選択します EC2 についても要件に応じて適切なインスタンスタイプの選択や EBS-Optimized の利用などを選択します 性能面 コスト面 システム 運用要件などお客様の求める要件に最適な構成になるように 様々な AWS の機能をご利用ください
Special Thanks! 本セミナー用に EBS General Purpose 周りの検証を手伝いしてもらった Enterprise Solution Architect です Enterprise SA 小林正人
ご清聴ありがとうございました!