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