Unless you have the vm.overcommit_memory sysctl set to 2, and your overcommit is set to less than your system memory.
Then, when an application requests more memory than you have available, it will just get an error instead of needing to be killed by OOM when it attempts to use the memory at a later time.
Yes. Memory allocated, but not written to, still counts toward your limit, unlike in overcommit modes 0 or 1.
The default is to hope that not enough applications on the system cash out on their memory and force the system OOM. You get more efficient use of memory, but I don’t like this approach.
And as a bonus, if you use overcommit 2, you get access to vm.admin_reserve_kbytes which allows you to reserve memory only for admin users. Quite nice.
I’ve used Linux for years and never in my life have I seen anything crash or close because of a oom killer. It’s myth for me that it exists. Me looking at my firefox occupying 6GB of the 8GB ram and opening intellij so it becomes full and swap is on 3GB.
Its not a myth at all. If a software uses too much RAM it has to be killed because otherwise the OS crashes. You can read more about it here: https://linux-mm.org/OOM_Killer
My Firefox has a couple hundred tabs open, one of which had a memory leak. It was getting killed by the OOM killer (on my 64GB of RAM system!) about twice a day. It’s not doing it anymore, though; I must’ve closed the correct tab.
I had one stick of 16GB and it was not enough. I was going to get a second stick, but said screw it and got two 32GB (it’s a laptop and only has two slots).
How does that even happen 💀💀 I have 2x8gb, usually have teams open, Firefox, telegram, a virtual machine with windows 10, a few IDEs and it usually only takes 10-12gb max mostly due to the vm requiring flat 8 gigs
This is probably down to decimal versus binary unit prefixes. As far as I’m aware, RAM is almost always still power of two kibi-, mebi- or gibibytes, unlike more permanent storage, and it often gets the kilo-, mega- and giga- prefixes regardless.
In other words, if you mix up thousands and 1024s you can get 64×1024×1024×1000 (whoops) which is roughly 67 billion.
Solution: if you only have 4GB ram, nothing can use more than 4GB
It absolutely will try, it just gets killed by the oom reaper.
Unless you have the
vm.overcommit_memory
sysctl set to 2, and your overcommit is set to less than your system memory.Then, when an application requests more memory than you have available, it will just get an error instead of needing to be killed by OOM when it attempts to use the memory at a later time.
Isn’t there a trade off though?
Yes. Memory allocated, but not written to, still counts toward your limit, unlike in overcommit modes 0 or 1.
The default is to hope that not enough applications on the system cash out on their memory and force the system OOM. You get more efficient use of memory, but I don’t like this approach.
And as a bonus, if you use overcommit 2, you get access to
vm.admin_reserve_kbytes
which allows you to reserve memory only for admin users. Quite nice.I’ve used Linux for years and never in my life have I seen anything crash or close because of a oom killer. It’s myth for me that it exists. Me looking at my firefox occupying 6GB of the 8GB ram and opening intellij so it becomes full and swap is on 3GB.
It only happens when you run out of swap and ram
Its not a myth at all. If a software uses too much RAM it has to be killed because otherwise the OS crashes. You can read more about it here: https://linux-mm.org/OOM_Killer
Here is the source code: https://codebrowser.dev/linux/linux/mm/oom_kill.c.html
It is just not very tuned for desktop as it will lock up the system and empty every single type of buffer in the kernel before it is actually invoked.
It depends on the app. For some apps it just kills the app and everything is happy
My Firefox has a couple hundred tabs open, one of which had a memory leak. It was getting killed by the OOM killer (on my 64GB of RAM system!) about twice a day. It’s not doing it anymore, though; I must’ve closed the correct tab.
Doesn’t Firefox offload unused tabs by now?
/swapfile joined the chat
I had one stick of 16GB and it was not enough. I was going to get a second stick, but said screw it and got two 32GB (it’s a laptop and only has two slots).
How does that even happen 💀💀 I have 2x8gb, usually have teams open, Firefox, telegram, a virtual machine with windows 10, a few IDEs and it usually only takes 10-12gb max mostly due to the vm requiring flat 8 gigs
I dunno but the extra RAM was like a night and day difference.
How does 2 x 32 GB sticks give you 67 GB of RAM? Did you download more RAM?
This is probably down to decimal versus binary unit prefixes. As far as I’m aware, RAM is almost always still power of two kibi-, mebi- or gibibytes, unlike more permanent storage, and it often gets the kilo-, mega- and giga- prefixes regardless.
In other words, if you mix up thousands and 1024s you can get 64×1024×1024×1000 (whoops) which is roughly 67 billion.
This being a laptop, is it possible there’s 4GB soldered plus the 2 DIMM slots? I think I’ve seen something similar on a thinkpad.
Sounds more plausible. Either that or the system is reporting RAM + swap - VRAM reserved memory somehow.
Depends on how much /swap you’ve got.