小编Kev*_*hey的帖子

如何在 Ubuntu 22.04 中禁用 systemd OOM 进程杀手?

Ubuntu 22.04systemd-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
Run Code Online (Sandbox Code Playgroud)

systemd

36
推荐指数
2
解决办法
3万
查看次数

标签 统计

systemd ×1