Skip to content

Instantly share code, notes, and snippets.

@EJSohn
Created April 28, 2019 10:43
Show Gist options
  • Save EJSohn/c7fdae06b677f5da49bf70630e892679 to your computer and use it in GitHub Desktop.
Save EJSohn/c7fdae06b677f5da49bf70630e892679 to your computer and use it in GitHub Desktop.
/*
* oom_badness - calculate a numeric value for how bad this task has been
* @p: task struct of which task we should calculate
* @p: current uptime in seconds
*
* 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.
*
* Good in this context means that:
* 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)
*/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment