[アップデート] Amazon OpenSearch Service のデータノードストレージ (gp3) における IOPS とスループットの上限が、ボリュームサイズに応じてより拡張されるようになりました

2023.07.06

いわさです。

Amazon OpenSearch Service のデータノードではストレージ構成をカスタマイズすることが出来ます。
まず、約 1 年前にストレージタイプに gp3 を選択出来るようになりました。

gp3 ではプロビジョニングされるストレージサイズに応じた IOPS とスループットが無料で提供され、有料で追加の IOPS とスループットをプロビジョニングすることも出来ます。

追加の IOPS とスループットを使ってもこれまでは 16,000 IOPs、1,000 MiB/s が上限でしたが、本日のアップデートで gp3 のプロビジョニングボリュームに応じて追加の上限が提供されるようになりました。

従来の gp3 のプロビジョニング制限は、大規模なデータ量や高い検索トラフィックを伴う一部のワークロードでは、パフォーマンスのボトルネックになることがありました。
Amazon OpenSearch Service では様々なストレージ要件に対処するために、ストレージ最適化インスタンスや UltraWarm データノードなどのオプションもありますが、新たなオプションとしてシンプルにデータノードの gp3 ストレージの性能を向上させることが出来ます。

ちなみに、OpenSearch Service では旧世代 EBS ボリュームタイプとされているプロビジョンド IOPS の場合も 16,000 IOPs が上限でした。

インスタンスタイプによって制限あり

今回のアップデートはストレージサイズが 3 TiB (3,072 GiB) を超えるごとに IOPS の上限が 16,000 IOPs、スループットの上限が 1,000 MiB/s 追加される仕様となっています。
注意点として、インスタンスタイプごとにサポートされている制限が適用されます。

例えば次のドキュメントによるとr6g.12xlargeの場合は、スループットの上限が 1,781.25 MiB/s で IOPS の上限が 50,000 と定められています。

また、ストレージサイズの上限については、Amazon OpenSearch Service 側でのインスタンスタイプ別の上限が設けられています。

例えばr6g.xlarge.searchの場合は gp3 のストレージサイズ上限がそもそも 3 TiB なので、今回のアップデートの恩恵を受けることが出来ません。
r6g.2xlarge.searchであれば 6 TiB が上限になるので、1 段階上限が拡張されます。

この 2 つの制限事項については予め認識しておいたほうが良いと思います。

r6g.12xlarge.search で拡張される様子

制限事項を踏まえてr6g.12xlarge.searchで試してみます。
なお、本アップデートは Amazon OpenSearch Service が利用可能なすべてのリージョンで利用可能となっており、今回は東京リージョンで確認しています。

まず、初期値かつ最小値の 10 GiB の場合ですが、上限は 5,000 IOPs - 1,000 MiB/s となっています。
また、gp3 の最低無料枠である 3,000 IOPs - 125 MiB/s が設定されています。このあたりはストレージサイズに応じた恩恵があります。

ストレージサイズを 3,072 GiB まで増やしてみました。
32 GiB ~ 3,072 GiB は上限が次のようになっています。従来はこれ以上上げても上限は変わりませんでした。

3,073 GiB に変更してみると、32,000 IOPS が上限となりました。今回のアップデート部分ですね。
また、スループットについては 2,000 MiB/s ではなく、インスタンスタイプ上限の 1,781 MiB/s となりました。先程制限事項で触れたとおりですね。
このあたりを踏まえたインスタンスタイプの選定も今後必要かもしれません。

上限の拡張は、ストレージサイズ 3,072 GiB ごとに段階的にガッと追加されます。
6,144 GiB までは 32,000 IOPs が上限になっていましたが...

6,145 GiB で一気に 48,000 IOPs まで拡張されました。スループットは既にインスタンスタイプ上限に達しているので増えていないですね。
ただ、無料枠については拡張され続けています。

最終的にrg6.12xlarge.searchのストレージサイズ上限である 24,576 GiB まで増やしてみましたが IOPS についてもインスタンスタイプ上限の 50,000 まで拡張されました。
ここまでストレージサイズをあげると追加の IOPS とスループットのプロビジョニング料金は発生せず、ストレージサイズ料金に含まれる無料枠でカバー出来る形になっていますね。

さいごに

本日は Amazon OpenSearch Service のデータノードストレージで gp3 のボリュームサイズに応じた IOPS とスループット上限が拡張されたので制限事項含めて確認してみました。

当然ながらストレージサイズや IOPS、スループットの追加プロビジョニングは料金が発生するので料金ページにて事前に試算は忘れないようにしてください。

Amazon OpenSearch Service のストレージのサイジングは、データノードの分散も含めてたくさんのオプションがあって複雑な部類だと思いますが、次のベストプラクティスも参照しつつ、今回新しい選択肢が加わったことを知っておいてもらえると良いと思います。