2015年5月20日

General Purpose (SSD) Volumes を使うときの注意

General Purpose (SSD) Volumesをデフォルトで使ううよう勧められるため、ほとんどGeneral Purpose (SSD) Volumesばかり使っています。

しかしながらGeneral Purpose (SSD) Volumesには落とし穴があります。

ドキュメントを見てみましょう。
http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/EBSVolumeTypes.html#EBSVolumeTypes_gp2
ベースラインパフォーマンスの I/O レベルよりも高いレベルがボリュームで必要となる場合は、クレジットバランスの I/O クレジットを使用して、必要なパフォーマンスレベルまでバーストします(最大レベルは 3,000 IOPS です)。

I/O クレジットバランスが空になったらどうなりますか。

ボリュームがすべての I/O クレジットバランスを使用した場合、I/O デマンドがベースラインレベルを下回り、未使用のクレジットが I/O クレジットバランスに追加されるまで、ボリュームの最大 IOPS パフォーマンスはベースライン IOPS パフォーマンスレベル(ボリュームがクレジットを取得するレート)のままになり、スループットの限界はベースライン IOPS に最大スループットを乗算して 3,000 で除算した値まで下がります。

つまり8GBのEBSを使う場合、ベースラインである24IOPSを超える場合にはクレジットを消費します。
そして、クレジットが尽きた場合には24IOPSとなってしまいます。また、スループットも 128 * 24 / 3000 = 1.024 MiB/秒になります。
これはマグネティック ボリュームの平均 100 IOPS、最大スループット 40 ~ 90 MiB/秒よりも著しく小さいです。

こんなディスクでは使い物にならないですね。。。
スナップショットをとって新しいボリュームに作り直しましょう。
待つよりも初期クレジットをもらったほうが手っ取り早そうです。

各ボリュームは、初期 I/O クレジットバランス(5,400,000 I/O クレジット)を受け取ります。

継続的にIOが発生する場合にはもっとサイズを大きくするか、Provisioned IOPS (SSD)を使ったほうが良さそうですね。


ところで、General Purpose (SSD) Volumesにデフラグとかウィルススキャンかけたらどうなるんですかね。。。

0 コメント:

コメントを投稿