無限は言いすぎですね。すみません。
今回はEC2 汎用インスタンスである t2 インスタンスの「Unlimited」 モードについて調べたことをまとめていきます。
Unlimited モードとは
T インスタンスファミリーは、バーストパフォーマンスインスタンスとしてベースラインの CPU パフォーマンスを提供しながら、いつでも必要な時間だけ、能力をベースライン以上にバーストさせる機能を備えています。
雑な言い方をすると、「通常は性能を抑えた状態で起動しておいて、いざというときに100%の性能で稼働する(バーストする)」といったものです。
注意点として、バーストには「CPUクレジット」という考え方があり、このクレジットを消費するかたちでバーストを行うこととなります。
上記は「Standard モード」と呼ばれており、(お察しの通り)クレジットが枯渇してしまったらバーストが使えない(ベースライン稼働となってしまい著しくパフォーマンスが落ちる)ということになります。
そこで登場するのが「Unlimited モード」です。
Unlimited というオプションを有効化することによって、CPUクレジットが枯渇してもバースト状態を保つことができ、高いパフォーマンスを維持することができるようになります。
多少の追加コストは発生しますが、「CPUクレジットが枯渇してパフォーマンスが…」といった状況を避けれるのであれば利用価値はあるのではないでしょうか。(必要に応じてインスタンスのファミリーやサイズは見直す必要がありますが。)
- T3 インスタンスは、デフォルトで Unlimited モードとなっている
インスタンス起動時に Unlimited モードを有効化する
Unlimited モードでインスタンスを起動する方法は以下の通り。
インスタンスの起動(コンソール画面)
超簡単。起動前の設定項目でチェック入れておくだけです。
インスタンスの起動(AWS CLI)
aws ec2 run-instances \
--image-id ami-abc12345 \
--count 1 \
--instance-type t3.micro \
--key-name MyKeyPair \
--credit-specification "CpuCredits=unlimited"
run-instances コマンド実行時に –credit-specification オプションを指定することにより有効化が可能です。
既存インスタンスの Unlimited モードを有効化する
Standard モードで起動しているインスタンスをUnlimited モードに変更する方法は以下の通り。
設定の変更(コンソール画面)
こちらも超簡単。 [Actions] -> [Instance Settings] -> [Change T2 Unlimited] を選択するだけです。
現状の確認(AWS CLI)
aws ec2 describe-instance-credit-specifications \
--instance-id i-1234567890abcdef0
インスタンスID を指定して参照します。
設定の変更(AWS CLI)
aws ec2 modify-instance-credit-specification \
--region us-east-1 \
--instance-credit-specification "InstanceId=i-1234567890abcdef0,CpuCredits=unlimited"
–instance-credit-specification オプション内でインスタンスID を指定しつつ、CPUクレジットのモードも指定します。
アカウントのデフォルト設定として Unlimited モードを有効化する
- 対象アカウント内/リージョン内/インスタンスファミリーで、設定以降に起動するインスタンスデフォルト値を設定できる
- 既存の実行中または停止中のインスタンスのクレジット指定には影響しない
現状の確認(AWS CLI)
aws ec2 get-default-credit-specification \
--region us-east-1 \
--instance-family t2
インスタンスファミリーを指定してデフォルト設定を参照します。
設定変更(AWS CLI)
aws ec2 modify-default-credit-specification \
--region us-east-1 \
--instance-family t2 \
--cpu-credits unlimited
インスタンスファミリーを指定しつつ、–cpu-credits オプションでモードを指定します。
料金
Unlimited モードにより、CPU クレジットが枯渇した状態でもバースト状態を維持する場合には、vCPU 時間あたり 0.05 USD の追加コストが発生します。
- Unlimited モードを有効化していても、CPU 使用率がベースライン以下の場合は追加コストは発生しない
- 同様に、バースト中であってもCPU クレジットが枯渇していない状態であれば追加コストは発生しない
「バースト」について改めて
今回「Unlimited モード」について調べを進める中で、そもそも基本となる「Standard モード」に対する理解が不足していることを痛感しました。
ベースラインパフォーマンスを始めとする「バーストの仕組み」について理解を深めるにあたり、一番しっくりきたスマートキャンプさんのブログ記事を以下に紹介させてください。
私のように、バースト機能についてそもそもの理解が足りていないと感じている方がいらっしゃいましたらご一読いただければと思います。
私も改めて熟読しようと思います(まだ完全に理解したとは言ってません笑)
まとめ
『t2 インスタンスのUnlimited ってなんだっけ?』 という素朴な疑問から調べを進めてみると、何気に「バースト」 に関する理解も深まったので良かったです。
インスタンスタイプの選定については、なかなか奥が深い部分だと思っているので、引き続きインスタンスファミリーごとの特性について理解を深めていきたいと思います。
・[新機能] Amazon EC2 T系インスタンスの無制限モードをアカウントレベルで設定可能になりました | DevelopersIO
・【速報】高いパフォーマンスが継続できるT2 Unlimitedがリリースされました!! #reinvent | DevelopersIO
以上です。最後まで読んでいただきありがとうございました。
