Comment by stillpointlab

18 hours ago

This gripe (that I literally crashed out on recently after maining Fedora for the first time) is top of my list for annoyance/frustration with Linux as a desktop.

I now have btop permanently running in a Terminal and I habitually Alt-Tab to it to watch my swap. As soon as my free memory gets less than 1 Gb I kill any Firefox tabs (the memory black hole).

I know this won't be popular, but Linux people have some kind of Stockholm Syndrome on this. They tell you all of the obscure configuration files you have to edit, the additional programs you install. They insist that just having the OS kill a random program to save the DE is a good plan. It's the typical "your holding it wrong" mantra.

I run both Windows and MacOS and have done so for decades. I cannot remember the last time I had a hard freeze like I get on Fedora. On the exact same box running Windows I was able to have VS Code, Chrome with 15+ tabs, terminals, docker, etc. all running with zero issues. On Fedora I have a handful of Terminals and Firefox with less than ten tabs and nothing else running and I have to watch btop like a hawk.

The excuses people make are mind bending, and the shifting of blame from the system onto the user is shameful.

Which OS are you using? systemd-oomd (or similar) afaik is enabled in many modern releases and fixes it. The default settings (on Arch) make it kill stuff when your CPU is spending 60% of time on reclaiming memory over some time period. So you'll get 20 seconds of lag, then it is fixed.

By killing a program, yes, but how else do you expect it to work? If your RAM is not enough you have to kill stuff. And I really doubt you mean to say that Windows is _more RAM efficient_ than Linux, because that's kind of absurd. Maybe Firefox is less RAM efficient than Chrome.

Edit: MacOS I wouldn't doubt being better in RAM management than the others because they have been selling their devices with ridiculously low amounts of RAM for decades.

  • > how else do you expect it to work

    How does it work on Windows and MacOS where I don't get the same freezes and random programs aren't killed by the OS? Because I'd expect it to work like that.

    There is this false dichotomy, a black and white kind of thinking on display.

    > And I really doubt you mean to say that Windows is _more RAM efficient_ than Linux

    What I'm saying ought to be clear to anyone willing to listen. My system should not get into an unrecoverable freezing state when I am doing routine tasks on a fresh install of an OS. And the community that is supposed to champion this OS should not then shift the blame to me if I complain about it.

    • "How does it work on Windows[..]"

      This video from Mark Russinovich is a classic explaining it. It is old but still relevant.

      https://m.youtube.com/watch?v=AjTl53I_qzY&ra=m

      "My system should not get into an unrecoverable freezing state[..]"

      There is a good precedent for what you want: Safety critical embedded systems. Your car ECU should not be in an unrecoverable freezing state when you want to break.

      These embedded systems also are known to be terribly memory inefficient because every bit of memory is statically assigned and never reused.

      So, it is not that what you want is impossible, it's just wasteful and expensive.

      Linux and Windows sit on slightly different points on this spectrum (opposite of said embedded systems) and what you perceive as Windows' better behavior under memory pressure has a price too.

      1 reply →

    • I get memory related freezes on macOS all the time.

      And back when I was forced into running Windows, I used to get memory-related freezes daily. Literally daily.

      So I’m really not convinced the situation is drastically different there. I mean if it were that simple, Linux would have fixed it already.

      3 replies →

  • macOS shows a modal with a list of offending applications and how much RAM they're using. Some of those applications are "paused", marked in red, some are "not responding", and some are responding normally.

    You can pick applications from that list and choose between "Resume" (for "paused" applications) or "Force Quit".

    At no point the system becomes unresponsive.

  • Freeze as many applications as necessary to reserve room for the DE so I can choose what to do?

    Surely that's obvious to other people aside from me. It's an attended system, not a headless server in a rack hundreds of miles away that must not ever alert someone.

  • The ideal would be to go into swap without becoming unresponsive, so that the user can quit a program of their choice to free memory. If you really want to make an issue out of it, do something like pre-X macOS, where it would provide a warning when you are getting close to running out of memory, so that a user might have the chance to do something before the current process starts getting swapped out.

    • > The ideal would be to go into swap without becoming unresponsive, so that the user can quit a program of their choice to free memory.

      Linux already does this. The issue is when your swap is full too, or you’ve exhausted your RAM at such a rapid pace that the disk IO cannot keep up with the read and writes to swap.

      I’ve seen Windows choke under the same conditions too.

      > do something like pre-X macOS, where it would provide a warning when you are getting close to running out of memory, so that a user might have the chance to do something before the current process starts getting swapped out.

      This is where the desktop and the kernel being entirely separate organisations (not even projects, but literal organisations) makes things a touch harder. And those DEs aren’t even Linux specific either. So any tooling would have to portable (which, in fairness, should be possible with POSIX in this particular scenario).

      I think KDE does provide tools here for gracefully handling memory constraints. But that’s just one desktop environment of many.

      1 reply →

    • Swap is extremely slow. And if running it on a high-end NVMe, you better hope you don't swap often.

  • Linux can, and does, prevent a program to claim any new memory. Like literally malloc() returns null. How program reacts to that is up to the program.

    Also I know linux has `cgroup_enable=memory` setting in /etc/default/grub, that's for Docker/K8S to be able to watch over containers RAM. It's not enabled by default as it slows down OS a little. Don't know if it's related to my first point.

