fio 基准测试工具如何执行顺序磁盘读取?
How fio benchmark tool performs sequential disk reads?
我使用 fio 来测试 read/write 我的磁盘带宽。
即使是顺序读取测试,我也可以让它运行多线程。
运行在顺序读取测试中使用多个线程是什么意思?
是否执行多次顺序读取? (每个线程都分配了一个文件偏移量以开始顺序扫描)
多个线程是否共享一个文件偏移量? (每个线程使用多个线程共享的单个文件偏移调用顺序读取)
我试图阅读fio的开源代码,但我实在想不通。
谁能给我个主意?
遗憾的是,您没有在问题中包含工作文件,也没有说明您 运行 在哪个平台上。以下是答案:
在 Linux 上,fio 实际上默认为每个作业使用单独的进程,并且每个进程对于每个使用的文件都有自己的文件描述符(对于使用文件的 ioengines)。此外,某些 ioengines(例如 libaio、pvsync,但还有许多其他引擎)使用系统调用来获取您想要对请求本身执行 I/O 的偏移量,因此即使它们确实共享描述符,它们的偏移量也不会受到影响其他人使用相同的描述符。
如果您使用同步 ioengine 可能会出现问题,要求 fio 使用线程而不是进程,并让这些线程在同一个文件上工作。该 ioengine 在执行其 I/O 之前必须使用 lseek,因此在提交 I/O 之前,另一个线程的 lseek 可能有机会潜入。请注意,同步 I/O 引擎不是最近 fio 版本使用的默认引擎。
也许 fio mailing list 可以说更多?
我使用 fio 来测试 read/write 我的磁盘带宽。
即使是顺序读取测试,我也可以让它运行多线程。
运行在顺序读取测试中使用多个线程是什么意思?
是否执行多次顺序读取? (每个线程都分配了一个文件偏移量以开始顺序扫描)
多个线程是否共享一个文件偏移量? (每个线程使用多个线程共享的单个文件偏移调用顺序读取)
我试图阅读fio的开源代码,但我实在想不通。
谁能给我个主意?
遗憾的是,您没有在问题中包含工作文件,也没有说明您 运行 在哪个平台上。以下是答案:
在 Linux 上,fio 实际上默认为每个作业使用单独的进程,并且每个进程对于每个使用的文件都有自己的文件描述符(对于使用文件的 ioengines)。此外,某些 ioengines(例如 libaio、pvsync,但还有许多其他引擎)使用系统调用来获取您想要对请求本身执行 I/O 的偏移量,因此即使它们确实共享描述符,它们的偏移量也不会受到影响其他人使用相同的描述符。
如果您使用同步 ioengine 可能会出现问题,要求 fio 使用线程而不是进程,并让这些线程在同一个文件上工作。该 ioengine 在执行其 I/O 之前必须使用 lseek,因此在提交 I/O 之前,另一个线程的 lseek 可能有机会潜入。请注意,同步 I/O 引擎不是最近 fio 版本使用的默认引擎。
也许 fio mailing list 可以说更多?