[EBS] gp2のBurstBalanceが確認可能となったのでボリュームサイズ別に検証してみた

2016.11.12

はじめに

AWSチームのすずきです。

2016年11月10日のアップデートにより、 AWSのEC2用ブロックストレージ、EBS (Amazon Elastic Block Store) の CloudWatchメトリックとして、BurstBalance の利用が可能となりました。

New – Burst Balance Metric for EC2’s General Purpose SSD (gp2) Volumes

今回、1〜1000GiBまでのEBS(gp2)を用意し、最大IO発生時のバーストバランスと、性能変化を確認する機会がありましたので、 その内容を紹介させて頂きます。

環境情報

ec2

  • インスタンスタイプ : c4.xlarge (測定対象EBS毎に異なるインスタンスを用意)
  • OS : Amazon Linunx (amzn-ami-hvm-2016.09.0.20161028-x86_64-gp2 (ami-0c11b26d))

EBS

  • 1GiB, 10GiB, 100GiB, 1TiB のEBSボリュームをgp2で作成
  • 計測用のEC2インスタンスにそれぞれアタッチ

負荷発生

  • 計測用のEC2インスタンスでddコマンドを実行
  • EBS(gp2)の最大IOPS性能を出すため、ブロックサイズは小容量(512Byte)を指定

負荷発生コマンド

i=0
while :
do
  echo $i
  date
  time dd if=/dev/zero of=/dev/xvdb bs=512
  i=$(( $i + 1))  
done

測定方法

dstat

  • 計測環境でdstat コマンドを利用し、1分間のディスク転送とIO発生量を測定
dstat -c -d -r 60 1000

CloudWatch

  • AWSマネジメントコンソールで関連メトリックを確認

結果

CloudWatch情報

EC2画面

  • EC2→ボリュームを指定→モニタリング欄で、ボリュームバランス(パーセント)の確認が可能になりました

ebs-gp2-burst-balance-metric-04

負荷発生中(クレジット消費中)

  • 1〜100GiB のEBS は、30分 で、バーストクレジットが0%となりました
  • 500 GiB のEBS は、約1時間でバーストクレジットが0%となりました。
  • 1000GiBのEBSは、 バーストクレジットの変化はありませんでした。

ebs-gp2-burst-balance-metric-08

無負荷(クレジット回復中)

  • 500 GiB のEBSは 1時間でバーストクレジットが100%まで回復しました
  • 100 GiB のEBSは、1時間で約20%の回復でした
  • 1,10G GiBのEBSは、1時間で約6%の回復でした。

ebs-gp2-burst-balance-metric-07

500GiB EBSの遷移

  • dstatで測定された、io/total値が「VolumeReadOps」「VolumeWriteOps」に反映されており、バースト性能(3000IOPS)→ベースライン性能(1500IOPS)への半減を確認できました。

ebs-gp2-burst-balance-metric-09

dstat実行結果

1GiB

バースト性能
  • クレジットバランス枯渇前
----total-cpu-usage---- -dsk/total- --io/total-
usr sys idl wai hiq siq| read  writ| read  writ
  0   0  76  24   0   0|  11M   13M|2789   105
  0   0  76  24   0   0|  11M   11M|2877  87.8
  0   0  76  24   0   0|  11M   10M|2902  80.9
ベースライン性能
  • クレジットバランス枯渇後
----total-cpu-usage---- -dsk/total- --io/total-
usr sys idl wai hiq siq| read  writ| read  writ
  0   0  75  25   0   0| 394k  395k|98.5  3.27
  0   0  75  25   0   0| 394k  395k|98.4  3.17
  0   0  75  25   0   0| 394k  395k|98.5  3.20

10GiB

バースト性能
----total-cpu-usage---- -dsk/total- --io/total-
usr sys idl wai hiq siq| read  writ| read  writ
  0   0  75  25   0   0|  11M   12M|2846  99.0
  0   0  75  25   0   0|  11M   12M|2846  99.1
  0   0  75  25   0   0|  11M   12M|2845  98.9
ベースライン性能
----total-cpu-usage---- -dsk/total- --io/total-
usr sys idl wai hiq siq| read  writ| read  writ
  0   0  75  25   0   0| 394k  395k|98.4  3.10
  0   0  75  25   0   0| 394k  395k|98.5  3.27
  0   0  75  25   0   0| 394k  395k|98.4  3.17

100GiB

バースト性能
----total-cpu-usage---- -dsk/total- --io/total-
usr sys idl wai hiq siq| read  writ| read  writ
  0   0  74  26   0   0|  11M   12M|2847  98.7
  0   0  74  26   0   0|  11M   12M|2846  98.9
  0   0  74  26   0   0|  11M   12M|2846  98.9
