EC2インスタンス(T2)のCPUクレジットと落とし穴


2017/11/27時点
CPUクレジット残高について、仕様変更があったようです。
こちらをご覧ください。 https://forums.aws.amazon.com/ann.jspa?annID=5196

  • [有効期限]という概念がなくなったみたいです。
  • [CPUクレジットの増減 = 回復分 - 消費分 - 有効期限切れ分]だったのが、
    [CPUクレジットの増減 = 回復分 - 消費分]に変更された感じです。

AWSのEC2インスタンスを使っていますが、急激にLoad Averageが上がってしまうことが 何度かあり、その原因がどうやらCPUクレジット残高が0になったのが原因ということが ありました。 ここでは、そのCPUクレジットについてまとめます。

EC2インスタンス(T2)の性能

性能はインスタンスのタイプによりますが、ベースラインパフォーマンスは常に保つことが可能 です。下記の図にあるようにt2.microであれば、CPU使用率10%を保ち続けることが可能です。 しかし、10%を超えた状態が続くと、Load Averageがあがり、パフォーマンス低下を招くことになります。

インスタンスタイプ 初期CPUクレジット 1時間あたりに受け取るCPUクレジット vCPU ベースラインパフォーマンス(CPU使用率) 最大獲得CPUクレジットバランス
t2.nano 30 3 1 5% 72
t2.micro 30 6 1 10% 144
t2.small 30 12 1 20% 288
t2.medium 60 24 2 40% 576
t2.large 60 36 2 60% 864
t2.xlarge 120 54 4 90% 1296
t2.2xlarge 240 81 8 135% 1944

なぜ、パフォーマンス低下につながるかというと、T2インスタンスの性能がCPUクレジットで管理されていることにあります。 CPUクレジットがあれば、ベースラインパフォーマンス以上に上げることができ、CPUクレジットが0であれば、CPU使用率はベースラインの使用率に とどまってしまい、より負荷の高い処理ができなくなってしまうのです。

CPUクレジットの消費と回復

1つのvCPUがCPU使用率100%の状態を1分間続けるとCPUクレジットが1減ります。 もし、1つのvCPUでCPU使用率50%の状態を2分続けるとCPUクレジットが1減ります。

クレジットの回復については、上の表にある通り、インスタンスタイプによって変わります。 t2.smallであれば、1時間で12回復します。

ここで、t2.microであれば、CPU使用率20%を保ち続けることができると言ったのは、消費と 回復がうまいことイコールになるためです。
消費: 1つのvCPU, CPU使用率: 20%, 60分→12クレジットの消費
回復: 12クレジットの回復

落とし穴

しかし、この知識だけで、T2インスタンスを使ったサーバを運用すると痛い目に会います。

下記の図は、4/25 2:00からサーバA(オレンジ)をELBから除外し、4/26 2:00に再度ELBに登録した際のCPUクレジット残高の推移を表しています。

サーバAは4/26 2:00にELBに登録された後、サーバBと比較して、なぜ急激にCPUクレジットバランスが減少しているのでしょうか。

CPUクレジット残高の推移

サーバA(オレンジ)とサーバB(青)では、インスタンスタイプが同じであり、かつCPU使用率もだいたい同じでしたが、CPUクレジット残高の推移に差があります。

この差を説明するのがCPUクレジットの有効期限です。

CPUクレジット残高の有効期限

CPUクレジットには有効期限があり、それは24時間です。 つまり、回復したクレジットを24時間以内に消費しないと自動で失効してしまうのです。

急激にCPUクレジットが現象している方は、24時間以上負荷がかかっていないため、十分クレジットが溜まっていても、 いざそれを使うとなった段階では、そもそものCPU負荷によるクレジット消費 + 失効によるクレジット消費があるため、 通常よりも早いペースでクレジットが減ってしまったのです。

参考URL

Understanding Amazon AWS EC2 - t2 Instance type CPU Credits


おすすめ記事
© 2016-2017 Fridles All Rights Reserved.