你能设置一个最小的 linux 磁盘缓冲区大小吗?

8 linux cache

我有一台相当老的 Linux 机器,有 2GB 的内存,没有交换,它运行得很好,系统使用每块未使用的内存进行缓存,效果很好。

然而,当我快要耗尽内存时(例如,分配了 >1950MB),它会变慢到爬行;我怀疑这是因为没有剩余的磁盘缓冲区。我知道 OOM 杀手很快就会生效,但它通常不会到达那里——它变得如此缓慢以至于加载速度达到 30-40,没有任何进程取得任何进展(因此不会分配更多内存),并且我必须重新启动它。

当我尝试杀死一个进程以使机器做出响应时,例如通过转到控制台(通过 Alt-F1,登录,然后执行“killall badprocess”),它通常可以工作,但我必须等待在用户/密码和获得提示之间大约 10 分钟 - 一直在有磁盘活动。

同样,没有交换,所以它没有交换——它只是颠簸,因为它没有剩余的缓冲区。

我将有 100MB 左右专门用于磁盘缓冲区,这会更早地触发 OOM 杀手(毕竟程序的内存更少),但另一方面会使机器始终响应。

有没有办法做到这一点?我一直无法找到执行此类操作的 /proc/kernel 或 /sys/vm 条目。

Nik*_*tis 1

查看/proc/sys/vm/min_free_kbytes。触发 oom-killer 的是可用千字节的限制。另外,最好检查日志中的关键字 oom-killer 以便了解正在杀死的内容{可能您不想杀死 ssh,最好重新启动它}