2017-08-28 1 views
-1
fio -numjobs=8 -directory=/mnt -iodepth=64 -direct=1 -ioengine=libaio -sync=1 -rw=randread -bs=4k 
FioTest: (g=0): rw=randread, bs=4K-4K/4K-4K/4K-4K, ioengine=libaio, iodepth=64 

IOPS:(8つのスレッドとiodepth = 64) - > 356、397、399、396、... しかしとき-numjobs = 1とiodepth = 64、IOPS - > 15873fio -numjobsが大きければ、iopsは小さくなります。その理由は?

I少し混乱を感じる。なぜ、-numjobsが大きければ、iopsは小さくなるのでしょうか?

答えて

0

正解は特定の設定によって異なるため、一般的な記述は難しいです。

たとえば、シーケンシャルスピードは公平であるがランダムアクセスが悪い安価なスピンSATAディスクがあるとします。無作為化するほどアクセスは悪くなります(各I/Oが処理されるレイテンシのために - https://people.eecs.berkeley.edu/~rcs/research/interactive_latency.htmlは3msがシークする必要があることを示唆しています)。したがって、64の同時ランダムアクセスは、最後のI/Oが処理される前に64個の異なる場所を探しているために悪いです。私が今では仕事の数を8にまで上げれば、64 * 8 = 512はもっと探求することを意味します。さらに悪いことに、実際にいつでもサービスを受けることができる同時I/Oが非常に多くあります。したがって、ディスクの同時I/O同時キューは完全にいっぱいになり、他のキューはバックアップを開始し、待ち時間は再び増加し、IOPSは低下し始めます。 sync=1はI/Oが完了したとマークされる前にI/Oを強制的に不揮発性のメディアに置かなければならないので、ディスクが「キャッシュに入っています。

これはあなたのケースでは起こっていないかもしれませんが、 "もし何か"のシナリオの例です。

関連する問題