Что такое сообщение «Недостаточно памяти»: принести в жертву ребенка?


20

Недавно на моем компьютере закончилась память (что не является неожиданным следствием компиляции программного обеспечения при работе с большими наборами данных ГИС). В системном журнале подробно описывается, как оно работает с условием OOM, следующая строка:

Out of memory: Kill process 7429 (java) score 259 or sacrifice child

О чем это or sacrifice child? Конечно, это не обдумывает какой-то темный ритуал, чтобы все продолжалось?

Ответы:


8

Из исходных файлов я обнаружил oom_kill.c , OOM Killer, после того как такое сообщение записано в системный журнал, проверяет дочерние элементы идентифицированного процесса и оценивает, если возможно, уничтожение одного из них вместо самого процесса.

Вот комментарий, извлеченный из исходного файла, объясняющий это:

/*
 * If any of p's children has a different mm and is eligible for kill,
 * the one with the highest oom_badness() score is sacrificed for its
 * parent.  This attempts to lose the minimal amount of work done while
 * still freeing memory.
 */

Это также делает это для Firefox (Веб-контент).
neverMind9

2

Это говорит о убийстве ребенка процесс процесса номинирована выслано KILLсигнал.


2
Но что это значит ? Есть ли какой-нибудь метод, с помощью которого родитель может «пожертвовать» ребенком, чтобы спасти себя?
Танатос

Мое предположение, которое является всего лишь предположением, заключается в том, что, поскольку все процессы являются потомками процесса инициализации Linux, родительский элемент в этом контексте - это процесс Linux, дочерними элементами которого являются различные приложения. В этом случае процесс Linux спасает себя, убивая одного из своих потомков.
Симус

0

Это убийца из нехватки памяти. Когда вашей системе не хватает памяти, ядро ​​Linux убивает процессы, чтобы освободить память. Эвристика определяет, какой процесс является наилучшим кандидатом для освобождения памяти без повреждения системы (обычно процессы, принадлежащие root, не являются лучшими кандидатами).

Подробнее здесь: Как OOM killer решает, какой процесс убить первым?


4
Тем не менее, это не объясняет часть сообщения «или принесите в жертву ребенка».
Марк
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.