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



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

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

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

  • 它执行多个顺序读取吗?(每个线程都被分配了一个文件偏移量,以从开始顺序扫描)

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

我试着阅读fio的开源代码,但我真的搞不清楚。

有人能给我一个主意吗?

遗憾的是,你的问题中没有包含作业文件,也没有说明你在哪个平台上运行

  • 是的,它可以进行多个顺序读取,但即使只有一个线程也不必这样做吗
  • 并不是每个线程都有自己的偏移量,但除非使用offsetsize,否则它们都将在同一个"区域"内工作

在Linux上,fio实际上默认为每个作业使用单独的进程,并且每个进程对于所使用的每个文件都有自己的文件描述符(对于使用文件的ioengine)。此外,一些ioengine(例如libaio、pvsync,但还有许多其他ioengine)使用系统调用,这些系统调用采用您想要对请求本身进行I/O的偏移量,因此即使它们共享描述符,它们的偏移量也不会受到使用同一描述符的其他引擎的影响。

如果使用同步ioengine,请fio使用线程而不是进程,并让这些线程在同一文件上工作,可能会出现问题。ioengine必须在进行I/O之前使用lseek,因此可能有机会让另一个线程的lseek在提交I/O之前偷偷进入。请注意,同步I/O引擎不是最新fio版本中使用的默认引擎。

也许fio邮件列表可以说明更多?

最新更新