fio -numjobs更大,iops会更小,原因是什么?

时间:2017-08-28 02:06:02

标签: disk disk-io

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 - > 15873

我感到有点困惑。为什么-numjobs更大,iops会更小?

2 个答案:

答案 0 :(得分: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必须在非易失性媒体上被标记为已完成

这可能不是您的案例中发生的事情,而是“假设”情景的一个例子。

答案 1 :(得分:0)

我认为您应该在fio命令上添加'--group_reporting'。

  

group_reporting   如果设置了该选项,则在指定numjobs时显示按组报告,而不是按职位显示。