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

Benchmarking fio基准测试工具如何执行顺序磁盘读取?,benchmarking,disk,Benchmarking,Disk,我使用fio测试磁盘的读/写带宽 即使对于顺序读取测试,我也可以让它运行多个线程 在顺序读取测试上运行多个线程意味着什么 它是否执行多个顺序读取?(为每个线程分配了一个文件偏移量,以便从中开始顺序扫描) 多个线程是否共享一个文件偏移量?(每个线程使用多个线程共享的单个文件偏移量调用顺序读取) 我试图阅读fio的开源代码,但我真的搞不懂 有人能给我一个主意吗?很遗憾,你的问题中没有包含作业文件,也没有说明你在哪个平台上运行。这里有一个答案: 是的,它可以执行多个顺序读取,但是即使使用一个线程

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

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

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

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

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

我试图阅读fio的开源代码,但我真的搞不懂


有人能给我一个主意吗?

很遗憾,你的问题中没有包含作业文件,也没有说明你在哪个平台上运行。这里有一个答案:

  • 是的,它可以执行多个顺序读取,但是即使使用一个线程,它也不必这样做吗
  • 没有,每个线程都有自己的偏移量,但除非您使用,否则它们都将在同一“区域”内工作
在Linux上,fio实际上默认为每个作业使用单独的进程,并且每个进程对于使用的每个文件都有自己的文件描述符(对于使用文件的ioengines)。此外,一些IOEngine(例如libaio、pvsync,但还有许多其他)使用系统调用,这些调用获取您希望对请求本身执行I/O的偏移量,因此即使它们共享一个描述符,它们的偏移量也不会受到使用相同描述符的其他方的影响

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

也许政府可以说得更多