2017-08-28 68 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越小,原因是?

我感覺有點困惑。爲什麼-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必須在非易失性媒體上標記爲完成之前。

這可能不是你的情況發生的情況,但是是一個「假設」情景的例子。