Como dou de novo os dentes assassinos da OOM?

12

De volta ao dia eu costumava amaldiçoar o OOM-killer por ser muito agressivo e matar aplicativos que eu estava usando. Agora, enquanto eu periodicamente assisto meu sistema debochar por 15 minutos por causa de algum programa mal-comportado, e então finalmente recorro a um desligamento por força porque ele não responde ao teclado, eu percebo que o tive melhor do que percebi. naquela época.

Como faço para restaurar o OOM-killer em seus modos antigos e sanguinários?

    
por Avdi 07.05.2013 / 03:27

2 respostas

4

Eu diminuiria a quantidade de espaço de troca disponível. Instalações típicas nos dias de hoje tentam alocar tanta troca quanto a memória física (ou às vezes o dobro). O problema com isso é que quando algo dá errado, o sistema entra em uma espiral da tentativa de "embaralhar" coisas da memória para o disco, e de volta, e ele começa a fazer para muito de que não tem tempo para responder à entrada do usuário.

Nos bons tempos, processos inteiros foram trocados para disco (e para trás), portanto, grandes trocas eram necessárias.

Nos sistemas de memória virtual modernos, a memória é trocada em blocos (em vez de processos inteiros), para que você possa obter com trocas menores. Em seu cenário, seria melhor ter processos mortos, portanto, executar com swap menor fará com que o OOM inicie a finalização de processos mais rapidamente (em vez de fazer com que o sistema gaste muito tempo trocando dados de / para o disco).

    
por 07.05.2013 / 04:09
0

Veja o que funcionou para mim:

echo 1 > /proc/sys/vm/oom_kill_allocating_task

Isso é apenas para essa inicialização. Você pode testar executando o seguinte na guia do console do inspetor do seu navegador:

a = []; while (true) { a.push(1); }

Se você estiver satisfeito com essa configuração, poderá torná-lo o padrão para todas as inicializações futuras:

echo "vm.oom_kill_allocating_task=1" >> /etc/sysctl.conf
    
por 07.08.2018 / 18:05

Tags