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

How fio benchmark tool performs sequential disk reads?

我使用 fio 来测试 read/write 我的磁盘带宽。

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

运行在顺序读取测试中使用多个线程是什么意思?

我试图阅读fio的开源代码,但我实在想不通。

谁能给我个主意?

遗憾的是,您没有在问题中包含工作文件,也没有说明您 运行 在哪个平台上。以下是答案:

  • 是的,它执行多个顺序读取,但即使是单个线程也不必这样做吗?
  • 不是每个线程都有自己的偏移量,但除非您使用 offset and size 它们都将在同一个 "region".
  • 内工作

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

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

也许 fio mailing list 可以说更多?