我使用fio来测试磁盘的读/写带宽。
即使是顺序读取测试,我也可以让它运行多个线程。
在顺序读取测试中运行多个线程意味着什么?
是否执行多个顺序读取? (为每个线程分配一个文件偏移量以开始顺序扫描)
多个线程共享文件偏移量吗? (每个线程使用由多个线程共享的单个文件偏移调用顺序读取)
我试着阅读fio的开源代码,但我无法弄明白。
任何人都可以给我一个想法吗?
答案 0 :(得分:1)
可悲的是,你没有在你的问题中包含一个jobfile,也没有说你正在运行什么平台。这是答案:
在Linux上,fio实际默认为每个作业使用单独的进程,并且每个进程都有自己的文件描述符(对于使用文件的ioengines)。此外,一些ioengines(例如libaio,pvsync,但还有许多其他)使用系统调用来获取您想要与请求本身进行I / O的偏移量,因此即使它们共享描述符,它们的偏移也不会受到其他人的影响相同的描述符。
如果您使用同步ioengine可能会出现问题,请让fio使用线程而不是处理并让这些线程在同一个文件上运行。 ioengine必须在执行I / O之前使用lseek,因此在提交I / O之前,可能有另一个线程的lseek潜入。请注意,同步I / O引擎不是最近fio版本使用的默认引擎。
也许--worktree-attributes
可以说更多?