Как работает OOM Killer
BASH DAYS — авторский канал от действующего девопсаПодпишись на наш ТГ канал: @bashdays
Как вычисляются очки негодности?
За основу берется процент физической памяти используемой процессом и умножается на 10, таким образом получаем базовое значение. 1000 очков = 100%. После того к базовому значению начинают применяться различные модификаторы.
- Прибавляется половина очков от всех дочерних процессов, которые имеют собственную виртуальную память.
- Если приоритет процесса > 0, то очки умножаются на 2. Приоритет процесса может иметь значения от -20 до +20. В данном случае +20 это самый низкий приоритет.
- Очки делятся на коэффициент, связанный с процессорным временем, чем более активнее процесс и чем больше процессорного времени он использует, тем больше будет его коэффициент.
- Очки делятся на коэффициент, связанный с временем жизни процесса, чем больше времени прошло с момента запуска, тем выше будет это значение.
- Для процессов, запущенных от имени root, служебных учеток или процессов ввода-вывода очки делятся на 4.
- Для процесса, при выделении памяти у которого произошла ошибка out of memory и процессам имеющим с ним общую память, очки делятся на 8.
- Все что получилось выше умножается на 2^oom_adj. Где oom_adj это специальный коэффициент, имеющий значения от -17 до +15, при -17 процесс никогда не будет убит.