Ubuntu 22.04 comes with the
systemd-oomd service enabled by default, which has been "helpfully" killing my IDE and / or terminals whenever I try to compile an application using an abundance of threads / memory.
What is the right way to either turn this off, or configure the service to not shoot random processes in the face while I'm using them?
I'm aware that I can mitigate this behavior in a few ways; e.g. by increasing the size of the swap space, but this is still not a panacea since:
The OOM daemon kills the entire process tree, so even the terminal hosting the processes that were killed will suddenly vanish;
The OOM daemon kills the process tree without providing any notification to the user, so all the user knows is that their terminal / IDE / application hosting memory-hungry processes has suddenly vanished.
A user could find out what happened post-hoc via
journalctl or something similar if they knew what to look for, but I don't think the average Ubuntu desktop user would think to do this.
As an example, normally when a process crashes via a deadly signal or similar, a crash reporter will tell the user that something went wrong. Shouldn't there be a similar facility for processes killed by the OOM daemon?
Edited to add requested output re: swap space; as far as I know these are just the defaults that were set when Ubuntu 22.04 was installed.
$ 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