Show Why Linux Kill Process

Linux overcommits memory

If the user or sysadmin did not kill the program the kernel may have. The kernel would only kill a process under exceptional circumstances such as extreme resource starvation (think mem+swap exhaustion).

When a process asks for more space, Linux will give it that space, even if it is claimed by another process, under the assumption that nobody actually uses all of the memory they ask for. The process will get exclusive use of the memory it has allocated when it actually uses it, not when it asks for it. This makes allocation quick, and might allow you to "cheat" and allocate more memory than you really have. However, once processes start using this memory, Linux might realize that it has been too generous in allocating memory it doesn't have, and will have to kill off a process to free some up. The process to be killed is based on a score taking into account runtime (long-running processes are safer), memory usage (greedy processes are less safe), and a few other factors, including a value you can adjust to make a process less likely to be killed. It's all described in the article in a lot more detail. See Taming the OOM killer

How a process is chosen: OOM Killer

Show Why:

dmesg | egrep -i -B100 'killed process'

Where -B100 signifies the number of lines before the kill happened.

sudo tail /var/log/messages -n 100

Comments

Popular posts from this blog

Reduce TIME_WAIT Socket Connections