修正する
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ネオンuseredition-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 SSDドライブであり、正式な最大読み取り速度は555 MB/s
.だから、Windowsの数値が正しいようです。
答え1
残念ながら、あなたの質問に答えるのに十分な情報がありません。通常、実行の完全なfio出力を見て、実行中のfioのバージョンを理解する必要があります。これにより、到達した深さやLinuxの使用量などがわかります。ディスクがランタイム中にあると思います(たとえば、待ち時間がゼロに近い場合、これはほとんど常にキャッシュのシグナルです)。
おそらくdirect=1
ファイルが使用中のオプションをサポートしていないファイルシステムにあります。。何らかの理由でファイルが完全にキャッシュされ、キャッシュからファイルを再読み込みしている可能性があります。ファイルサイズがRAM全体よりはるかに小さい場合は注意してください。それはおそらくファイルに書き込まれていないので、ファイルがまばらであるか空であり、実際には「そこ」ではないからです(もう一度読む前に完全な書き込みを試してください)。
PS:thread
値は必要ありません(参照http://fio.readthedocs.io/en/latest/fio_doc.html#cmdoption-arg-thread)。