web-dev-qa-db-ja.com

LinuxとWindowsでdiskspdとfioが奇数を生成するのはなぜですか?

[〜#〜] update [〜#〜]

Anonの回答のおかげで、ファイルシステムに問題があることがわかりました。NTFSを使用しました。以下は、FAT32を使用した結果です。

ウィンドウズ:

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 /秒-各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 neon 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

また、これは公式の最大読み取り速度が555 MB/sのSATASSDドライブであることにも言及したいと思います。したがって、Windowsの数値は正確であるように見えます。

2
AndyO

残念ながら、質問に答えるのに十分な情報がありません-実行からの完全なfio出力を確認し、実行しているfioのバージョンを知る必要があります。これは、達成された深度やLinuxがディスクをどの程度ビジーであるかなどを示すことができるためです。実行中だった(たとえば、レイテンシが0に近い場合、ほとんどの場合、キャッシュが発生していることを示しています)。

ファイルが存在するファイルシステムは、使用しているオプションでdirect=1をサポートしていません である可能性があります。何らかの理由でファイルが完全にキャッシュされていて、キャッシュから読み戻している可能性があります(ファイルサイズがRAMの合計よりも大幅に小さい場合は注意してください)。ファイルに書き込んでいないため、ファイルがまばらで空であり、実際には「そこに」ない可能性があります(読み戻す前に完全な書き込みセットを実行してみてください)...

PS:threadは値を取る必要はありません( http://fio.readthedocs.io/en/latest/fio_doc.html#cmdoption-arg-thread を参照)。

2
Anon