One thing I obsess a little bit over is the fact that it’s 2026, we pretend that Linux is a serious OS, but we‘re still losing your data on a regular basis.

Out of memory conditions (OOM) are one of our biggest pain points, so I just did a quick experiment with macOS to see how they are handling OOM.

I loaded about 200 memory heavy tabs in Firefox and kept a close look at memory usage.

(1/4)

Once my 16 GB of memory were filled up, with a good extra amount saved thanks to compression, macOS just started creating swapfiles. Memory pressure went from the green to the yellow area, things got a little bit sluggish when switching to the oldest tabs, but no major slowdowns or freezes of multiple seconds.

The more tabs were open, the more swap files got created. At some point the disk would fill up though.

(2/4)

With about 200 MB of disk space left, Firefox froze completely, and at the same time a window popped up telling me that Firefox and a few other apps were frozen (not killed!!!) by the system.

The window prompted to either kill the app or resume it. Pressing resume, Firefox continued running smoothly for a few seconds, until it got frozen again. Pressing resume again, I could quickly close a few tabs, and things worked fine again.

(3/4)

@verdre Not claiming to understand the details here, but it sounds quite feasible to make the oom daemon freeze some memory heavy cgroup instead of killing it. In Wayland compositors like Mutter we'd already detect that a corresponding window is frozen and show a close/wait dialog - doesn't sound *too* difficult to me to hook up some APIs to detect that the process has been frozen for a reason and offer to resume it :/

@rmader yup, I think all the things necessary are quite doable. Systemd could also dynamically create/remove swapfiles based on memory pressure (IIRC this was even discussed at some point).

Probably the reason nobody does is that developers just don’t run into these issues, because they all get the beefiest machines with 64 gigs of ram :/

@verdre @rmader @fogti There is https://github.com/Tookmund/Swapspace but even it has some pretty nasty sharp edges
GitHub - Tookmund/Swapspace: A fork of Jeroen T. Vermeulen's excellent dynamic swap space manager

A fork of Jeroen T. Vermeulen's excellent dynamic swap space manager - Tookmund/Swapspace

GitHub
@dpk @rmader @fogti mmh interesting.. I guess this would be as far as you can get for the dynamic swap files if you want to avoid doing kernel work.