コード日進月歩

しんくうの技術的な小話、メモ、つれづれ、など

AWSのインスタンスにおける バースト / クレジットの考え方をざっくりまとめる

クレジットを食いつぶす展開、とは何か。

出典

バーストパフォーマンスインスタンスの CPU クレジットとベースライン使用率 - Amazon Elastic Compute Cloud

バーストパフォーマンスとは

バーストパフォーマンスインスタンスに関して以下のように説明がある

T3、T3a、および T2 インスタンスを含むバーストパフォーマンスインスタンスは、ベースラインレベルの CPU パフォーマンスを実現するとともに、ワークロードの必要に応じて高いレベルまでバーストする機能を実現できるように設計されています。 - バーストパフォーマンスインスタンス - Amazon Elastic Compute Cloud

上記の記述にあるとおり、ベースラインレベルのCPUから高いレベルの機能を発揮できるのがバーストということになる

ベースラインのCPUパワーとクレジット

バーストを語るときにCPUクレジットの概念を考える必要がある。CPUクレジットとは以下のように説明されている。

CPU クレジットは、1 分間の CPU コア全体の使用率を 100% にします。その他の vCPU、使用率、時間数の組み合わせを CPU クレジットと同じにすることができます。たとえば、1 個の CPU クレジットは 1 台の vCPU を使用率 50% で 2 分間実行するか、または 2 台の vCPU を使用率 25% で 2 分間実行するのと等しくなります。 - バーストパフォーマンスインスタンスの CPU クレジットとベースライン使用率 - Amazon Elastic Compute Cloud

1分間100%のパワーを使うための単位が1クレジットです。そのため、CPUが2つあると、2クレジットないと100%の力を出せず、1クレジットの場合は各CPUが50%が限界となります。

クレジットの増加方法

クレジットと蓄積できるクレジットの最大値はインスタンスタイプによって追加のされかたが違います。

例えばt2系だと以下のようにドキュメントに記述されています

タイプ 60分あたり獲得できるクレジット 蓄積可能なクレジット vCPUの数
t2.micro 6 144 1
t2.small 12 288 1
t2.medium 24 576 2
t2.large 36 864 2

上記のようにクレジットが付与されるので60分間100%フルパワーを使うことはできないようになっている。

例えばt2.smallは60分あたりに12クレジットしか獲得できないので1時間あたり20%以上のCPUパワーを使うとCPUパワーが枯渇してしまう。このように順当に使うと使い切るのをベースライン使用率とドキュメントには記載がされている。

ただし、その代わり費用が低く、20%以下の時間帯があればクレジットを貯蓄することが可能となっている。

上記を踏まえバーストとは

そのためバーストパフォーマンスとはベースラインを超えたパフォーマンスを利用することであり、アプリケーションがベースラインパフォーマンスを常時使い続ける仕組みだと、バーストさせることはできない状態になる。そのため常に一定量使うようなアプリケーションではバーストパフォーマンスのインスタンスタイプが適正かは考えたほうがよいと思われる。

また、ピークタイムが存在するアプリでも蓄積量以上に瞬間消費が上回るとクレジットの追加分の補填が間に合わず、食いつぶしてしまう。そのため安定性を重視する場合はバーストパフォーマンスインスタンスを選択するのが最善なのかなどは考えたほうが良いと思われる。

参考リンク