Lightsailインスタンスの仮想1コアは、プランごとに等価ではない

シェアする

Voiced by Amazon Polly

Lightsailインスタンスは、内部的にはEC2のT2インスタンスと同一の性能を持ちます。
各価格レベルが、それぞれのT2インスタンスに対応します。最安のプランがt2.nano、直近で追加された16GBおよび32GBプランはそれぞれt2.xlargeとt2.2xlargeに該当します。

広告



同じ仮想コア数でも、使えるCPUの量が違う

T2インスタンスは、普段はCPU使用量が0に近く、必要な時は一時的に一気に火力を上げられる用途に設計されています。
もちろん許容量はプランごとに異なります。許容量に関しては、次の表がその例です。

インスタンスタイプ 1 時間あたりに受け取る CPU クレジット 蓄積可能な最大獲得クレジット* vCPU vCPU 別のベースラインパフォーマンス
t2.nano 3 72 1 5%
t2.micro 6 144 1 10%
t2.small 12 288 1 20%
t2.medium 24 576 2 20%**
t2.large 36 864 2 30%**
t2.xlarge 54 1296 4 22.5%**
t2.2xlarge 81 1944 8 17%**

詳細については、次のページを参考にしてください:https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/t2-credits-baseline-concepts.html

非常に乱暴な言い方をしますと「1 時間あたりに受け取る CPU クレジット 」がLightsailインスタンスで利用できるCPUの許容量になります。複数コアある場合は全コアの合計です。
単純計算では、t2.2xlargeはt2.nanoの27倍CPUを使用することができます。

何を意味するのか?

CPUの最大出力は確かに仮想コア数に依存します。しかし、その中での許容量がプランごとに違うわけです。
最安の512MBプランでは、平均CPU使用率を5%以下に抑えなければなりません。一方で、2GBプランでは平均20%まで許容されます。同じ仮想1コアでも、継続的に出せる性能に関しては4倍の開きがあります。

Lightsailでは表示されませんが、T2インスタンスのCPUクレジットの概念はしっかり残っています(CloudWatchでも見られない…)。CPUクレジットを使い切ると、強制的に性能をベースラインパフォーマンス(平均許容量)まで落とされます。
急にLightsailインスタンスのCPU使用率が高くなり、Stealの割合が高くなった場合はCPUクレジットが枯渇していることを意味します。CPU使用率を減らす策略を取るか、上位のLightsailインスタンスにアップグレードしてください。

起動してしばらくは、T2インスタンスは起動時のCPUクレジットを使用するため性能が落ちにくいです。これを理由として、数時間~数日経ってから問題が表面化することがあります。
平均CPU使用率が当該プランのベースラインパフォーマンスを超えている場合は、そのインスタンスでは処理性能不足です。上位のLightsailインスタンスにアップグレードするか、EC2の利用を検討してください。

終わりに

Lightsailは512MB、1GB、2GBのいずれのプランでも仮想1コアですが、使用できるCPUの量は512MBプランを1とした場合に次のようになります。1GBプランでは2、2GBプランでは4。
上位のプランに上げるとCPUを使用できる量が増えるため、仮想コア数が増えなくてもCPU負荷(≒%steal)の高さは上位プランにアップグレードする理由になります。
このCPUクレジットの概念が、マイニングのような過度に負荷をかける用途への使用を抑制しつつ、ウェブ用途のような瞬発的に処理性能を必要とするものには利用できるという仕組みになっているわけです。

でも、欲を言うと内部的にはT2インスタンスなのだからCPUCreditBalanceのメトリックも見せてほしいなあ…。