Same problem I've had. On a 24GB MacBook Air, I can have a VMWare VM, Lima and an IDE and a bunch of Chrome tabs loaded and the system is fluid.

Meanwhile if I try something similar on a 32GB Linux system, it will sputter or outright freeze. Suspend the system at 16GB used and on wakeup it takes 15 seconds to get back to full responsiveness.

Yes, some of this can be addressed with swappiness settings, however that behavior isn't partically clear and doesn't take into account that depending on your workflow on a given day (e.g. coding then video editing) different swap behaviors may be more optimal. Nor does it help for people who are trying to get good productivity out of a 16GB or lower system.

The one thing that has helped is moving to Brave Origin. Whether that's loading less JS ad SDKs or general optimization, it does seem to use a lot less ram than Edge/Chrome.

Possibly not a solution for your use case, but I use earlyoom[0]. When memory crosses a threshold value, it will kill the worst offender. Has some knobs to tweak: what threshold level you want, which programs to keep safe, which to prioritize, etc. Never had to touch the configuration, out of the box has been sufficient for me.

I use it when I am doing exploratory work and might materialize something too big. It has always killed the Python process or terminal program which did something silly.

[0] https://github.com/rfjakob/earlyoom

The Linux Desktop people have been singing the song of "works for me" for decades, which is as long as they've been unable to crack double digit users.

  • Who should do it for you? If anyone wants they can submit a patch for it.

    The Linux world is a different kind of beast. I too went through the same motions as many newbies but at some point I just stopped complaining and started fixing what I didn't like.

    If you start screaming for corporate money which should fix things that's another can of worms, corporate doesn't really do good will, they are usually buying control whenever they pour money into a project. Which can become tricky for Linux.

    • "Works for me and if it doesn't work for you, just fix it." Great, I should learn to become a kernel and device driver developer just to have a working desktop environment with non-tearing windowed video (still somehow an issue)?

      What a fucking joke lmao. I'll just keep buying Macs.

      > Who should do it for you?

      People who want me to use it.

  • I mean, I'm to blame at the moment as well. I'm putting up with it because I don't want to use Windows, mostly because I'm doing a lot of agent dev and I saw them struggle in a Windows environment. And there is a little spite driving me since Windows 11 is full of ads and I felt like it was pushed on me when I wanted to stay on Windows 10.

    The vast majority of my computer use has been on MacOS for the last 15+ years, since a Macbook Pro is the standard issue dev environment at every company I have worked at. I had a Windows desktop entirely for gaming that I've repurposed to be a Linux dev box. I genuinely thought all of the hype about Linux desktop that I have seen lately was an indication that it was finally ready for general use.

    Now that I am vigilant watching RAM I haven't had the freezes. And I refuse to let the OS roll the dice on what program it wants to kill in its last ditch attempt to save itself from a problem it shouldn't have in the first place. And since Firefox seems to demand 800MB-1GB per tab process, it is a reliable scheme to just close heavy tabs when I see memory dip into the danger zone.

    I just wish RAM wasn't so expensive right now, since I'd buy as much as I could just to avoid this pain.

    • If you have an extra NVME slot you could look at picking up an Optane 800P drive. Extremely low latency reads and writes, which makes it ideal for swap. They're available for ~$100 on eBay.

