CPUクレジットを監視する
はじめまして、8月に入社いたしましたK・Tです。初めてブログを書く機会が回ってきましたので、T系インスタンス内でCPUに対して負荷のかかるコマンドやサービスを実行する際の注意点についてをまとめてみました。
注意点
先に書いてしまうのですが
T系インスタンス内でCPUに負荷のかかるコマンドを実行する際、CPUクレジットを多く消費してしまい必要な時にCPUクレジットが足りなくなってしまうという点です。CPUクレジットや監視についてを掘り下げながら解説していきます。
インスタンスタイプ
AWSには次のようなインスタンスタイプがあります。
- 汎用インスタンス
- コンピューティング最適化インスタンス
- メモリ最適化インスタンス
- 高速コンピューティングインスタンス
- ストレージ最適化インスタンス
T系インスタンスは、この中の汎用インスタンスに含まれます。
T系インスタンスの特徴
T系インスタンスは、ベースラインと呼ばれる1CPUに対してのCPU使用率が決められており、CPU使用率がベースラインを超える時にCPUクレジットと呼ばれるものを消費して、ベースライン以上のCPUを使用することが可能となります。この機能をバースト機能と呼びます。
また、上記の特徴を持つことから別名バーストパフォーマンスインスタンスと呼ばれます。
CPUクレジットの獲得と消費
獲得数
起動中のインスタンスは、継続的にCPUクレジットを獲得します。獲得数は
1 時間あたりの獲得クレジット数 =ベースライン使用率 (%) × vCPU 数 (個)× 60 (分)
で、割り出すことができます。
獲得数が消費数よりも多い場合、バーストしたときの為に貯蓄しておくことができます。
また、最大でいくつまで貯蓄ができるかはインスタンスサイズごとに異なります。
消費数
起動中のインスタンスは、CPU使用率がベースラインを下回っている場合でも継続的にCPUクレジットを消費します。消費するクレジット数は
1 分あたりに使用される CPU クレジット = vCPU 数 (個) × CPU 使用率 (%) × 1 分
で、割り出すことができます。
ベースライン
獲得するクレジット数から消費するクレジット数を引いて、0になるCPU使用率のことをベースラインと呼びます。
CPU使用率がベースラインよりも低い時
CPU使用率がベースラインより低い場合は、獲得数が消費数よりも多いため余った分を貯蓄することができます。
CPU使用率がベースラインより高い場合
CPU使用率がベースラインよりも高い場合は、獲得数が消費数よりも少ないため、高いCPU使用率を維持するために貯蓄したCPUクレジットも消費します。
この場合の注意点として、貯蓄したCPUクレジットを使い果たしている場合、CPU使用率がベースラインまで下がってしまい処理が重たくなったり、追加料金が発生する場合があります。
CPUクレジットの使用量や残高は、EC2のモニタリングタブでも確認をすることができますが、Amazon CloudWatchを使用して監視することもできます。
Amazon CloudWatchとは
AWSが提供しているリソースの監視、分析ができるサービスです。
使用している各リソースのCPU使用率やCPUクレジットの残高、メモリの使用量等の監視を行うことが出来ます。
Amazon Simple Notification Service (SNS)と呼ばれる通知用のサービスと組み合わせることで、今回のようにCPUクレジット残高が特定の値を下回った場合に指定したメールアドレスにアラート通知を送ることが可能です。
また指定したCPU使用率を超えた時はサーバの台数を増やし、落ち着いたときにはサーバの台数を減らす、といった事も出来る様になっています。
最後に
弊社では、CloudWatchを使用した監視設定、監視業務も行っております。
もし詳しく相談したいという方がいらっしゃいましたら、ぜひお待ちしております。