FIOは遅い書き込みを報告し、DDは高速書き込みを報告します。

FIOは遅い書き込みを報告し、DDは高速書き込みを報告します。

ほとんどのディスクベンチマークによると、シーケンシャル書き込み速度は通常読み取り速度に非常に近いです。私のものは〜500MB / sの範囲にあります。

$ dd if=/dev/zero of=tempfile bs=1M count=5120 conv=notrunc oflag=direct status=progress
5291114496 bytes (5,3 GB, 4,9 GiB) copied, 11 s, 481 MB/s
5120+0 records in
5120+0 records out
5368709120 bytes (5,4 GB, 5,0 GiB) copied, 11,1929 s, 480 MB/s

$ dd if=/dev/zero of=tempfile bs=1024M count=5 conv=notrunc oflag=direct status=progress
5368709120 bytes (5,4 GB, 5,0 GiB) copied, 11 s, 490 MB/s
5+0 records in
5+0 records out
5368709120 bytes (5,4 GB, 5,0 GiB) copied, 10,9524 s, 490 MB/s

ご覧のとおり、bs=1Mの場合、ddは480MB/s以上の平均速度を報告し、bs=1024Mの場合ddは490MB/s以上の平均速度を報告します。 (また、fioはddより読み取り速度が20-30MB / sより高いと報告します。これは興味深いですが、私にとっては問題ではありません。)

$ fio --ioengine=libaio --size=1024m --filename=$HOME/tempfile --direct=1 --loops=5 --name=test --bs=1m --rw=write
....
    write: IOPS=146, BW=147MiB/s (154MB/s)(5120MiB/34894msec); 0 zone resets

$ fio --ioengine=libaio --size=1024m --filename=$HOME/tempfile --direct=1 --loops=5 --name=test --bs=1024m --rw=write
....
    write: IOPS=0, BW=144MiB/s (151MB/s)(5120MiB/35458msec); 0 zone resets

ご覧のとおり、fioはbs = 1mの場合は約154 MB / sを報告し、bs = 1024 mの場合は151 MB / sを報告します。 (意外に数値が低いですね…)

fioがファイルをそんなに遅く転送する原因は何ですか?

(しかし、解決策を探している間、多くのユーザーは実際に自分の書き込みがfioが報告したのと同じくらい遅いと思い、書き込みがなぜそんなに遅いのかを理解するために質問することを発見しました。は読書速度の半分で、誰も間違っていることに気づいていないようです...だから問題は私よりも望ましくない副作用があります。

答え1

fioの著者は、違いの理由を次のように説明しました。dd私が使用するコマンドは0を書き、fioランダムなデータを使用することです基本的に。環境--zero_buffers=1この問題を解決しました。

fio --ioengine=libaio --size=1024m --filename=$HOME/tempfile --direct=1 --loops=5 --name=test --bs=1024m --rw=write --zero_buffers=1
....
  write: IOPS=0, BW=495MiB/s (519MB/s)(5120MiB/10339msec); 0 zone resets

そして

fio --ioengine=libaio --size=1024m --filename=$HOME/tempfile --direct=1 --loops=5 --name=test --bs=1m --rw=write --zero_buffers=1
....
  write: IOPS=474, BW=474MiB/s (497MB/s)(5120MiB/10798msec); 0 zone resets

今より近い結果が出ました。 (これらの結果はドライブの理論的最大書き込み速度の近似を示していますが、このオプションなしで(任意のバッファを使用して)テストすると、実際のI / Oパフォーマンスをよりよく反映する結果が得られることに注意してください。)

関連情報