como configurar o Linux para chamar o oom_kill por conta própria

5

Eu não quero que meu computador troque dados para o disco. Eu não tenho nenhuma partição swap:

$ free
             total       used       free     shared    buffers     cached
Mem:       3841912    3670012     171900          0      74980     699652
-/+ buffers/cache:    2895380     946532
Swap:            0          0          0

De volta ao dia (talvez tão recentemente quanto o kernel 2.4?), isso costumava funcionar. Processos com fome de memória seriam mortos pelo assassino e eu os reiniciaria. Mas agora (Linux 2.6.38-8-genérico # 42-Ubuntu SMP seg 11 de abril 03:31:24 UTC 2011 x86_64) google-chrome (13.0.782.24 beta) envia regularmente a minha máquina em uma espiral de morte de troca. Ou pelo menos algo que pareça uma troca: o X windows demora uma eternidade para atualizar, whirs de disco, gnome panel memory chart atinge o teto, e vejo essa mensagem no syslog:

rtkit-daemon[1771]: The canary thread is apparently starving. Taking action.
rtkit-daemon[1771]: Demoting known real-time threads.
...

Mas, de acordo com o syslog, o kernel não executa o oom killer. Para uma boa medida, eu defini swappiness para 0:

$ cat /proc/sys/vm/swappiness
0

Minha solução é usar ctrl-alt-sysrq-f quando isso começa a acontecer. Alguém tem uma receita para configurar o Linux para rodar o oom_kill sozinho, nessa situação?

    
por Joe 18.06.2011 / 03:04

2 respostas

0

Cheguei à conclusão de que o Linux moderno não gosta de rodar sem memória virtual. Talvez se livrar da troca fizesse sentido nos dias de discos rígidos lentos / algoritmos VM mais velhos / etc. Ou talvez você pudesse passar por alguns obstáculos para configurar o killer oom ...

Mas eu tenho corrido com um arquivo de troca nos últimos meses e estou muito mais feliz com o comportamento de pouca memória da minha máquina. Isso diminui um pouco os limites, mas é fácil intervir e matar processos que exigem muita memória para colocar as coisas de volta nos trilhos.

    
por 28.07.2012 / 22:21
3

OOM não necessariamente mata o processo que você acha que vai acontecer. Leia sobre isso aqui: link

Eu suspeito que o que está acontecendo é que, como o Chrome usa um processo diferente para cada página, está confundindo a heurística do OOM-killer e outros processos estão sendo mortos, em vez do processo chrome pai.

De acordo com isso , o OOM-killer gosta de matar processos complicados. Portanto, tente configurar o chrome com um valor maior que 0 .. pode torná-lo mais um alvo: -)

    
por 18.06.2011 / 16:03

Tags