[アップデート] AWS Compute Optimizer が EBS の VolumeIOPSExceededCheck / VolumeThroughputExceededCheck メトリクスを分析対象に追加し、より正確なボリューム推奨を出せるようになりました
いわさです。
AWS Compute Optimizer は EC2 インスタンスや EBS ボリュームの CloudWatch メトリクスを分析して、リソースのライトサイジング推奨を提供してくれるサービスです。
EBS ボリュームについてはボリュームタイプ・サイズ・IOPS・スループットの推奨を出してくれます。
従来の Compute Optimizer は 5 分間隔の CloudWatch メトリクス(VolumeReadOps、VolumeWriteOps、VolumeReadBytes、VolumeWriteBytes など)の最大使用率をベースに推奨を生成しており、2024/10 に追加された VolumeIOPSExceededCheck と VolumeThroughputExceededCheck はしばらく考慮されていませんでした。
そのため、5 分平均では埋もれてしまう短時間のピークでプロビジョンド性能の天井に張り付いているケースを検知できず、Compute Optimizer が「IOPS やスループットを下げても大丈夫」と推奨してしまう可能性がありました。
これが先日のアップデートで、Compute Optimizer が VolumeIOPSExceededCheck と VolumeThroughputExceededCheck を分析対象に含めるようになりました。
これにより、バーストが発生するワークロードに対して、コストとパフォーマンスのバランスを取ったライトサイジング推奨が提供されるようになったとのことです。
なお、このメトリクスは Nitro ベースの EC2 インスタンスにアタッチされたボリュームが対象で、マグネティックボリュームやマルチアタッチが有効なボリュームでは利用できないとのこと。
今回こちらを確認してみたので紹介します。
実際に確認してみる
Compute Optimizer のコンソールから EBS ボリュームの推奨画面を確認してみます。
メトリクスが追加されていることを確認
まずは適当な EBS ボリュームの詳細画面を開いて、新しいメトリクスが表示されていることを確認します。
Compute Optimizer > EBS ボリュームの推奨事項から、対象ボリュームを選択して詳細画面を開きます。
「現在のリソース使用率」セクションに、従来からある読み取り/書き込みオペレーションや帯域幅のグラフに加えて、IOPS exceeded check と Throughput exceeded check のグラフが追加されています。

こちらのボリュームでは両方とも 0(超過なし)です。
特にパフォーマンスの問題がないボリュームでは ExceededCheck が検知されず、推奨もなし(Optimized)となっています。
IOPS の推奨が出ているケース
次に、IOPS exceeded check が検知されているボリュームを確認してみます。

こちらは IOPS exceeded check が 1 に繰り返し張り付いている一方、Throughput exceeded check は 0 です。
読み取りオペレーションが gp3 のベースライン 3,000 IOPS の天井に繰り返し到達しており、IOPS がボトルネックになっていることがわかります。
このボリュームに対して、Compute Optimizer は IOPS の引き上げを推奨しています。

スループットの推奨が出ているケース
続いて、Throughput exceeded check が検知されているボリュームです。

こちらは Throughput exceeded check が毎日 1 に達しており、読み込み帯域幅・書き込み帯域幅ともに 125 MiB/s の天井に繰り返し到達しています。
IOPS exceeded check は 0 のままなので、スループットだけがボトルネックです。
このボリュームに対して、Compute Optimizer はスループットの引き上げを推奨しています。

従来であれば 5 分平均のスループット消費量から判断していたため、バースト的に天井に張り付いていてもスルーされる可能性がありました。
今回のアップデートで ExceededCheck メトリクスが分析対象になったことで、このような瞬間的なボトルネックも適切に検知し、推奨に反映されるようになっています。
なお、今回確認したボリュームは毎日数時間にわたって天井に張り付いているパターンだったので、従来の 5 分平均ベースでも推奨が出ていた可能性はあります。
本領を発揮するのは、5 分平均では埋もれてしまうような短時間の瞬間的な超過が発生するワークロードの場合だと思います。
さいごに
本日は AWS Compute Optimizer が EBS ボリュームの推奨に VolumeIOPSExceededCheck と VolumeThroughputExceededCheck メトリクスを分析対象に追加したアップデートを確認してみました。
以前の記事で紹介されていた「Compute Optimizer の推奨をそのまま受け入れると、実は ExceededCheck が出ているのにダウンサイジングしてしまう」という課題が、今回のアップデートで解消された形です。
5 分平均では見えない 1 分粒度のボトルネックを Compute Optimizer が考慮するようになったので、推奨の信頼性がだいぶ上がったと思います。







