在Linux上优先考虑写缓存而不是读缓存

时间:2014-10-27 16:36:45

标签: linux caching linux-kernel

我的电脑(带有4 GB的RAM)正在运行几个IO绑定应用程序,我想避免在我的SSD上尽可能多的写入。

在我设置的/etc/sysctl.conf文件中:

vm.dirty_background_ratio = 75
vm.dirty_ratio = 90
vm.dirty_expire_centisecs = 360000
vm.swappiness = 0

/etc/fstab中,我添加了commit=3600参数。

根据free命令,我的电脑通常会继续使用应用程序使用的1 GB RAM和大约2500个可用内存。因此,根据我的设置,我应该能够写入至少大约1500-2000 MB的数据,而无需在磁盘上实际写入。

我已经用适度写入(300MB - 1000MB)和freecat /proc/meminfo | grep Dirty命令完成了一些测试我注意到这些写操作通常会在一段时间之后(远远少于dirty_expire_centisecs时间),脏字节下降到0旁边的值。

我怀疑后续的读取操作会填满缓存,直到机器接近OOM条件并被迫刷新脏写,忽略我的sysctl.conf设置(如果我的假设错误,请纠正我)。

所以问题是:是否可能只禁用读取缓存(AFAIK不可能),或者至少更改pagecache替换策略,为写入缓存提供更多优先级,以便读取缓存不会强制写入刷新(可能调整内核)源代码...)?我知道我可以使用tmpfs或union-fs(如AUFS或OverlayFS)轻松解决这个问题,但出于很多原因我想避免使用它们。

抱歉我的英语不好,希望你理解我的问题。谢谢。

0 个答案:

没有答案