Como evitar que meu sistema pare de responder quando estiver debatendo (sem RAM)?

10

Tenho 8 GB de RAM, mas às vezes estou executando algumas VMs e processos do Chrome suficientes para usar a maior parte da minha memória. Isso geralmente é bom, mas às vezes meu sistema começa a se debater, e é difícil para mim recuperar dele sem apenas esperar que as coisas melhorem, já que a interface do usuário está praticamente congelada.

Em todos esses casos, os programas que usam a maior parte da minha RAM podem ser desprivilegiados. Se o Chrome ou a VM se tornassem indiferentes, mas meu ambiente gráfico e terminal ainda estivessem respondendo, eu poderia alternar para um terminal, encontrar o culpado e eliminá-lo. Eu poderia imaginar algo como um "bom" para a memória (para que eu pudesse bom Chrome e minha VM) ou algo para forçar o ambiente gráfico e meu terminal para ficar na memória e não para trocar.

Existe uma maneira de garantir que a interface do usuário permaneça responsiva quando meu sistema está se debatendo?

Obrigado!

EDIT: Eu ainda estou interessado em saber se há algo como um bom para a memória, mas acabei de descobrir que o meu sistema não tem nenhum espaço de troca. Eu acho que isso aconteceu porque eu comecei a usar uma troca criptografada em casa e criptografada (veja Trocar não funciona na instalação limpa 14.04 usando a home criptografada ). Então, meu sistema provavelmente está parando de responder porque eu não tenho espaço para swap, então meu sistema não pode trocar programas desnecessários quando ele fica com pouca memória.

    
por Sam King 11.12.2014 / 02:45

1 resposta

2
  

Acabei de descobrir que o meu sistema não tem espaço de troca

Se isso for verdade, provavelmente está contribuindo para o problema.

Usando várias VMs com grandes alocações de memória, uma quantidade de RAM que normalmente seria mais do que suficiente para uso normal (8GB) começa a ficar restrita, o que significa que seu sistema não poderá usar o máximo de cache e quer trocar. Agora, se você não tiver swap, haverá ainda mais pressão na memória e você poderá até mesmo matar tarefas devido à falta de memória.

O swap tenta melhorar a estabilidade geral e o desempenho em situações como a que você descreveu, realocando alguns dados alocados mas raramente usados na memória em disco, liberando memória para os dados que você está usando. Adicionando swap, se você realmente não tem nenhum, vai ajudar. No entanto, em termos de desempenho, você fará muito mais melhorias se também comprar mais RAM ou usar menos.

Em um sistema no qual você está executando VMs, mas também usando uma área de trabalho comum no host da VM, não deseja que suas VMs ocupem toda a RAM, na verdade, economizaria metade da sua memória RAM (até 4 GB) para o host, já que você está executando o software no host e quer que ele seja responsivo.

Note também que as VMs têm ineficiências inerentes não apenas porque sua RAM está totalmente separada, elas não compartilham nenhum cache ou buffers, mas estão rodando um SO separado em várias camadas de abstração. Assim, você sempre pode obter uma eficiência melhor se decidir executar algo no host em vez de em uma VM - embora, se a sua finalidade de usar VMs for usar outros sistemas operacionais, isso não será possível.

  

Existe uma maneira de garantir que a interface do usuário permaneça responsiva quando meu sistema está se debatendo?

Quando a quantidade de RAM que você tem é um problema, qualquer coisa que você pode fazer é apenas um hack - a solução real é comprar mais RAM (embora no seu caso, como mencionei, você pode apenas alocar menos para as VMs ).

Sua pergunta é colocada em termos simples: você deseja que a interface do usuário possa continuar a funcionar sem problemas mesmo que o OI esteja congestionado. No entanto, é complicado responder. Seu sistema estará fazendo isso da melhor maneira possível: operações que não exigem acesso ao disco não serão atrasadas. Se a sua "interface do usuário está gaguejando" é porque o processo específico responsável por essa interface do usuário precisa de acesso ao disco. Em uma situação de pouca memória e onde o disco está se debatendo, até mesmo algo que normalmente será trivial - como ler algumas configurações do seu diretório pessoal para descobrir quais são suas preferências de exibição - pode ser lento devido ao esgotamento do cache de disco. p>

  

Eu poderia imaginar algo como um "bom" para a memória (para que eu pudesse usar o Chrome e minha VM)

Não há realmente um "bom para a memória". O acesso à memória é tão rápido que você praticamente pode ignorá-lo. Quando você tem surra, não é memória, é disco, esse é o problema. Há uma "ionice" por causa disso. Embora isso provavelmente não seja o que eu recomendaria para o seu problema.

Outro equivalente grosseiro de "bom para memória" é swap - você não pode controlar como cada processo é individualmente, mas o sistema faz um bom trabalho de descobrir quais processos você está usando ativamente e, portanto, é uma prioridade maior para ser mantido na RAM.

Mas como eu disse e como é uma regra de ouro, se você está ficando sem RAM, comprar mais RAM é a solução com menos dores de cabeça e desvantagens.

    
por thomasrutter 12.12.2014 / 00:43