ベースライン性能
----total-cpu-usage---- -dsk/total- --io/total-
usr sys idl wai hiq siq| read  writ| read  writ
  0   0  75  25   0   0|1533k 1195k| 306  9.58
  0   0  75  25   0   0|1181k 1194k| 295  9.43
  0   0  75  25   0   0|1181k 1195k| 295  9.50

500GiB

バースト性能
----total-cpu-usage---- -dsk/total- --io/total-
usr sys idl wai hiq siq| read  writ| read  writ
  0   0  75  25   0   0|  11M   12M|2848  98.9
  1   3  71  26   0   0|  12M   13M|3045   119
  0   0  75  25   0   0|  11M   12M|2846  98.8
ベースライン性能
----total-cpu-usage---- -dsk/total- --io/total-
usr sys idl wai hiq siq| read  writ| read  writ
  0   0  76  24   0   0|5905k 6100k|1476  47.8
  0   0  76  24   0   0|5887k 5578k|1472  43.6
  0   0  76  24   0   0|5970k 3568k|1492  28.1

1000GiB

バースト性能
----total-cpu-usage---- -dsk/total- --io/total-
usr sys idl wai hiq siq| read  writ| read  writ
  0   0  74  26   0   0|  11M   12M|2846  98.7
  0   0  74  26   0   0|  11M   12M|2846  98.8
  0   0  76  24   0   0|  11M   12M|2846  98.6
ベースライン性能
  • 省略(ベースライン性能とバースト性能が同一のため)

まとめ

EBS(gp2)のIO性能指針として重要なクレジットバランス、従来は直接確認する術がなく、 枯渇の事前検知にはスループット(読み取り、書き込み)の発生量から計算が必要、 クレジットバランスの枯渇を事前に知らせるCloudWatchのアラーム定義なども実装が困難でした。

今回のアップデートにより、CloudWatchでクレジットバランスの値が確認可能となった事で、 EBS(gp2)のボリュームサイズとIO性能の比率を簡単に確認する事が可能となりました。

クレジットバランスが枯渇しない範囲で、EBS(gp2)のボリュームサイズを適切に設定する事で、 予期せぬ性能低下の回避や、EBS費用の抑制が実現出来る可能性がありますので、 新しいCloudWatchメトリックご確認頂くことをお薦めします。

参考

バーストクレジットの警告アラームの設定

  • アラームはマネジメントコンソールのEC2、CloudWatchの画面にて設定可能です
  • EC2の画面では、以下よりアラームの作成が可能です。

ebs-gp2-burst-balance-metric-13

  • 通知先として、既存のSNSトピック、または新規SNSトピックの作成が可能です
  • 「バーストバランス」を判定条件とし、任意の閾値を設定します。

ebs-gp2-burst-balance-metric-12

EBS(gp2)のボリュームサイズ別の公称性能

ボリュームサイズ(GiB) ベースラインパフォーマンス(IOPS) 3,000 IOPS での最大のバースト期間(秒数) 空のクレジットバランスを補充する秒数
1 100 1862 54000
100 300 2000 18000
214 (最大スループットの最小サイズ) 642 2290 8412
250 750 2400 7200
500 1500 3600 3600
750 2250 7200 2400
1000 3000 該当なし* 該当なし*
3,334 (最大 IOPS の最小サイズ) 10000 該当なし* 該当なし*
16,384 (16 TiB、最大ボリュームサイズ) 10000 該当なし* 該当なし*

EBS(gp2,IO1)のボリュームサイズ別のEBS費用

ボリュームサイズ(GiB) gp2性能(ベースライン/バースト)IOPS gp2費用 io1費用(ベースライン相当性能) io1費用(バースト性能相当性能)
1 100 / 3000 0.12 $ - -
100 300 / 3000 12 $ 36.4 $ 236.2 $
214 (最大スループットの最小サイズ) 642 / 3000 25.44 $ 77.9 $ 252.39 $
250 750 / 3000 30 $ 91 $ 257.5 $
500 1500 / 3000 60 $ 182 $ 293 $
750 2250 / 3000 90 $ 273 $ 328.5 $
1000 3000 / 3000 120 $ 364 $
3,334 (最大 IOPS の最小サイズ) 10,000 400.8 $ 1334.78 $
16,384 (16 TiB、最大ボリュームサイズ) 10,000 2162.69 $ 3373.19 $
  • EBS費用は、AWSカリュキュレータを用い、AWS東京リージョン価格の定価を算出