ファイルを上書きするのが新しいファイルを書き込むよりも遅いのはなぜですか?

ファイルを上書きするのが新しいファイルを書き込むよりも遅いのはなぜですか?

既存のファイルを順番に上書きすると、新しいファイルを書き込むよりもはるかに遅くなる可能性があることがわかりました。例:

mkdir del
cd del
fio --name=seqwrite --rw=write --ioengine=sync --bs=128KiB --size=10GiB  --fsync=10
echo "<- fio doesn't remove its temporary file, thus, compare with: "
fio --name=seqwrite --rw=write --ioengine=sync --bs=128KiB --size=10GiB  --fsync=10

2回目の呼び出しでは、パフォーマンスが約3倍低下する可能性があります。

理由は何ですか?


または、以前に実行せずに同じ効果を表示する--overwrite=1ために追加することもできます。また、非カバレッジテストを繰り返すときは、以前の一時ファイルをすべて削除することを忘れないでください。fiofio

ハードウェアRAIDコントローラ(バッテリ対応の書き込みキャッシュを含む)を使用してxfsとext4でそれらをテストしたところ、両方のファイルシステムで同様の効果が確認されました。つまり、新しいファイルを書き込むときの速度は約200〜260 MB / sですが、既存のファイルを上書きするときは速度が約70 MB / sにすぎません。


bonnie++オンラインで検索したときに、主に「書き換えられた」テストを含むレポートが見つかりました。また、これらのレポートは、通常、書き換えが遅いことを示しています。

ベストアンサー1

私はこれが断片化と解析のためだと思います。ファイルを含むセクタを解析して順番に上書きする必要がありますが、新しいファイルを作成すると連続したセクタブロックを割り当てることができます。

おすすめ記事