Linux sem swap ainda começa a se debater

0

Debian 9.4, Linux 4.9

Às vezes eu compilo algo que dificilmente se encaixa na RAM, ou um processo rouco de repente começa a consumir memória além do que está disponível. Quando o processo passa da RAM disponível, o Linux começa a debater o disco mesmo que eu tenha o swap zero ativado (nenhuma troca foi uma tentativa de evitar isso). Eu acho que ele começa a descartar e recarregar coisas como as partes mmap ped dos binários que estão sendo executados atualmente?

Neste ponto, minha sessão X rapidamente não responde, e tudo que posso fazer é esperar dezenas de minutos até que toda a sessão X seja eliminada e eu possa fazer o login novamente.

Eu tentei procurar soluções, mas nada parece funcionar. O assassino de OOM não captura esse processo e, com vm.overcommit_memory=2 , não consigo nem efetuar login com o GDM e o Gnome.

Existe uma maneira de dizer ao Linux para não trocar nada ? Dessa forma, eu teria pelo menos uma chance de que o processo de rouge fosse eliminado por um malloc com falha e, mesmo que não, pelo menos eu não precisaria esperar enquanto olhava para uma máquina que não responde.

Ou outras sugestões de como gerenciar este cenário?

    
por attila lendvai 10.04.2018 / 14:22

1 resposta

2

Se você estiver compilando fontes que exigem quase toda a RAM disponível, se não mais, provavelmente a única solução de alto desempenho é adicionar RAM real. Dito isto, você pode tentar adicionar uma quantidade muito grande de swap (digamos 2x ou 3x a RAM) e definir /proc/sys/vm/swappiness para um valor baixo, como 1 (observe que com o kernel 3.5+ definindo-o como 0 desabilita totalmente o swap), de modo que a troca é usada somente se efetivamente necessária. Isso deve minimizar a surra.

    
por 10.04.2018 / 15:07