システムから受信した書き込み帯域幅値があり、BWを使用して書き込みIOPSを計算する必要があります。
Bandwidth = amount of data / second
http://rickardnobel.se/storage-performance-iops-latency-throughput/
上記のリンクに従って、次の式を観察しました。
Average IO Size * IOPS = Bandwidth
したがって、私の理解が正確であれば、平均IOサイズがあればIOPSを計算できます。
例:
平均IOサイズは4KB、帯域幅=32KB、
IOPS = Bandwidth / Average IO Size
IOPS = 32KB / 4KB
IOPS = 8
2つの質問があります。
1)正しいですか?
2) 定義によると、平均IOサイズ実行しているOSとアプリケーション/サービスによって異なるため、この平均IOサイズを取得する方法について詳しく説明できる人はいますか?これにより、IOPSを取得できます。
答え1
IOPS - 1秒あたりの入力/出力操作
したがって、実際には非常におおよその次のように推定できます。
帯域幅/(平均トランザクションブロックサイズ+通信オーバーヘッド)
すべてのチェックサムとプロトコルのカプセル化を含むペイロードは非常に大きくなる可能性があり、実際のI / Oトランザクションはハードウェアレベルでバッチ処理されるため、ソフトウェアの観点からこれらの操作は見えなくなります。
AHCIモードとPATAモードを比較すると、ATAコマンドセットをさらにカプセル化するだけで約2.5のオーバーヘッドが発生します。コマンドキューが同期しているため、追加のドライブヘッドの移動を最適化することはできません。一部のAHCI NCQ最適化が失敗する可能性があります。
SSDの場合、SSDはおおよそのデータのみを保存し、時間の経過とともにパフォーマンスが低下し、ハードウェアコントローラのIO実行計画を予測する必要があります。
最近では、ブロックデバイスで実際のIOPSを測定することはかなり面倒になりました。したがって、ブロックデバイスにIOPSカウンタのハードウェア実装がない場合、ソフトウェアレベルでそれを測定することは事実上不可能です。
おおよその推定について話している場合、NVMeコントローラIOPSの計算精度は現在約+/- 10K IOPSになります。