RDS の I/O クレジットを確認する方法があれば教えてください

2024.05.08

困っていた内容

ボリュームタイプ gp2 を利用している RDS において書き込み性能が急に低下したため、I/O クレジットの枯渇が発生したのではないかと考えています。I/O クレジットの増減について、どのような方法で確認することができますか?

結論

CloudWatch メトリクス EBSIOBalance% を確認することで、I/O クレジットの増減を把握することが可能です。

Amazon RDS の Amazon CloudWatch 使用状況メトリクス

メトリクス 説明 Applies to 単位
EBSIOBalance% RDS データベースのバーストバケットに残っている I/O クレジットの割合。このメトリクスは基本モニタリング専用です。メトリック値は、データベースファイルを含むボリュームのみではなく、ルートボリュームを含むすべてのボリュームの IOPS に基づいています。 すべて 割合 (%)

なお、ストレージサイズが 1,000 GiB を超える場合は、ベースライン IOPS パフォーマンスがバーストで発揮可能なパフォーマンスレベル (最大 3,000 IOPS) を超える為、常に一定のパフォーマンスを発揮することが可能です。

汎用 SSD ストレージ

1,000 GiB を超える gp2 ボリュームの場合、ベースラインパフォーマンスはバーストパフォーマンスよりも大きくなります。このようなボリュームの場合、ベースラインパフォーマンスが 3,000 IOPS バーストパフォーマンスよりも優れているため、バーストは関係ありません。

やってみた

1. ストレージタイプ gp2 をサイズ 30 GiB で作成

ストレージサイズが 30 GiB の場合、ベースラインパフォーマンスは 100 IOPS となります。
汎用 SSD ストレージ

gp2 ストレージのベースライン I/O パフォーマンスは、1 GiB あたり 3 IOPS で、最低 100 IOPS です。

2. CloudWatch メトリクス EBSIOBalance% が取得されていることを確認

RDS インスタンス作成後しばらくすると CloudWatch メトリクス EBSIOBalance% が取得されていることを確認できました。

3. マネジメントコンソール上でストレージサイズを 900 GiB へ変更

ストレージサイズを変更することでベースラインパフォーマンス(100 IOPS)を超えるディスク I/O を発生させて、バースト状態にします。

4. EBSIOBalance% の増減を確認

ストレージサイズの変更が完了するまでの間、一時的にベースラインパフォーマンスを超えるディスク I/O が発生したことでバースト状態になり、I/O クレジットが減少したことを確認できます。ストレージサイズの変更完了後はベースラインパフォーマンスを下回るディスク I/O となっている為、徐々に I/O クレジットが回復していることもメトリクスから確認できます。

まとめ

以前は、下記ブログに紹介されているように計算で求める必要があったのですが、メトリクスが提供されるようになって I/O クレジットの把握がかなり楽になりました。先人のブログを読むことでバーストに関する理解が深まると思うので、こちらもぜひご一読ください。

この記事がどなたかのお役に立てば幸いです。

参考資料