在 Unix 中从 OOM Killer 中排除用户

在 Unix 中从 OOM Killer 中排除用户

是否有办法将某些用户排除在 Unix 内存不足杀手之外?另一方面,我可以为用户设置优先级吗?

答案1

无法指示 OOM 忽略特定的用户进程。尽管您可以指示它忽略特定进程,并在此基础上构建一个循环,该循环将检查特定用户的所有进程并通过 cron 或您喜欢的任何方式更新它。循环本身看起来像这样:

while read r_pid ; do 
    echo -16 | sudo tee /proc/$r_pid/oom_adj ; 
done < <(pgrep -U Yoki)

您可以将其包装在脚本中并安排每分钟或您喜欢的任何时间间隔运行一次。

或者你可以完全禁用 OOM

sysctl vm.overcommit_memory=2
echo "vm.overcommit_memory=2" >> /etc/sysctl.conf

尽管根本不推荐这种方式,因为它可能会导致意外行为,例如内核恐慌或系统挂起。

相关内容