[新機能] Amazon EC2の「T2」ファミリーでT2 無制限(Unlimited)がリリースされました #reinvent

アイキャッチ AWS EC2

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

AWSチームのすずきです。

re:Invent2017期間中のアップデートにより、Amazon EC2の「T2」インスタンスファミリーで「T2 無制限」(Unlimited)の設定が可能となり、 バーストしたCPU性能を従量課金で利用可能となりました。

「T2 無制限」オプションを有効としたT2インスタンスを起動し、その動作を試す機会がありましたのでレポートします。

設定

新規

  • 新規で「T2」ファミリーのEC2インスタンスを起動する際に、「T2 無制限」(T2 Unlimited)の指定が可能となりました

既存インスタンスの変更

  • 起動済みの「T2」ファミリーのインスタンスに対し、「T2 無制限」(T2 Unlimited)の設定を変更する事も可能です。
  • 「T2」のスポットインスタンスでも、起動後に「T2 無制限」を設定可能です。

確認

設定後

動作確認

環境

  • リージョン : 東京(ap-northeast-1)
  • AMI : Amazon Linux AMI 2017.09.1 (HVM), SSD Volume Type (ami-da9e2cbc)
  • インスタンスタイプ : t2.xlarge
  • 「T2 無制限」(T2 Unlimited) 、無効(T2 Standard)でそれぞれ1台ずつ起動
  • CloudWatch 詳細モニタリングを有効化

確認方法

  • TachusPI を利用し、1000万桁の円周率計算を無限ループで実行、CPU負荷を発生させました
wget https://bellard.org/pi/pi2700e9/tpi-0.9-linux.tar.gz
tar xvfz tpi-0.9-linux.tar.gz

while :
do
  date
  ./tpi-0.9/tpi 10M | grep "Total time (base 10 result)"
done

結果

CloudWatchメトリック

  • 「T2 無制限」(T2 Unlimited)を有効としない従来のインスタンスは約30分でCPUクレジットが枯渇。リミッターが発動し、CPU使用率が抑制された事が確認されました。
  • 「T2 無制限」(T2 Unlimited)を有効とする事で、CPUクレジットの消費状態が継続、CPU使用率は100%が維持される事を確認できました。

CPU使用率

CPUクレジット

CPUクレジット残高

計算時間

  • 1000万桁の計算時間、「T2 Unlimited」(T2 無制限)の有無で比較しました。

「T2 Unlimited」(T2 無制限) 無効

  • CPUクレジット枯渇状態では、約5倍の性能低下が確認されました。
計測直後 (CPUクレジット枯渇前)
Total time (base 10 result) = 7.355 s
約40分後 (CPUクレジット枯渇中)
Total time (base 10 result) = 37.328 s

「T2 Unlimited」(T2 無制限) 有効

  • 性能低下なく処理が継続する事を確認できました。
計測直後
Total time (base 10 result) = 7.278 s
約40分後
Total time (base 10 result) = 7.299 s

まとめ

従来のT2インスタンス(T2 Standard)を利用したサーバでは、 想定外のシステム負荷によりCPUクレジットが枯渇した場合処理性能の低下を招く事がありましたが、 「T2 無制限」オプションの利用により回避できるようになりました。

平時の負荷は高くないものの、稀にCPU負荷が高い状態が発生しうるシステムで「T2」インスタンスを採用される場合、 「T2 無制限」を有効として利用する事をお薦めします。

また、オートスケールやスケジュール設定によるEC2インスタンスの増減を実現した負荷分散構成をとるシステムでも、 EC2の起動したタイミングによるCPUクレジット残量の違いに留意する必要が無くなります。

さらにオートスケールの台数(スケールアウト、イン)や、インスタンスタイプの選定(スケールアップ、ダウン)の決定にあたり、 バーストしたCPU消費を示すCloudwatchのメトリック(CPUSurplusCreditBalance)は有効に利用できると予想されます。 こちらを利用したオートスケールの最適化は、改めて紹介させて頂きたいと思います。