this post was submitted on 02 Oct 2023
1018 points (99.1% liked)

Programmer Humor

32744 readers
118 users here now

Post funny things about programming here! (Or just rant about your favourite programming language.)

Rules:

founded 5 years ago
MODERATORS
 
you are viewing a single comment's thread
view the rest of the comments
[–] [email protected] 24 points 1 year ago (7 children)

Does the OOM killer actually work for anyone? In every linux system I've used, if I run out of memory, the system simply freezes.

[–] [email protected] 10 points 1 year ago (1 children)

Absolutely can and will take action. Doesn't always kill the right process (sometimes it kills big database engines for the crime of existing), but usually gives me enough headroom to SSH back in and fix it myself.

[–] [email protected] 4 points 1 year ago (1 children)

I have limited experience with Linux, but why is it that when my system locks up, SSH still tends to work and let me fix things remotely? Like, if the system isn't locked up, let me fix it right here and now and give me back control, if it is locked up, how is SSH working to help me?

[–] [email protected] 4 points 1 year ago (1 children)

So that's the nifty thing about Unix is that stuff like this works- when you say "locked up", I'm assuming you refer to logging in to a graphical environment, like Gnome, KDE, XFCE, etc. To an extent, this can even apply to some heavy server processes: just replace most of the references to graphical with application access.

Even lightweight graphical environments can take a decent amount of muscle to run, or else they lag. Plus even at a low level, they have to constantly redraw the cursor as you move it around the screen.

SSH and plain terminals (Ctrl-Alt-F#, what number is which varies by distro) take almost no resources to run: SSH/Getty (which are already running), a quick process call to the password system, then a shell like bash or zsh. A singular GUI application may take more standing RAM at idle than this entire stack. Also, if you're out of disk space, the graphical stack may not be able to alive

So when you're limited on resources, be it either by low spec system or a resource exhaustion issue, it takes almost no overhead to have an extra shell running. So it can squeeze into a tiny corner of what's leftover on your resource-starved computer.

Additionally, from a user experience perspective, if you press a key and it takes a beat to show up, it doesn't feel as bad as if it had taken the same beat for your cursor redraw to occur (which also burns extra CPU cycles you may not be able to spare)

[–] [email protected] 2 points 1 year ago

Thanks, great answer!

[–] [email protected] 8 points 1 year ago

Yes, it takes surprisingly long for the OOM killer to take action, but the system unfreezes. Just wait a few minutes and see whether that does the trick.

[–] [email protected] 6 points 1 year ago (1 children)

Yes. If you have swap the system will crawl to a halt before the process is killed though, SSDs are like a thousand times slower than RAM. Swapoff and allocate a ton of memory to see it in action.

[–] [email protected] 1 points 1 year ago (1 children)

Nvme PCIe 4 SSDs are quite fast now tho, you can get between DDR1 and DDR2 speeds from a modern SSDs. This is why Apple are using their SSDs as swap quite aggressively. I'm using a MacBook Pro with 16 GBs of RAM and my swap usage regularly goes past 20 GBs and I didn't experience any slowdown during work.

[–] [email protected] 3 points 1 year ago

Depends if the allocated memory is actively used or not. Some apps do not require a large amount of random access memory, and are totally fine with a small part of random access memory and a large part of not so random access and not so often used memory.

Alternatively I can imagine that MacOS simply has a damn good algorithm to determine what can be moved to swap and what cannot be moved to swap. They may also be using the SSD in SLC mode so that could contribute to the speedup as well.

[–] [email protected] 5 points 1 year ago (1 children)

It never kicks in for me when it should, but I figured out I can force trigger it manually with the magic SysRq key (Alt+SysRq+F, needs to be enabled first), which instantly recovers my system when it starts freezing from memory pressure.

[–] [email protected] 9 points 1 year ago

Alt+SysRq+F, needs to be enabled first

Do note that this opens up a security hole. Since this can kill any app at random and is not interceptable, if you leave your PC in a public place, someone could come up and press this combo a few times. Chances are, it'll kill whatever the locking app you're using.

[–] [email protected] 4 points 1 year ago

Yeah, default Ubuntu LTS webserver kicked the mysqld on a stupid query (but it worked on dev - all developers, someday) not too long ago...

[–] [email protected] 4 points 1 year ago

Oh yes. I've had massive compiles (well linking) which failed because of the OOM killer, and I did exactly the same, massive swap so it will just keep going. So what if it's using disk as RAM and unusable for a few hours in the middle of the night, at least it finishes!

[–] [email protected] 1 points 1 year ago

it does for me, usually by killing my session and throwing me back to the login screen