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.
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?