Яке повідомлення поза пам'яттю: пожертвуйте дитиною?


20

Нещодавно мій комп'ютер втратив пам'ять (несподіваний наслідок складання програмного забезпечення під час роботи з великими наборами даних ГІС). У системному журналі з деталізацією того, як він поводився з умовою OOM, є наступний рядок:

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

Про що це or sacrifice child? Напевно, це не обдумує якийсь темний ритуал, щоб продовжувати справи?

Відповіді:


8

З вихідних файлів я знайшов oom_kill.c , вбивця OOM, після того, як таке повідомлення записується в системний журнал, перевіряє дітей ідентифікованого процесу та оцінює, чи можливо, вбити одного з них замість самого процесу.

Ось коментар, витягнутий з вихідного файлу, що пояснює це:

/*
 * 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 init, батько в цьому контексті є процесом Linux, де діти - це різні програми. У цьому випадку процес Linux рятує себе, вбиваючи одного зі своїх дітей.
Сеамус

0

Це вбивця Ома (поза пам'яттю). Коли у вашої системи не вистачає пам'яті, ядро ​​Linux вбиває процеси, щоб звільнити пам'ять. Евристичний визначає, який процес є найкращим кандидатом для звільнення пам'яті без пошкодження системи (як правило, процеси, що належать root, не найкращі кандидати).

Більше деталей тут: Як вбивця OOM вирішує, який процес вбити першим?


4
Однак це не пояснює частину повідомлення "або жертвуйте дитиною".
Марк
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.