Buffer

如何減少可移動設備的 Linux 寫緩衝區?

  • July 2, 2016

在 Linux 上將內容寫入可移動設備(USB 記憶棒/HDD、SD 卡等)時,我經常會在最初的幾秒鐘內看到令人難以置信的寫入速度,有時大約為 GB/s(填充寫入緩衝區),然後是幾個幾分鐘的安靜(緩衝區實際被寫入設備)。

這是誤導。很難判斷實際的寫入速度。這很煩人(在刷新緩衝區時不能中斷程序)。它可能會導致 FS 損壞,並且至少在設備仍在寫入時拔下電源時會導致未寫入的內容。

就我而言,寫緩衝區似乎超過了 GB。有沒有辦法控制它?我想將其降低到更合理的值。

注意:這與文件系統記憶體無關,此效果也出現在原始設備上

注意:我不想完全禁用寫緩衝區

謝謝!

我找到了答案。預設情況下,64 位 Linux 維護一個大寫緩衝區(可用記憶體的 20%!)。(有趣的是,32 位 Linux 將自身限制為最多 180MB)要將臟緩衝區大小更改為例如 200MB,可以使用

echo 200000000 > /proc/sys/vm/dirty_bytes

使用一定百分比的RAM,例如1%:

echo 1 > /proc/sys/vm/dirty_ratio

更多資訊:https ://lwn.net/Articles/572911/

引用自:https://unix.stackexchange.com/questions/292024