如何減少Linux對可移動裝置的寫入緩衝區?

如何減少Linux對可移動裝置的寫入緩衝區?

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

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

在我的例子中,寫入緩衝區似乎超過了 GB。有辦法控制嗎?我想將其減少到更合理的值。

注意:這與檔案系統快取無關,這種效果也出現在原始裝置上

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

謝謝!

答案1

我找到了答案。預設情況下,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/

相關內容