由于Anon的回答,我发现文件系统是错误的-我使用了NTFS。下面是使用FAT32的结果。
Windows:
diskspd64 -b128K -d5 -o32 -t1 -W0 -Sh -w0 cdm
508, 518, 520, 513, 513
fio --name=dontknow --ioengine=windowsaio --thread --size=1024m --bs=128k --time_based=1 --runtime=5s --iodepth=32 --numjobs=1 --rw=read --direct=1 --buffered=0 --startdelay=0s --filename=cdm
557, 557, 557, 558, 556
Linux:
diskspd -b128K -d5 -o32 -t1 -W0 -Sh -w0 cdm
529, 528, 529, 529, 529
fio --name=dontknow --ioengine=libaio --thread --size=1024m --bs=128k --time_based=1 --runtime=5s --iodepth=32 --numjobs=1 --rw=read --direct=1 --buffered=0 --startdelay=0s --filename=cdm
560, 560, 560, 560, 559
基于同一驱动器上相同的输入文件,这些是Windows上给定命令的读取速度(MB/s -我每次运行5次)的结果数字:
diskspd64 -b128k -d5 -o32 -t1 -W0 -S -w0 cdm
555, 555, 556, 556, 555
fio --name=doesntmatter --ioengine=windowsaio --thread=1 --size=1024m --bs=128k --time_based=1 --runtime=5s --iodepth=32 --numjobs=1 --rw=read --direct=1 --startdelay=0s --filename=cdm
561, 553, 562, 561, 558
和Linux (确切地说- KDE霓虹灯导航-20180802):
diskspd -b128K -d5 -o32 -t1 -W0 -Sh -w0 cdm
1800, 2000, 1925, 1891, 1973
fio --name=doesntmatter --ioengine=libaio --thread=1 --size=1024m --bs=128k --time_based=1 --runtime=5s --iodepth=32 --numjobs=1 --rw=read --direct=1 --startdelay=0s --filename=cdm
2637, 2826, 2593, 2770
我也想提到,这是一个SATA驱动器的官方最高读取速度的555 MB/s
。所以Windows的数字似乎是准确的。
发布于 2018-08-08 21:32:41
不幸的是,没有足够的信息来回答您的问题--通常需要查看运行过程中完整的fio输出,并知道您正在运行的是哪个版本的fio,因为这可以说明运行过程中实现了什么深度,以及Linux认为磁盘有多忙(例如,当延迟接近于0时,这几乎总是缓存发生的迹象)。
可能是文件系统不支持direct=1
使用它正在使用的选项。可能是由于某种原因您的文件被完全缓存,并且您只是从缓存中读取(当文件大小大大小于您的总RAM时,请注意这一点)。可能是因为你没有写到你的文件,它是稀疏的/空的,而且不是真正的“那里”(试着在你把它读回来之前完成完整的写).
PS:thread
不需要接受值(参见http://fio.readthedocs.io/en/latest/fio_Doc.html#cmdoption线程 )。
https://unix.stackexchange.com/questions/461328
复制相似问题