如何减少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/

相关内容