Como impedir que meu sistema deixe de responder quando estiver debulhando (sem RAM)?

11

Tenho 8 GB de RAM, mas às vezes estou executando algumas VMs e processos 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 me recuperar dele sem esperar apenas que as coisas melhorem, já que a interface do usuário está congelada.

Em todos esses casos, os programas que usam a maior parte da minha memória RAM podem ser despriorizados. Se o Chrome ou a VM deixassem de responder, mas meu ambiente gráfico e terminal ainda respondessem, eu poderia mudar para um terminal, encontrar o culpado e matá-lo. Eu poderia imaginar algo como "agradável" para a memória (para que eu pudesse agradar o Chrome e minha VM) ou algo para forçar o ambiente gráfico e meu terminal a permanecer na memória e não trocar.

Existe uma maneira de garantir que a interface do usuário permaneça responsiva quando meu sistema estiver debulhando?

Obrigado!

Edição: Eu ainda estou interessado em saber se há algo como um bom para a memória, mas eu acabei de descobrir que meu sistema não tem nenhum espaço de troca. Acho que isso aconteceu porque comecei a usar uma casa criptografada e uma troca criptografada (consulte Trocar não funcionando na instalação 14.04 limpa usando a casa criptografada ). Portanto, meu sistema provavelmente está ficando sem resposta porque não tenho espaço de troca, portanto, meu sistema não pode trocar programas desnecessários quando há pouca memória.

Sam King
fonte
Parece que você encontrou a causa do seu problema (sem troca alocada) - agora você quer saber como configurar a troca criptografada? Talvez você possa editar a pergunta ou iniciar uma nova.
thomasrutter
1
Ainda estou interessado em um estilo agradável de RAM, pois tive problemas semelhantes ao descrito na minha pergunta antes mesmo quando eu tinha um arquivo de troca.
Sam King

Respostas:

2

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

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

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

O Swap tenta melhorar a estabilidade e o desempenho gerais em situações como a descrita, realocando alguns dados alocados, mas raramente usados, na memória para o disco, liberando memória para os dados que você está usando. Adicionar swap, se você realmente não tiver nenhum, ajudará. No entanto, em termos de desempenho, você fará muito mais aprimoramentos se comprar mais RAM ou usar menos.

Em um sistema em que 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 sua RAM; na verdade, eu economizaria metade da sua RAM (até 4 GB ) para o host, desde que você esteja executando o software no host e queira que ele seja responsivo.

Observe também que as VMs têm ineficiências inerentes, não apenas porque sua RAM é totalmente separada, elas não compartilham nenhum cache ou buffers, mas estão executando um sistema operacional inteiro e separado sob várias camadas de abstração. Portanto, você sempre poderá obter melhor eficiência se decidir executar algo no host e não em uma VM - embora se seu objetivo 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 estiver debulhando?

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

Sua pergunta é feita em termos simples - você deseja que a interface do usuário possa continuar a operar sem problemas, mesmo se o IO estiver congestionado. No entanto, é complicado responder. Seu sistema estará fazendo isso da melhor maneira possível: operações que não requerem 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 em que o disco está debulhando, mesmo algo que normalmente será trivial - como ler algumas configurações do diretório inicial para descobrir quais são as suas preferências de exibição - pode ser lento devido ao esgotamento do cache do disco.

Eu poderia imaginar algo como um "bom" para a memória (para que eu pudesse agradar 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ê geralmente pode praticamente ignorá-lo. Quando você está debatendo, 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 aproximado de "bom para a memória" é a troca - você não pode controlar a troca de cada processo individualmente, mas o sistema faz um bom trabalho em descobrir quais processos você está usando ativamente e, portanto, é uma prioridade mais alta a ser mantida. RAM.

Mas, como eu disse e como é uma regra de ouro, se você estiver ficando sem memória RAM, comprar mais memória RAM é a solução com menos dores de cabeça e inconvenientes.

thomasrutter
fonte