「EBS (gp2) のクレジットの回復レートってどんなの?」の質問に即答できなかったので、書いておきます。 結論、数式としては
クレジット 0 -> Fullまでの時間 = 5,400,000(IO) ÷ ベースラインIOPS
となります。
概要と用語
簡潔に
- EBSは 3000 IOPSまでのバーストクレジットがある
- GBあたり 3 IOPSのベースラインIOPS ただし、 33.333GB ?(つまり 100IOPS以下)の場合でも最低100IOPS
- バーストの継続時間は、 3000IOPS と、ベースラインのIOPSの差に反比例する 言い換えると ベースラインが 3000IOPSに近ければ長く、遠ければそれだけ短い
- 1TB超の場合はベースラインが 3000IOPSとなるので、そもそもバーストしない
上記は理解できていると思います。 用語も改めて
- ベースラインIOPS = バーストなしで利用可能なIOPS上限
- バーストクレジット = ベースラインを越えるIOPSを利用した時に消費され、ベースライン以下のIOPSしか消費していなければ貯まる
公式ドキュメント
http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumeTypes.html
解説もなにもありません、この絵の通りです。 EBSはOS起動時にIOPSが派手に発生することを見込んで、CPUクレジットとは異なり、いきなり 5,400,000 クレジットから始まります。このクレジットを消費することによって、バーストします。
Volume size (GiB) | Baseline performance (IOPS) | Maximum burst duration @ 3,000 IOPS (seconds) | Seconds to fill empty credit balance |
---|---|---|---|
1 | 100 | 1862 | 54,000 |
100 | 300 | 2,000 | 18,000 |
214 (Min. size for max. throughput) | 642 | 2,290 | 8,412 |
250 | 750 | 2,400 | 7,200 |
500 | 1,500 | 3,600 | 3,600 |
750 | 2,250 | 7,200 | 2,400 |
1,000 | 3,000 | N/A* | N/A* |
3,334 (Min. size for max. IOPS) | 10,000 | N/A* | N/A* |
16,384 (16 TiB, max. volume size) | 10,000 | N/A* | N/A* |
上記抜粋表のの 1GB を見て下さい 単純な算数ですが 54,000 * 1000 = 5,400,000 となります。 100GBの場合、1GBの3倍のベースラインですので、54,000 / 3 = 18,000 となっています。
数学的な説明
5,400,000 という数字ですが、単位として示すなら 5,400,000 IO
(英語的にはIOsが正しいですが、紛らわしいので IOとします) と読み替えられます。算数の 速さ・時間・距離(地方によっては、は・じ・き と言うらしい)の関係のように、単位変換を式で表すと
まずIOPSは文字通り1秒あたりのIO数ですので IOPS = IO / 1sec とします。そのあと、Sec = 5,400,000 IO ÷ BaseLine IO / 1 sec
変換してSec = 5,400,000 IO × 1 sec / BaseLine IO
5,400,000 の IO
と 掛け算の分母である BaseLine の IO
が相殺されてSec = 5,400,000 / BaseLine
となります。