我遇到过几次这种情况 - 例如,在运行python
解析内存中大文件的程序时,或者Firefox
在许多 docker 容器运行时共享屏幕时 - Gnome 会进入我无法执行任何操作的状态,我必须重新启动计算机。
这种“我无法做任何事情的状态”并不是崩溃——我可以移动鼠标,如果有音频正在运行,音频就会继续运行——但我无法打开新终端,也无法在现有终端上输入任何内容。
我可以设置什么来强制 Ubuntu 留下足够的内存来运行 Gnome(例如打开终端、终止其他进程),即使另一个进程试图消耗机器上的所有内存?我希望另一个进程得到内存不足错误(它可以自己处理),即使它实际上没有消耗所有内存。
该系统具有 8GB 的 RAM 和 1GB 的交换空间。交换空间是交换分区,而不是文件。
问题的答案OOM 杀手不起作用提出了可能的原因和部分修复:如果vm.oom_kill_allocating_task
未设置为 1,则扫描系统以尝试找到要终止的进程可能需要很长时间才能成功,从而使系统无法使用。对该答案的评论表明vm.admin_reserve_kbytes
如果它有效,应该可以做我想做的事情,但不幸的是它显然没有。
我看到的显然是2014 年修复的一个错误那已经重新浮出水面。