OOM Killer выбирает процесс для завершения при нехватке доступной памяти; учитываются потребление и oom_score_adj. Защита начинается с ограниченного расхода памяти, а не с запрета убивать процесс.
Что такое OOM Killer, по какому принципу он рассчитывает oom_score и как защитить Python-процесс от принудительного уничтожения?
OOM Killer выбирает процесс для завершения при нехватке доступной памяти; учитываются потребление и oom_score_adj. Защита начинается с ограниченного расхода памяти, а не с запрета убивать процесс.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
OOM Killer выбирает процесс для завершения при нехватке доступной памяти; учитываются потребление и oom_score_adj. Защита начинается с ограниченного расхода памяти, а не с запрета убивать процесс.
Оценка зависит от области нехватки памяти, в том числе cgroup, а не только всей RAM машины. oom_score_adj меняет приоритет; значение −1000 исключает обычный выбор этим механизмом, но требует соответствующих прав и может навредить остальным службам. Лучше ограничивать очереди и workers, анализировать рост памяти и оставлять запас. SIGKILL нельзя перехватить; Python-обработчик исключений от него не спасает.
Источник: www.kernel.org.