3 ms·
It doesn't get in that situation, because malloc() can return null on Solaris (i.e. it never¹ overcommits). While in general I think this is vastly better than
by PeCaN 7y ago
It doesn't get in that situation, because malloc() can return null on Solaris (i.e. it never¹ overcommits).
While in general I think this is vastly better than the somewhat insane Linux OOM killer, you can get in awkward situations where you can't start any processes (including a root shell) because you're out of memory.
I rather like the FreeBSD solution to this, which is to not overcommit, but after a certain number of allocation failures it kills the process using the most memory. This prevents situations where you can't start any processes.
There's no one-size-fits-all solution to handling low memory conditions, but the Linux solution manages to almost never do what you want which is kind of impressive in a way.
¹ I seem to recall hearing somewhere that you can allow allocations to overcommit on a per-application basis on later versions of Solaris, but don't quote me on this.
- floatboth 7y ago> FreeBSD solution to this, which is to not overcommit Where did this myth come from? Did y'all just assume that the vm.overcommit sysctl actually makes sense and zero means "no overcommit"? :) https://news.ycombinator.com/item?id=20623919 https://news.ycombinator.com/item?id=20623919 But indeed, OOM killer kills the largest process, which makes more sense in most scenarios than Linux's "badness" scoring.
- PeCaN 7y agoHuh, I had no idea it worked like that. That's bizarre.