【あいおーぴーえす】
IOPS とは?
最終更新:
💡 1秒に、何回の読み書きを処理するか
1秒あたりの入出力操作回数を表す指標。データ量を表すスループット、応答時間を表すレイテンシとの違いと、比較に必要な測定条件を解説します。
📌 このページのポイント
- Input/Output Operations Per Secondの略
- 回数のIOPSと、データ量のスループットは別
- I/Oサイズ、読書き、並列数などの条件を合わせて比較
- IOPSだけで、応答の速さやアプリの性能は決まらない
IOPSは、何を数えるの?
1秒あたりの読み書きなどの入出力操作の回数だ。例えば1秒に1,000回の操作を完了したら、その区間の観測値は1,000 IOPSになる。ファイル数や、利用者の操作回数そのものを数える指標ではないよ。
MB毎秒とは、何が違う?
MB/sやMiB/sは、1秒あたりに運ぶデータの量だ。同じ1,000 IOPSでも、1回が4 KiBなら約3.91 MiB/s、64 KiBなら62.5 MiB/sになる。図は同じ数え方と一定サイズを仮定した計算例で、製品の性能値ではないよ。
IOPSが高ければ、応答も速い?
必ずしもそうではない。多くの仕事を同時に処理して高いIOPSを出していても、個々の応答に時間がかかる場合がある。操作から完了までのレイテンシや、待っている要求の数も一緒に見よう。
どんな条件を比べればいい?
クラウドで設定したIOPSが出ないのは、故障?
それだけでは判断できない。例えばEBSでは、十分な要求がない場合や、データ量の上限、接続先インスタンスの帯域が先に限界になる場合もある。ボリュームのIOPS上限と、ほかの上限を分けて調べよう。
自分で測るには?
fioなどで仕事の条件を指定して測る方法がある。ただし書込みの試験は対象のデータを変更し得る。専用のテスト領域を用意し、条件と結果を記録して比べよう。カタログ値だけで、実際のアプリの応答を保証することはできないよ。
もっと詳しく知りたい人へ
IOPSは、どこで測っても同じ?
同じとは限りません。例えばEBSは、I/Oの結合や分割を行う場合があり、OS側とボリューム側で数える操作回数が違うことがあります。観測箇所と、1回の操作として数える条件を確認します。
キューを深くすれば、必ず速くなる?
同時に進めるI/Oを増やして性能を使いやすくなる場合はありますが、待ち時間との兼ね合いがあります。fioでも同期・非同期の方式によって設定の効き方が違います。高いIOPSだけでなく、必要な応答時間も満たすかを確認します。
まとめ:ざっくりこれだけ覚えればOK!
「IOPS」って出てきたら「1秒あたりの入出力操作回数を表す指標」と思えばだいたいOK!
📖 おまけ:英語の意味
「Input/Output Operations Per Second」 = 1秒あたりの入出力操作回数
💬 I/Oは入出力、Operationsは操作、Per Secondは毎秒です。実際に観測した値と、仕様の上限や設定した値を区別します。