Qual é a mensagem Out of Memory: sacrifico filho?

12

Meu computador recentemente ficou sem memória (uma consequência não inesperada da compilação de software ao trabalhar com grandes conjuntos de dados GIS). No log do sistema, detalhando como ele lidou 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 sobre? Certamente não está pensando em algum ritual sombrio para manter as coisas funcionando?

    
por Mark 10.05.2016 / 06:15

3 respostas

3

De arquivos de código-fonte eu encontrei oom_kill.c , o OOM Killer, depois de tal a mensagem é gravada no log do sistema, verifica os filhos do processo identificado e avalia se é possível eliminar 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.
 */
    
por 26.07.2018 / 10:12
2

Está falando de matar um processo infantil do processo indicado para receber um sinal KILL .

    
por 10.05.2016 / 06:20
-1

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

Mais detalhes aqui: Como o OOM killer decide quais processo para matar primeiro?

    
por 10.05.2016 / 22:37