Ubuntu 22.04 附带systemd-oomd
默认启用的服务,每当我尝试使用大量线程/内存编译应用程序时,它都会“有用地”杀死我的 IDE 和/或终端。
关闭此功能或将服务配置为在我使用它们时不拍摄随机进程的正确方法是什么?
我知道我可以通过几种方式减轻这种行为;例如通过增加交换空间的大小,但这仍然不是灵丹妙药,因为:
OOM 守护进程会杀死整个进程树,因此即使是托管被杀死进程的终端也会突然消失;
OOM 守护进程会在不向用户提供任何通知的情况下终止进程树,因此用户所知道的是,他们的终端/IDE/应用程序托管的内存大进程突然消失了。
如果用户知道要查找什么,他们可以通过或类似的方式找出事后发生的journalctl
事情,但我认为普通的 Ubuntu 桌面用户不会想到这样做。
例如,通常当进程因致命信号或类似情况而崩溃时,崩溃报告者会告诉用户出了点问题。被OOM守护进程杀死的进程不应该有类似的设施吗?
编辑添加请求的输出重新:交换空间;据我所知,这些只是安装 Ubuntu 22.04 时设置的默认值。
$ free -h
total used free shared buff/cache available
Mem: 31Gi 5.2Gi 3.1Gi 210Mi 23Gi 25Gi
Swap: 2.0Gi 0.0Ki 2.0Gi
$ sysctl vm.swappiness
vm.swappiness = 60
$ swapon -s
Filename Type Size Used Priority
/swapfile file 2097148 792 -2
大多数
systemd
服务都可以通过该systemctl
实用程序进行管理。在这种情况下,我们要禁用该systemd-oomd
服务。这可以通过以下方式完成:您应该会看到类似的内容(取决于您的操作系统):
然后,您可以使用以下方法验证该服务是否已禁用:
然后你应该看到:
但是,其他服务可能会尝试重新启动该
systemd-oomd
服务。为了防止这种情况,您可以“屏蔽”该服务。例如:然后
systemctl is-enabled
现在应该报告:更多
man systemctl
详情见;特别要注意有关屏蔽systemd
服务的注意事项。对于 32G RAM,默认的 2G /swapfile 通常就足够了。但是,如果您正在运行一些需要大量内存的应用程序,或者拥有大量数据集,则可能需要进行更多交换,因此我们会将其从 2G 增加到 4G,看看是否有帮助。不要禁用 OOM。
注意
rm
:和命令的错误使用dd
会导致数据丢失。建议复制/粘贴。在
terminal
...编辑 /etc/fstab,使用
sudo -H gedit /etc/fstab
或sudo pico /etc/fstab
。在 /etc/fstab 中确认此 /swapfile 行...并确认没有其他“交换”行...在此行中使用空格...确认 NO TABS...
需要指出的是,systemd-oomd 不只是杀死 oom(内存不足和交换)——如果是这样,那可能没问题。它(也或完全地,不确定是哪个......)根据它认为过度交换活动(我在我的网站上找到的消息表明被杀死(gnome-terminal 的范围)“由于”(切片)“的内存压力”被杀死58.97% > 50.00% 超过 20 秒,有回收活动。”
我(在 Ubuntu 20.04 和 22.04 中也是如此)在我不在的时候整天运行一些垃圾,它逐渐交换了一些打开的 firefox 副本,当我回到家时,去使用 firefox,此时它有将其中的一些换回去。这很好,但是 system-oomd (这在升级到 Ubuntu 22.04 后的几天内发生在我身上两次)认为这不好,并用类似 8 的屏幕会话杀死了我的 gnome-terminal或 9 个 shell、VirtualBox、一些 s3ql 挂载等都在其下运行。我真的很担心我的升级中出现了问题,并且 gnome-terminal 等会自行崩溃,很高兴看到情况并非如此。感谢系统!无论如何,至少它很容易禁用!
编辑:仅供参考,我可以运行:
也是。它显然只是直接安装的,而不是作为 systemd 包的依赖项或类似的东西。
我遇到了与 hwertz 描述的非常相似的问题。Firefox 导致整个系统崩溃。
由于既没有增加交换也没有禁用/屏蔽 systemd-oomd 服务在我的系统上完成了这项工作,我想在这里添加我的解决方案。
就我而言,它是一个相当老的系统,配备 NVIDIA Geforce 9500 GT。该卡需要 Ubuntu 22.04 中不再包含的 340 驱动程序。从 20.04 升级后,我遇到了问题(没有登录屏幕,..),我不得不通过以下方式删除所有 NVIDIA* 包
使用nouveau很好地解决了登录问题,但触发了 Firefox 冻结。最后,我的旧系统上的问题解决方案是为 Ubuntu 22.04 获得一个工作的 340 驱动程序版本。
注意:我不确定全新安装是否也会发生这种情况。可能是由于从 20.04 升级导致系统配置错误