Free() As In Going To The Mattresses

July 18, 2022

If you’ve updated a mainstream Linux recently and it feels like everything is inexplicably crashy and unreliable when you’re trying to get anything of substance done, particularly on smaller machines, it’s not just you.

Fedora and Ubuntu have both started shipping with systemd-oomd – an unproven SystemD OOM-killer – turned by default, on the desktop versions of their products.

To break that incantation down – “single-user desktop machines run the system daemon out of memory daemon by default” – into what it means and explain how we got here would be an exercise in ritual humiliation that I have no inclination to pursue. A 17th-century grammarian two centuries too early for the light bulb might glance at that phrase and ask how the infernal ‘machine’ in question had become so thoroughly curse-ed that the word “daemon” is in there twice, and that would be an excellent question. Here in the 21st century it’s still an excellent question.

But in short, an “oom killer” is a program whose only job is to shut down – “kill” in the parlance of Unix – processes that are hoarding enough memory that the stability of the system is at risk. That is, when the whole system is out of memory, and one process is threatening to starve all the other processes out. The idea was born at a time when computers were insanely expensive, and it makes sense as a tool in exactly one setting: as a last line of defence on multi-user systems being shared by people doing work the system operators don’t care about at all.

A consumer desktop machine’s operator is also their sole user, and who almost certainly cares about no part of this computer’s operation at all but the work they’re doing. It is makes precise opposite of sense, and shipping an oom-killer at all – much less an unproven, buggy oom-killer – in that context was incredibly irresponsible. Prioritizing “system responsiveness” over literally whatever the human at the keyboard of the computer they own was working on at the time is an insult. It guarantees that the user experience of Linux will always be “it crashes at the worst possible time, every time”.

You can turn off systemd-oomd – I say again, “the system daemon out of memory daemon”, because nonsense unix-terminology salad is apparently just how we roll now – with:

sudo systemctl disable --now systemd-oomd

(you get down) followed by

sudo systemctl mask systemd-oomd

(and you stay down.)

Max Planck said, once upon a time, that science advances one funeral at a time. Maybe the Year Of Linux On The Desktop isn’t coming until people who grew up with phones take the reins from the people who grew up on mainframes. Maybe that’s already happened, and the Unix on the Desktop we’re stuck with is MacOS.