[アップデート]T2インスタンスのCPUクレジットがより使いやすくなりました

2017.11.22

ご機嫌いかがでしょうか、豊崎です。

T2ファミリーのCPUクレジットについて嬉しいアップデートがありましたのでご紹介したいと思います。

New CPU Credit allocation policy for T2 instances
https://forums.aws.amazon.com/ann.jspa?annID=5196

前提知識

T2インスタンスの特徴としてCPUクレジットという考え方があります。

インスタンスサイズに応じて初期CPUクレジットを持っており、アイドル状態のときにCPUクレジットを貯めて、定められたベースラインを超えてのCPU性能を発揮させたい時はCPUクレジットを消費するという仕組みです。

詳細については以下を確認してください。

CPU クレジット 1 CPU クレジットは、1 CPU コア全体の 1 分間のパフォーマンスを表します。従来の Amazon EC2 インスタンスタイプはパフォーマンスが一定ですが、T2 インスタンスはベースラインレベルの CPU パフォーマンスを提供しながら、そのベースラインレベルを超えてバーストする機能を備えています。ベースラインパフォーマンスとバースト機能は、CPU クレジットにより管理されます。

http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/t2-instances.html#t2-instances-cpu-credits

アップデート前

今までのCPUクレジットには24時間の有効期限がありました。 また、CPUクレジットバランスが最大値まで貯まらないケースがありました。

例:t2.mediumの場合

インスタンスタイプ t2.medium
最大CPUクレジットバランス 576
1時間あたりの蓄積クレジット  24

※CPUクレジットが576貯まっているものとする

上記のインスタンスが一時的にバーストし20クレジット(2台のvCPUを100%の負荷で10分間実行)消費し、その後はCPU使用率が0%が保たれたとすると、 使用した20CPUクレジット部分が直近の24時間から外れるまで、最大CPUクレジットバランスは「556」に固定されていました。

イメージとしては以下です。

アップデート後

24時間での失効はなくなりました。CPUクレジットはEC2のTerminate、Stopが行われるまで有効期限切れにはなりません。
CPUクレジットバランスはCPU使用率がインスタンスごとに定められたベースラインを下回ると増加します。
CloudWatchのメトリクスとしては5分ごとに以下の計算式で取得されます。

CPUクレジットバランス = それまでのCPUクレジットバランス + (時間あたりの蓄積クレジット * (5/60) – CPUクレジット使用)

例:t2.mediumの場合

インスタンスタイプ t2.medium
最大CPUクレジットバランス 576
1時間あたりの蓄積クレジット  24

※CPUクレジットが576貯まっているものとする

上記のインスタンスが一時的にバーストし20クレジット(2台のvCPUを100%の負荷で10分間実行)消費し、その後はCPU使用率が0%が保たれた場合、 20クレジットを消費してCPUクレジットが556になったあと、24時間を待たずに2クレジット/5分が貯蓄されます。
(24 * (5/60) – 0)=2クレジット

このアップデートにより、24時間待たなくてもよくなり、今までより早くCPUクレジットバランスに到達します。

イメージとしては以下です。
※CPUクレジットの有効期限である24時間を考える必要がなくなるため、横軸は時間から最大クレジットバランスに変えています。

さいごに

アップデート前は常時(24時間)、10クレジットづつ消費しているような環境だと最大CPUクレジットバランスが「336」などになったりするわけで十分にCPUクレジットを貯められませんでした。 そのようなユースケースの場合、今回のアップデートによりCPUクレジットをより有効に利用することができるようになりました。t2シリーズがまたひとつ使いやすくなったと思います。 誰かのお役に立てれば幸いです。