int badness (struct task_struct * p);
The formula used is relatively simple and documented inline in the function. The main rationale is that we want to select a good task to kill when we run out of memory.
1) we lose the minimum amount of work done 2) we recover a large amount of memory 3) we don't kill anything innocent of eating tons of memory 4) we want to kill the minimum amount of processes (one) 5) we try to kill the process the user expects us to kill, this algorithm has been meticulously tuned to meet the principle of least surprise ... (be careful when you change it)