【问题标题】:How fio benchmark tool performs sequential disk reads?fio 基准测试工具如何执行顺序磁盘读取?
【发布时间】:2020-01-06 07:53:05
【问题描述】:

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

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

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

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

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

我试图阅读fio的开源代码,但我真的无法弄清楚。

谁能给我一个想法?

【问题讨论】:

    标签: benchmarking disk


    【解决方案1】:

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

    • 是的,它会执行多次顺序读取,但即使使用单个线程也不必这样做吗?
    • 不是每个线程都有自己的偏移量,但除非您使用 offsetsize,否则它们都将在同一个“区域”内工作。

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

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

    也许fio mailing list 可以说更多?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-15
      • 2010-09-20
      • 2011-07-18
      • 1970-01-01
      • 2021-06-22
      • 1970-01-01
      • 2020-06-12
      • 1970-01-01
      相关资源
      最近更新 更多