fio基准测试工具如何执行顺序磁盘读取?

时间:2017-01-17 01:18:43

标签: benchmarking

我使用fio来测试磁盘的读/写带宽。

即使是顺序读取测试,我也可以让它运行多个线程。

在顺序读取测试中运行多个线程意味着什么?

  • 是否执行多个顺序读取? (为每个线程分配一个文件偏移量以开始顺序扫描)

  • 多个线程共享文件偏移量吗? (每个线程使用由多个线程共享的单个文件偏移调用顺序读取)

我试着阅读fio的开源代码,但我无法弄明白。

任何人都可以给我一个想法吗?

1 个答案:

答案 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可以说更多?