Por que o sistema linux congela e não se recupera da falta de memória RAM

2

Estou executando o Ubuntu Desktop 15.10 na minha máquina com 4 GB de RAM e 4 GB de swap. Minha compreensão do Linux era, quando ele começa a ficar sem memória RAM, ele vai começar a matar processos para obter alguma RAM de volta, e suportado por este outra pergunta .

O que estou observando é que, quando o sistema fica sem memória RAM, ele apenas congela. As entradas do mouse e do teclado param de funcionar. Para que o experimento descubra que o Kernel tentará se recuperar desse estado, deixei o sistema em tal estado durante a noite, mas ele não se recuperou.

Está nos desktops o comportamento é alterado? Por que o sistema não está matando aplicativos para liberar espaço. Existe alguma configuração que precisa ser ativada / desativada.

Os aplicativos em execução são muito padrão, navegador, cliente de e-mail, terminal e tocador de música etc.

UPDATE: A saída free -m quando o sistema está rodando bem é:

total       used       free     shared    buffers     cached Mem:    
3271         3145       126      432         32        694

-/+ buffers/cache:       2418        853 

 Swap:         7503       1424       6079

Eu aumentei o swap (7+ GB agora), para impedir o congelamento frequente do sistema.

    
por Jor-el 26.02.2016 / 05:28

1 resposta

3

É difícil diagnosticar exatamente o que está acontecendo porque não temos nenhuma informação de diagnóstico real. Mas a memória é um recurso fornecido aos processos que precisam dela. Se o sistema não tiver mais a chamada memória física para fornecer uma solicitação opon, ele terá algumas opções.

Uma solução típica é usar o swap como memória virtual. Um sistema pode, então, entrar em um estado em que está girando em swap, gastando mais tempo gerenciando a memória cada vez menor e trocando coisas para dentro e para fora do que qualquer outra coisa.

Mas as coisas não serão congeladas e os kernels ainda têm seus próprios recursos reservados. Mas as coisas vão ser muito lentas.

O que você está descrevendo é algo diferente, no entanto. Parece que o sistema entra em um modo de alocação de recursos pesado e, em seguida, congela. Ou seja, não há mais kernel em execução, então nada que o kernel faria para mitigar a contenção de recursos pode ser feito.

Isto pode ser uma indicação de um problema de hardware (embora eu suponha que poderia ser um bug do kernel). Ou seja, o ciclo pesado de alocação de recursos faz com que o hardware falhe. Você poderia ter apenas um problema de RAM ruim ou algum outro problema de hardware fragmentado que só ocorre em cargas pesadas.

Suponho que a maioria dos sistemas Linux atualmente possui, ou pode facilmente obter, uma opção memtest no menu de inicialização do sistema. Você poderia tentar isso e ver se consegue reproduzi-lo apenas com uma execução pesada do memtest.

Outro datapoint é descobrir se o sistema ainda está ativo de alguma maneira. A GUI local pode estar bloqueada ou ocupada, mas o sistema ainda pode responder a pings ou até aceitar logins remotos. Na próxima vez que isso acontecer, tente acessar esse host de outro host. Mesmo que seja lento para responder a pings ou tentativas de login remotas, mesmo ao ponto de expirar, essa será uma resposta diferente se o sistema não responder completamente.

Isso foi coberto antes em outro SE , que pode torne esta resposta uma duplicata. Mods devem se sentir livres para deletar este se este for o caso.

    
por 26.02.2016 / 05:58