Por que o OOM-killer às vezes falha ao matar porcos de recurso?

2

Se eu digitar meu shell x='yes' , eventualmente, obtenho cannot allocate 18446744071562067968 bytes (4295032832 bytes allocated) porque yes tenta gravar em x forever até ficar sem memória. Eu recebo uma mensagem cannot allocate <memory> porque o OOM-killer do kernel disse que xrealloc não tem mais bytes para alocar e que deve sair imediatamente.

Mas, quando eu peço a qualquer game_engine para alocar mais memória gráfica que não existe, porque eu tenho recursos insuficientes, viro para minha RAM e CPU alocar a memória requisitada lá.

Por que o OOM-killer do kernel nunca captura game_engine tentando alocar toneladas de memória, como acontece com x='yes' ?

Ou seja, se estou executando game_engine e meu usuário não gerou nenhum novo processo desde memory-hog game_engine , por que o dito game_engine sempre é bem-sucedido em trazer meu sistema para seus joelhos irresponsáveis e sem resposta? sem OOM-killer matando-o?

Eu uso os mecanismos de jogos como um exemplo, porque eles tendem a alocar toneladas e toneladas de memória em minha pobre placa integrada, mas isso parece acontecer com muitos processos X que consomem muitos recursos.

Existem casos em que o OOM-killer é ineficaz ou não é capaz de revogar a memória de um processo?

    
por cat 18.02.2016 / 19:34

1 resposta

2

Realmente, a melhor solução para o assassino da OOM não é ter uma. Configure seu sistema para não usar memória supercomprometida e se recuse a usar aplicativos e bibliotecas que dependam dele. Neste dia de disco infinito, porque não fornecer troca infinita? Não há necessidade de se comprometer a trocar a menos que a memória seja usada, certo?

A resposta à sua pergunta pode ser que o assassino da OOM não funciona da maneira que você pensa. O assassino de OOM usa heurística para escolher qual processo matar, e as regras nem sempre significam que o último solicitante morre. Cf. Domar o assassino da OOM . Portanto, não é uma questão de o assassino da OOM ser "ineficaz", mas sim fazer uma escolha diferente da que você preferiria.

    
por 18.02.2016 / 19:55