A baixa RAM no Debian / Ubuntu causa travamento completo com a discusão de disco

6

Eu tenho tido esse grave problema de desempenho, tanto no Ubuntu 11.10, quanto no Debian Wheezy:

Se um processo utiliza-se uma grande quantidade de RAM (digamos, 3700 MB de 3900 MB), o sistema rapidamente se torna inutilizável, com goleada disco constante. Chega ao ponto em que o gerenciador de janelas não responde, e matar o processo ofensivo leva vários minutos. (Na verdade, chegar a um terminal, emitindo pkill, esperando um pouco mais até que o sinal realmente passe)

Esse problema ocorre mesmo se a partição de troca estiver completamente desativada.

Investigando com o iotop, parece que a maior parte da atividade do disco é leitura de disco, indo para processos como o google chrome e o renderizador de janelas X. No entanto, esta é apenas uma informação limitada, já que o iotop não é mais atualizado enquanto o sistema está no modo full-thrash.

Minha pergunta é:

1) o que está causando o enorme disco de leitura? 2) como posso evitar que isso torne o sistema inutilizável?

    
por YenTheFirst 19.03.2012 / 19:33

3 respostas

4

O sistema está movendo dados na RAM para dentro e para fora do disco rígido para abrir caminho para outros dados na RAM. As operações de disco são muito mais lentas que as operações de RAM, fazendo com que o sistema diminua significativamente. Quando o sistema está ficando sem memória física, o sistema faz isso para expandir a quantidade de memória "virtual" disponível, ao custo do desempenho. Essa condição é chamada de surra .

Infelizmente, a única solução completa para esse problema é adicionar mais RAM. Os módulos de memória são relativamente baratos; se você está constantemente atingindo os limites da memória física disponível, você deve adicionar memória ao seu computador.

Editar: Como o seu sistema está com pouca memória física, os programas precisam ler o disco rígido com mais frequência, porque o espaço livre na RAM é normalmente usado para armazenar arquivos com freqüência ou acessados recentemente para reduzir o disco leitura. Com baixa RAM livre, menos arquivos podem ser armazenados em cache, reduzindo o desempenho. Esse é especialmente o caso de aplicativos como o Chrome, que é bastante intensivo em memória e E / S. Mais uma vez, adicionar RAM aumentará o desempenho. Para mais informações sobre armazenamento em cache, consulte o artigo da Wikipédia .

    
por 19.03.2012 / 19:39
2

Se o que causa seus problemas são processos conhecidos, você pode restringi-los usando ulimit Por exemplo, faça o script do iniciador do seu aplicativo assim:

#!/bin/bash
ulimit -v 1048576
/usr/bin/greedyapp

Seu aplicativo poderá receber apenas 1 GiB de memória virtual antes de receber erros de falta de memória. Eu tentei com navegadores e vai efetivamente proteger sua memória RAM sem matar o navegador imediatamente quando atinge seu limite. Mas o aplicativo pode se comportar de maneira estranha (como parar de responder a entrada do usuário), então você pode tentar primeiro com um limite muito estrito para ver o que ele faz em uma falta de memória. Ainda assim, muito melhor do que aqueles trashes hd.

Observe que ulimit afeta apenas o processo de chamada e seus filhos, definindo o limite para todos os processos desse ramo. Eu não recomendaria colocá-lo em seu script de sessão.

    
por 15.06.2015 / 15:59
1

DragonLord está correto, o problema é o fato de que o sistema operacional não gosta que você use uma quantidade excessiva de RAM. Quanto mais perto você estiver de maximizar sua RAM. O sistema vai cair em um estado em que começa a usar a memória virtual. Quanto mais rápido o seu disco rígido, mais rápido será o seu computador quando estiver neste estado, no entanto, há apenas muito desempenho que você pode ganhar com isso. Mais RAM é necessária para impedir que isso aconteça.

É evidente que você já percebeu que o problema é apenas ao usar certos programas, alguns nos quais você criou. Devido às informações fornecidas, é lógico supor que o problema seja a RAM.

    
por 19.03.2012 / 22:11