偶尔我的机器会出现内存不足的情况,忙于交换或诸如此类的情况,在此期间它没有响应(冻结),而重新获得控制权的唯一方法是使用 ++ 手动调用 OOMAlt杀手。SysRqF
有没有办法配置 Linux 机器,使非系统应用程序永远不会“破坏”整个系统?具体来说,我希望鼠标和窗口管理器始终响应。
例如,也许为系统进程保留资源?
答案1
禁用过度提交
通常情况下,过度承诺值/proc/sys/vm/overcommit_memory
设置为零,这允许进程“分配”比系统物理可用内存更多的内存。
# temporarily
echo 2 > /proc/sys/vm/overcommit_memory
echo 0 > /proc/sys/vm/overcommit_ratio
# permanently - /etc/sysctl.conf
vm.overcommit_memory = 2
vm.overcommit_ratio = 0
但有些应用程序可能无法启动。
永久调整服务的 OOM 分数
使用 systemd 时,为了保护服务不被 OOM 终止,请编辑服务文件 (參考)
systemctl edit syslog.service
并设置OOMScoreAdjust至 -1000
[Service]
OOMScoreAdjust=-1000
相反,为了将服务标记为 OOM-kill 的牺牲品,请将值设置为 1000。