はじめに
AWS EC2には、T3,M4,C4など様々なインスタンスタイプがありますが、
ややクセがあるT系のインスタンスタイプについて理解が深まる機会があったので
そちらについて書いておこうと思います。
T系インスタンスとは
・T2インスタンス
T2 インスタンスは、ベースラインレベルの CPU パフォーマンスを提供するバースト可能パフォーマンスインスタンスで、ベースラインを超えるレベルにパフォーマンスをバーストさせる機能を備えています。
・ T3インスタンス
T3 インスタンスは、ベースラインレベルの CPU パフォーマンスを提供する次世代のバースト可能な汎用インスタンスタイプで、いつでも必要な時間だけ CPU 使用率をバーストさせる機能を備えています。T3 インスタンスはバランスの取れたコンピューティング、メモリ、およびネットワークのリソースを提供し、使用中に一時的なスパイクが生じる中程度の CPU 使用率を持つアプリケーション向けに設計されています。
以上が公式ドキュメントからの引用になります。
簡単に言えば、普段はしょぼい(ベースラインレベルCPU)けど
必要に応じてパワーアップ(バースト可能)できるよって理解でいいかと思います。
そこでパワーアップする際に重要になるのが「CPUクレジット」という考え方。
CPUクレジットとは
T系インスタンスは、
CPUスペック(ベースラインレベル)を超えてCPUを稼働させる(バースト)ことができ、
その処理の際にCPUクレジットが消費されます。
(100%のvCPU使用率の場合、1分間で1CPUクレジットが消費される)
CPUクレジットは、インスタンスが起動している間、1時間ごとに
おこづかいのように獲得できるものになります。
(t2.microの場合、1時間に6CPUクレジットがもらえる)
そして、インスタンスを停止した場合、
CPUクレジットの残高は引き継がれないためまた0からスタートになります。
(T3は7日間だけ維持され、その後0になる)
T系インスタンスでのパフォーマンスが出ない
つまり、このおこづかい(CPUクレジット)の獲得数より、消費数の方が
恒常的に多くなってしまっている場合、ベースラインのでの動作になってしまいます。
対応策としては2つ
①無制限(Unlimited)に変更する。
(T3はデフォルトで無制限になっています。変更も可能です)
②T系ではない、M系などのインスタンスタイプに変更する。
(よりCPUリソースを必要とする場合は、C系など)
①の変更方法
対象のインスタンスを選択した状態で、「アクション」→「インスタンスの設定」→「クレジット仕様の変更」の画面から「無制限モードを有効にする」にチェックを入れ保存します。
(T3の場合は、ここがデフォルトでチェックが入っている)
ただ注意点として、変更の画面にもありますが、
無制限になるということは、「おこづかいを前借り」しているような状態なので
前借りしている分の料金が追加で発生してしまうことに注意が必要です。
実際にモニタリングしてみた
起動したあとにstressコマンドで負荷をかけた状態がコチラ↓
CPU使用率が100%に達した、
やや後にCPUクレジット使用量が上がっているのがわかるかと思います。
CPUクレジットの残高は、起動した後から獲得されるため
最初はやや右肩上がりですが、CPU使用率が100%に達しはじめた18:15頃から
グングンと下がっている(CPUクレジットが消費されている)のがわかるかと思います。
まとめ
T系インスタンスを使っているときに、
恒常的にCPU使用率が100%に張り付くような場合は
インスタンスタイプの変更を検討しましょう。
引用