I'm ashamed to daily run Ubuntu at home with Chrome (a dozen tabs), Firefox (literally hundreds of tabs, but only a few active), Thunderbird, RSSGuard, whatever I'm currently working with, and sometimes Steam and a AAA game on top of that. Never felt the need to close anything, but I must confess I have 64 Gb of RAM.

At work I ran the same Firefox profile in Windows, with 16 GB of RAM, it used to eat RAM more eagerly, and restarting only helped for a few hours. I never understood why, but GMail and WhatsApp tabs were usually the biggest memory drains.

I'm just happy I don't have to deal with that anymore, since we were moved to iMacs at work, and the same Firefox profile gives no trouble with 24 Gb or RAM. WhatsApp is still the hungriest tab, but it stabilizes. Maybe there's a sweet spot between which tabs are opened and how much RAM do you have?

  • Macs will compress infrequently-used memory, and of course everything will swap. So you can have tons of idle tabs that aren't using physical RAM.

    • That’s not the case with Firefox.

      I’ve found a few idle YouTube tabs is enough to bring macOS to its knees. Though I do wonder if uBlock Origin is the hidden cause rather than Firefox itself.

      1 reply →

Just ask any of the last gen coding agents to fix this for you and they'll make a script that tweaks a few things and it just works.

Is it acceptable? No. Did it solve my endless crashes that I used to get every day? Yes.

I don't love Ubuntu, I just hate modern Windows and find my ubuntu for work popos for gaming setup to be better for me. Ymmv.

  • why ubuntu for work and (ubuntu-based) popos for gaming? why not popos for both?

Possibly an unpopular opinion on this forum, but virtual memory has always been one of the strengths of the NT kernel. (And integration between the cache manager, virtual memory manager, file system (NTFS), overlapped I/O, completion ports, and threading. It’s a very robust and performant foundation when leveraged correctly.)

....

Well, As a bizarre counter thought...

My work PC, at least with all of the corporate fuckware installed...

I tend to see two behaviors when moving between work and home.

Either:

A - It won't go out of sleep, it basically forces a reboot.

Or,

B - It leaks memory that I can't free without a hard reboot, to where even copy-pasting becomes absolutely jank (my favorite nasty behavior; it double-processes paste operations, not fun when dealing with credentials...)

I do have 'local admin' and while I only checked a couple of times, both times it looked like even then I couldn't do a force kill/restart of whatever was jacking the thing up.

Meanwhile my wife's current 'my old' PC with the same amount of RAM as work laptop and probably lower/older CPU spec could last between forced windows updates without a reboot and a lot more general churn.

-----

If there's one reason I'm bringing this up, it's because I know my work PC has a lot more 'kernel' type management stuff installed...

And yeah, workplace people in charge of that stuff gives that same weird 'blame the user' focus as what you describe.

Same. What I find pretty incredible is that we've had single core scheduling, then multi-core CPUs, page files, etc., all that stuff as computers progressed through the decades, just for a single app freezing the entire system in 2026.

Where did the technology go?

> I now have btop permanently running in a Terminal and I habitually Alt-Tab to it to watch my swap. As soon as my free memory gets less than 1 Gb I kill any Firefox tabs (the memory black hole).

This is what nohang [0] does. There is no reason to do that by hand. Obscure configuration files to edit?

Yeah it's kind of annoying that it's not built in to most desktop distros, but... literally `apt install nohang; systemctl enable --now nohang.service`. Hardly that difficult.

[0]: https://github.com/hakavlad/nohang

  • So your saying the problem I am reporting is not a problem because it is obviously my responsibility to research the dozen available workarounds listed on internet forums, figure out which ones are not brand new footguns or genuine security risks, install sudo level programs from github that as the Warnings section on that repo confess "the daemon runs with super-user privileges and has full access to all private memory of all processes and sensitive user data;"

    And then I scroll down and see the install instructions for my distro:

      > To install on Fedora:  
      >   
      > Orphaned for 6+ weeks, not available.  
    

    It's funny I hear people slag npm all the time for developers just YOLO installing any dependency for the webservers they run.

    But hey, just sudo install this package! What could go wrong? You only use your desktop to access your online banking, etc. Forget the trust mechanism of your distro and just live a little!