Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

There are problems with disabling overcommit.

Consider this scenario: a process runs a fork(), and shortly after it runs an exec(). Normally, the extra fork only uses a tiny amount of extra memory, because the memory is shared between the parent and the child, until one of them writes to it (copy-on-write).

With overcommit disabled, the kernel must reserve enough space to copy the whole writable RAM of a process when it forks.

So you have a 16GB machine, and an 8.1GB process cannot spawn any other program through the usual fork + exec routine (workarounds exist, like forking before allocating lots of memory and using IPC to instruct the low-memory fork to fork again and launch, but that's way more complicated than a simple fork + exec).

So if you have a dedicated DB host and you know that your DB engine is very carefully engineered to work with disabled overcommit, you can disable it. On a general-purpose machine a disabled overcommit will waste lots of RAM that's sitting unused.



Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: