如何让FIO使用多个线程重放跟踪

时间:2016-10-28 05:19:36

标签: linux multithreading io workbench

我正在尝试使用fio重播一些块跟踪。

我写的作业文件如下:

[global]
name=replay
filename=/dev/md0
direct=1 
ioengine=psync

[replay]
read_iolog=iolog.fio
replay_no_stall=0 
write_lat_log=replay_metrics
numjobs=1

这里的关键是我想使用“psync”作为ioengine,并重播iolog。 但是,使用psync,fio似乎忽略了“replay_no_stall”选项,它忽略了iolog中的时间戳。

通过将numjobs设置为4,fio似乎可以制作相同工作负载的4个副本,而不是使用4个线程来分割工作负载。

那么,如何使用psync使fio尊重时间戳,并使用多个线程重放跟踪?

1 个答案:

答案 0 :(得分:0)

如果没有看到iolog本身的小问题片段,我不能说为什么重播总是尽可能快。请注意等待是在毫秒秒内,并且如果后者要产生效果,则必须在iolog中连续等待(因为它们相对于作业本身的开始而不是相互之间或以前的I / O)。有关详细信息,请参阅HOWTO的“跟踪文件格式v2”部分。对于fio邮件列表来说,这个问题听起来是一个很好的问题(但是因为这是一个问题,请不要把它放在bug跟踪器中)。

numjobs is documented as only creating clones in the HOWTO所以您的体验与记录的行为相符。

可悲的是,fio重播目前(2016年底)不能以单个重播文件可以在多个作业之间任意分割的方式工作,并且您需要多个作业才能让fio使用多个线程/进程。如果您不介意在作业之间丢失I / O顺序这一事实,您可以将iolog拆分为4个部分并创建一个使用每个新的iolog文件的作业。