「Amazon EBS パフォーマンスベンチマーク2015」講演メモ (AWS Summit Tokyo 2015) #AWSSummit

これまたメモったので、貼付けておきます。
間違い等あるかもしれませんが、その場合はごめんなさい。

Amazon EBS

  • EC2インスタンスにアタッチして使用するブロックレベルのストレージサービス
  • snapshotによりバックアップやディスクの暗号化機能を提供
  • 99.999%の可用性を備えるよう設計されている

EBSの特徴

  • 1GB単位で指定。最大16TB
    • マグネティックは最大1GB
  • AZ毎に独立、同一のAZからのみ利用可能
  • Snapshotからは任意のAZに復元・移動可能
  • EBSを複数のインスタンスから同時に使う(共有)ことはできない

アーキテクチャ

  • データはAZ内の複数のHWにレプリケートされる
  • 実態はネットワーク接続型のストレージ
  • セキュリティグループによる通信制御の対象外

ボリュームタイプ

  • ユースケースに応じて3種類から選択
    • 汎用SSD、Provisioned IOPS(SSD)、マグネティック
  • タイプに応じて性能特性や課金体系が変わってくる
  • Snapshotを経由する事で、ボリュームタイプや容量を変更できる

汎用SSD

  • デフォルトのボリュームタイプで費用対効果が高い
  • 一時的に3000IOPSまで引き上げるバースト機能を備える
  • 1GB〜16TB
  • 1GBあたり3IOPSを常時確保
  • 1TB以下の容量では、3000IOPSまでバースト、最大10000IOPS(3334GB以上のボリュームでは常時)
  • スループットは、最大160MB/s(214GB以上利用時)
    • 170GB以下では、128MB/s
  • バーストの継続時間は、I/Oクレジットの残高によって決まる
  • バーストが発生するとI/Oクレジットを消費、I/O負荷がベースパフォーマンスを下回ると、I/Oクレジットが蓄積

Provisioned IOPS(SSD) - PIOPS

  • 最もパフォーマンスの高いタイプ。1年間のうち99.9%の時間について、指定したIOPSのプラスマイナス10%の範囲の性能を発揮する。
  • 4GB〜16TB
  • 100IOPS〜20000IOPSで指定可能
  • 容量の30倍がIOPSの上限
    • 20000IOPS指定しようとすると、667GBの割当が必要
  • スループットは、320MB/s(1280IOPS以上)
    • 1IOPSあたり256KB/sのスループットを発揮する

マグネティック

  • 最もコストが安価な磁気ディスクタイプ。過去は、Standardという名称のデフォルトのボリュームタイプ
  • 1GB〜1TB
  • 平均100IOPS
  • 最大、数百IOPSへバーストできる場合がある
  • スループットは、40〜90MB/s
  • 唯一I/Oリクエスト回数による課金がある

パフォーマンスを律速する要素

  • EC2インスタンス側のスループット
  • EBS自体のI/O処理性能
  • 各EBSボリュームのスループットの上限

EC2インスタンス側のスループットを改善する

  • EBS最適化を有効にする
    • EBS最適化を有効にすることで、独立したEBS帯域を確保
    • 大きいインスタンスタイプほど使える帯域が大きい
  • インスタンスタイプによって決まるEBSスループットの上限値に到達していないか
    • CloudWatch
    • OSでiostatなど
  • 上限に達している場合は、インスタンスタイプを大きくすることで改善する

EBS側のI/O処理性能を改善する

  • EBS側の実績IOPSを確認する
    • CloudWatchとか、OSからiostatとか
  • 上限に達していればボリュームの変更を検討する
    • タイプやスペックの変更

EBSボリュームのスループットを改善

  • EBSボリュームにスループットを確認する
  • 上限に達していればボリュームの変更を検討する
    • PIOPS化する際は、平均ブロックサイズから必要値を算出

