当在 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