インフラ・運用見積もり
IOPSが高いのに転送が遅い?I/Oサイズをそろえたい
使うツール
SSDの仕様表ではIOPSが大きいほど速そうに見えます。でも、小さなデータを大量に読む仕事と、大きなファイルを順番に読む仕事では、同じ数字だけでは比べられません。IOPSは一秒あたりの処理回数であり、一回に運ぶ量を掛けて初めてデータ量になります。IOPS・スループット計算では、この関係を数値で確認できます。製品の実測性能を当てるのではなく、比較表の条件がそろっているかを見直すために使います。
10,000 IOPSを、4KiBで計算する
10,000 × 4 × 1024 = 40,960,000 byte/s
40,960,000 ÷ 1024² = 39.0625 MiB/sIOPSからスループットを求める方式で、IOPSを10000、平均I/Oサイズを4KiBにします。結果は40960000 byte/s、39.0625 MiB/sです。IOPSの10000をそのままMB/sと読むのではなく、1回4KiBという条件が間に入っています。入力した10000はカンマなしの整数、サイズ欄の4はKiBの単位として扱われることも確認します。
同じ結果を10進のMB/sで表せば40.96 MB/sです。39.0625と40.96の差は、速度が変わったからではなく、MiBとMBの基準が違うためです。仕様書のMB/sとツールのMiB/sを並べるときは、まずデータ容量・速度単位で同じ単位へそろえます。単位を省いた『約40』だけでは、比較の根拠を残せません。
回数は同じでも、64KiBなら16倍の量になる
10,000 IOPS × 64 KiB = 625 MiB/s
64 ÷ 4 = 16
625 ÷ 39.0625 = 16IOPSを10000のまま、平均サイズを64へ変えると625 MiB/sになります。一回の量が16倍なので、計算上の総量も16倍です。ただし、同じSSDが4KiBでも64KiBでも10000 IOPSを維持できると、この計算だけで分かるわけではありません。入力条件を変えたら、実際にその回数を維持できるかは別の測定で確認する必要があります。
製品Aの小さいI/Oでの最大IOPSと、製品Bの大きいI/Oでの最大MB/sを、そのまま順位付けしないようにします。読み取りか書き込みか、連続かランダムか、並列に何件発行したかなど、測定条件もそろえる必要があります。計算機に入っていない条件を、結果の数字が代わりに評価してくれるわけではありません。
必要な転送量から、必要IOPSを逆算する
100 MiB/s ÷ 4 KiB = 25,600 IOPS
100 MiB/s ÷ 64 KiB = 1,600 IOPS逆算方式へ切り替え、スループット100、単位MiB/s、平均サイズ4KiBを指定すると25600 IOPSです。64KiBなら1600 IOPSです。同じ転送量を満たすにも、小さい単位で何度も読む設計と、まとめて読む設計では必要回数が変わります。アプリの読み取りをまとめる改善を考えるときの、最初の目安になります。
ただし、不要なデータまで大きく読むと、回数が減っても総転送量が増える場合があります。平均サイズを大きくすること自体を改善の目的にしないでください。必要なデータ量、遅延、キャッシュの効き方を観測し、実際の処理で読み方を変えたときの差を確認します。ツールの逆算値は、処理をまとめれば必ず速くなるという保証ではありません。
平均I/Oサイズは、同じ期間の量と回数から求める
平均I/Oサイズが分からない場合、同じ観測期間の総byte数を総I/O回数で割れば、1回あたりの平均量を求められます。読み取りだけのbyte数に読み書き合計の回数を組み合わせると、平均が小さく見えてしまいます。異なる時間帯の最大値どうしを組み合わせることも避けます。分子と分母が同じ対象、同じ期間、同じ集計単位かを確認します。
アプリが一回発行した読み取りと、ストレージが一回として数えたI/Oが一致しない場合もあります。途中で分割されたり結合されたりするためです。クラウドのIOPS枠を見積もるなら、そのサービスがどの単位を一回として数えるかを公式仕様で確認します。この汎用計算機は、サービスごとの分割・課金ルールを自動で適用しません。
計算値は、ボトルネックの候補を整理するために使う
IOPS側の上限と、byte/s側の上限が両方ある構成では、先に届いた方が制約になることがあります。例えば計算上625MiB/sでも、別の箇所の転送上限がそれより小さければ、その速度を維持できません。逆に大きな転送上限があっても、小さなI/Oでは回数側の上限が先に効く場合があります。両方を同じ単位の表へ並べると、次に確認する条件を整理できます。
測定結果を共有するときは『10000 IOPSなら39.0625MiB/s』ではなく、『平均4KiB、10000 IOPSが持続する仮定では39.0625MiB/s』と書きます。実測か、仕様上の最大値か、計算上の仮定かも区別します。計算は簡単でも、前提を短く添えることで、製品選定や容量相談で数字だけが独り歩きするのを防げます。