事前ウォーミング

  • EBSの各ブロックへの初回アクセス時に限り、IOPSが5%〜50%低下する
  • 事前ウォーミングを行う事で回避可能
  • 実運用時は難しいケースもあるので、要件から判断して実行可能であえば取り込む
    • Auto Scalingで起動したインスタンスなど
  • Linuxであれば、ddコマンドとかで
  • Windowsは完全フォーマットを使用

RAID構成

  • 単体のEBSのIOPSやスループットでは不足な場合、RAID構成を使う
  • RAID構成にすると、複数ボリュームのsnapshotの整合性に注意

パフォーマンス

  • c3.8xlarge
  • Amazon Linux 2015.3
  • FS: xfs
  • fio(2.15)を使用
  • 対象
    • 1.マグネティック
    • 2. 汎用SSD 3000IOPS
    • 3. 汎用SSD 10000IOPS
    • 4. PIOPS 4000IOPS
    • 5. PIOPS 20000IOPS
    • 6. 汎用SSD x6 (RAID0)

IOPS

※単位はIOPS

パターン 1. 2. 3. 4. 5. 6.
8KBランダム読込 211 3109 9980 4059 20274 54634
16KBランダム読込 206 3066 9564 3985 18992 44688
8KBランダム読書 329 3108 9975 4057 20274 54717

※4MBブロックの掲載は割愛。当然IOPSは伸びない。なぜならスループットの上限が先にあたってしまうから。

スループット

※単位はMB/s

パターン 1. 2. 3. 4. 5. 6.
8KBランダム読込 1.7 24.3 78.0 31.7 158.4 426.8
16KBランダム読込 3.2 47.9 149.4 62.3 296.8 698.3
4MBランダム読込 73.2 162.2 163.0 317.5 313.7 842.2
4MBランダム読書 52.5 162.2 163.3 317.6 314.4 846.4

インスタンスストア

  • 追加コスト無しで、インスタンスストアが使える
  • 実体はEC2の物理ホストのローカルディスク
  • インスタンスを停止するとデータが消去される。再起動では消去しない
  • 一時的なデータ置き場や、分散FSとか

インスタンスストアの性能特性

  • 条件
    • i2.8xlarge
    • Amazon Linux 2015.3
    • FS: xfs
    • 800GB SSD x8 (RAID0)
    • fio(2.15)を使用
  • ランダム読み込みで、最大40万IOPSとEBSと比較して高いパフォーマンスを発揮
  • スループットは最大3.5GB/s
  • ランダム読み書きでも、最大35万IOPSを発揮

ボリュームの暗号化

  • AES-256による暗号化処理
  • AWS Key Management Serviceで鍵を管理
  • ハードウェア機能を使って処理するので、暗号化有無はパフォーマンスに影響しない
  • 汎用SSD(10000IOPS、20000IOPS)で、実際にパフォーマンスを計測しても、IOPS値もCPU使用率もほとんど変化無し

小さいデータへのアクセスが多い場合

  • 必要IOPSが得られるようEBSを構成する
  • ブロックサイズが小さければ、スループットがボトルネックになることは少ない

大きいデータへのアクセスが多い場合

  • シーケンシャルアクセスが多い場合も、IOPSよりもスループットを重視する
  • IOPSをおさえることで、費用削減が可能

低コストなストレージが必要な場合

  • アクセス頻度が低いデータやハイパフォーマンスが必要ないデータは、マグネティックに保存
  • 大容量が必要な場合は、RAID構成を取る

極めて高いI/O性能が要求される場合

  • EBSでは処理しきれないパフォーマンスが必要な場合は、インスタンスストアを利用する
  • 永続化が必要なものは可能な限り、EBSに保存する
    • インスタンスストアはStop(停止)すると、データが失われてしまう




まとめ


クラウドAMAZON EC2/S3のすべて (ITpro BOOKs)

クラウドAMAZON EC2/S3のすべて (ITpro BOOKs)