Esta resposta explica as ações executadas pelo kernel quando uma situação de OOM é encontrada com base no valor de sysctl vm.overcommit_memory
.
Quando overcommit_memory
definido como 0 ou 1, overcommit
está ativado e os programas têm permissão para alocar mais memória do que realmente está disponível.
Agora, o que acontece quando ficamos sem memória nessa situação? Como o assassino da OOM decide qual processo matar primeiro?
linux
memory
out-of-memory
Ramesh
fonte
fonte
Respostas:
Se a memória for exaustivamente usada pelos processos, na medida em que possa ameaçar a estabilidade do sistema, o assassino da OOM entrará em cena.
NOTA: É tarefa do assassino OOM continuar matando processos até que seja liberada memória suficiente para o bom funcionamento do restante do processo que o Kernel está tentando executar.
O OOM Killer precisa selecionar o melhor processo (s) para matar. O melhor aqui se refere àquele processo que liberará a memória máxima ao matar e também é o menos importante para o sistema.
O objetivo principal é eliminar o menor número de processos que minimiza o dano causado e ao mesmo tempo maximizar a quantidade de memória liberada.
Para facilitar isso, o kernel mantém um
oom_score
para cada um dos processos. Você pode veroom_score
cada um dos processos no/proc
sistema de arquivos nopid
diretórioQuanto maior o valor de
oom_score
qualquer processo, maior a probabilidade de ser morto pelo OOM Killer em uma situação de falta de memória.Como é
OOM_Score
calculado?Referências
http://www.queryhome.com/15491/whats-happening-kernel-starting-killer-choose-which-process https://serverfault.com/a/571326
fonte