vm.dirty_ratioを0に設定すると、長期的な副作用がありますか?

vm.dirty_ratioを0に設定すると、長期的な副作用がありますか?

サムドライブを介してデータをコピーすると、サムドライブが2MiB / sより速い速度で書き込むことができないにもかかわらず、Linuxは最初に1秒以内に600 MBのデータをコピーします。ただRAMにキャッシュとして書き込んでから、300秒間ゆっくりとデータを更新します。この場合、キャッシュは実際にコピー速度を向上させません。

この動作を防ぐvm.dirty_ratioために0

これにより、私が書いたものはキャッシュなしでリアルタイムで作成されます。


これまでに発生した問題

  • SSDに書き込む速度は20 - 30MiB / sです(RAMディスクから$ HOMEに2 GBのデータをコピーするとき)!変更前は300MiB/sでした。

しかし、コピーした内容が記録され、メモリに何も残っていないことを確認できるので、データの破損を心配せずにコピーした直後にファイルを処理できるので、これは私にとって大きな問題ではありません!


dirty_ratioを無効にすると、長期的な副作用があるかどうかを知りたいです。私のシステムでは、SSD、HDD、およびサムドライブを使用しています。

IOスケジューラ(udevルールを使用して設定)は、回転していないすべてのディスクのMQ-Deadlineで、回転しているディスクのBFQです。


システムの詳細

コア:

Linux バージョン 5.8.12-xanmod1-1 (makepkg@archlinux) (gcc (GCC) 10.2.0, GNU ld (GNU Binutils) 2.35) #1 SMP PREEMPT Wed, 30 Sep 2020 14:19:49 +0000


編集する:

基準:

RAMディスクに新しいファイルを作成しました。

$ >/tmp/x ; xfs_io -c 'pwrite -S 0xa 0 1G' /tmp/x 
wrote 1073741824/1073741824 bytes at offset 0
1 GiB, 262144 ops; 0.2277 sec (4.392 GiB/sec and 1151213.5997 ops/sec)

ファイルには、0xa10またはASCIIにのみ変換される「\ n」のみが含まれています。

その後、それをインストールしてハードドライブにコピーしました。

  • dirty_ratioが20(デフォルト)の場合:
$ sudo mount /dev/sdb3 /mnt/ ; time sudo cp /tmp/x /mnt/ ; time sudo umount /mnt/ 

real    0m5.879s
user    0m0.013s
sys     0m0.392s

real    0m3.566s
user    0m0.002s
sys     0m0.060s
  • dirty_ratioが0の場合:
$ sudo mount /dev/sdb3 /mnt/ ; time sudo cp /tmp/x /mnt/ ; time sudo umount /mnt/ 

real    0m29.983s
user    0m0.006s
sys     0m0.600s

real    0m0.163s
user    0m0.000s
sys     0m0.052s
  • dirty_ratioが100の場合(ベースラインのみ):
$ sudo mount /dev/sdb3 /mnt/ ; time sudo cp /tmp/x /mnt/ ; time sudo umount /mnt/ 

real    0m0.408s
user    0m0.006s
sys     0m0.370s

real    0m9.050s
user    0m0.004s
sys     0m0.077s

ベンチマークによると、vm.dirty_ratioを0に設定するのは実際にははるかに遅いことがわかりました。

ベストアンサー1

このキャッシュがないと、HDDは書き込みを再構成できず、大規模な断片化が発生し、より多くの摩耗が発生します。

キャッシュをオフにする代わりに、オプションを使用してスティックをインストールできますsync

おすすめ記事