Qual é a mensagem Memória Cheia: sacrifique um filho?

20

Meu computador recentemente ficou sem memória (uma consequência não inesperada da compilação de software enquanto trabalhava com grandes conjuntos de dados GIS). No log do sistema, detalhando como ele lida com a condição OOM, é a seguinte linha:

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

O que é isso or sacrifice child? Certamente não está pensando em algum ritual obscuro para manter as coisas funcionando?

Marca
fonte

Respostas:

8

A partir dos arquivos de origem, encontrei oom_kill.c , o OOM Killer, depois que essa mensagem é gravada no log do sistema, verifica os filhos do processo identificado e avalia se possível matar um deles no lugar do próprio processo.

Aqui um comentário extraído do arquivo de origem explicando isso:

/*
 * 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.
 */
Mariano Paniga
fonte
Ele também faz isso no Firefox (conteúdo da Web).
neverMind9
2

Trata-se de matar um processo filho do processo indicado para receber um KILLsinal.

DopeGhoti
fonte
2
Mas o que isso significa ? Existe algum método pelo qual os pais podem "sacrificar" uma criança para se salvar?
Thanatos
Meu palpite, que é apenas um palpite, é que, como todo processo é descendente do processo init Linux, o pai nesse contexto é um processo Linux em que os filhos são os vários aplicativos. Nesse caso, o processo Linux está se salvando matando um de seus filhos.
Seamus
0

Este é o assassino de Oom (falta de memória). Quando o sistema fica sem memória, o kernel do linux mata processos para liberar memória. Uma heurística determina qual processo é o melhor candidato para liberar memória sem danificar o sistema (normalmente, processos de propriedade raiz não são os melhores candidatos).

Mais detalhes aqui: como o OOM killer decide qual processo matar primeiro?

Mali
fonte
4
Porém, isso não explica a parte "ou sacrifique a criança" da mensagem.
Mark