我的电脑(带有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)和free
和cat /proc/meminfo | grep Dirty
命令完成了一些测试我注意到这些写操作通常会在一段时间之后(远远少于dirty_expire_centisecs
时间),脏字节下降到0旁边的值。
我怀疑后续的读取操作会填满缓存,直到机器接近OOM条件并被迫刷新脏写,忽略我的sysctl.conf
设置(如果我的假设错误,请纠正我)。
所以问题是:是否可能只禁用读取缓存(AFAIK不可能),或者至少更改pagecache替换策略,为写入缓存提供更多优先级,以便读取缓存不会强制写入刷新(可能调整内核)源代码...)?我知道我可以使用tmpfs或union-fs(如AUFS或OverlayFS)轻松解决这个问题,但出于很多原因我想避免使用它们。
抱歉我的英语不好,希望你理解我的问题。谢谢。