SC1 または ST1 の EBS ボリュームが定格スループットパフォーマンスを達成できないのはなぜですか?
最終更新日: 2020 年 10 月 29 日
ST1 または SC1 の Amazon Elastic Block Store (Amazon EBS) ボリュームが、AWS ドキュメントに記載されているスループットパフォーマンスに達しません。なぜでしょうか?
簡単な説明
SC1 や ST1 などの HDD Amazon EBS ボリュームを使用する際は、以下の点に注意してください。
- これらのボリュームでは、インスタンスのワークロードで使用される実際の I/O サイズにかかわらず、常に 1024 KiB の I/O トークンを使用します。アプリケーションワークロードの実際の I/O サイズが 16 KiB に設定されていても、ボリュームは I/O トークンの 1024 KiB サイズ全体を使用します。この結果は、トークンのスペースの大部分が無駄になります。効率を最大化するには、1024 KiB すべてを使用するようにします。
- シーケンシャルワークロードの I/O サイズが 32 KiB を超える場合、Amazon EBS は I/O を常に 1024 KiB の単一 I/O オペレーションにマージします。このマージは、トークンのサイズ全体を満たします。
- I/O サイズが 32 KiB より小さい場合、またはワークロードがランダムである場合、Amazon EBS は I/O を 1024 KiB にマージしません。ただし、Amazon EBS は引き続き 1024 KiB のトークンサイズ全体を使用します。これにより、トークン内のほとんどのスペースは空のままになります。I/O がマージされないため、インスタンスはより多くの IOPS を使用して、同じ量のデータをボリュームに送信します。これにより、スループットがベースラインの値を下回っていても、バーストバランスが低下します。
解決方法
ST1 および SC1 の EBS ボリュームが最大定格スループットに到達できるようにするには、以下の手順を実行します。
- 32 KiB を超える I/O サイズを使用するようにアプリケーションを設定します。
- アプリケーションがシーケンシャルワークロードを使用していることを確認します。
例
スループットを計算するときは、以下の式を使用します。
スループット = I/O サイズ* × IOPS
I/O サイズが 32 KiB より小さい場合、ボリュームは IOPS 制限に達し、スループットが調整されます。このような場合、ボリュームは定格スループットパフォーマンスを達成することはありません。
たとえば、I/O サイズを 16 KiB に設定し、3 MiB/秒 のデータを送信すると、次のようになります。
3 MiB/秒/16 KiB = 192 IOPS
シーケンシャルワークロードまたは連続ワークロードで I/O サイズを 32 KiB に設定すると、Amazon EBS は 1024 KiB にマージされます。この場合、次の計算で示すように、Amazon は 3 IOPS のみを送信します。
3 MiB/秒/1024 KiB = 3 IOPS
ST1 ボリュームの 0.5 TiB (500 GiB) を使用しているとします。このボリュームは、理想的には 20 MiB/秒のベースラインスループットパフォーマンスを提供し、最大 125 MiB/秒のバーストが可能です。
ボリュームが 125 MiB/秒 でバーストしていて、アプリケーションの I/O サイズが 1024 KiB の場合、理論上の最大 IOPS は 125 IOPS になります。
スループット/I/O サイズ = 125 MiB/秒/1024 KiB = 125 IOPS
ただし、アプリケーションが 16 KiB の I/O サイズを使用する場合は、3 MiB のデータを送信すると 192 IOPS が使用されます。ボリュームは理論上の最大値 125 IOPS しか達成しないため、アプリケーションでは 192 IOPS をプッシュできません。この場合、ボリュームは IOPS を 125 にスロットリングします。このシナリオでは、実際のスループットは次のようになります。
実際のスループット = 16 KiB × 125 = 1.95 MiB/秒
上記の計算で示すように、IOPS は 125 IOPS にスロットリングされるため、Amazon EBS はスループットを 1.95 MiB/秒 にスロットリングします。このスロットリングは、アプリケーションが 1024 KiB の I/O サイズを使用している場合、ボリュームのバースト可能な理論上のスループットが 125 IOPS であっても発生します。