Quando uso muita RAM no meu Ubuntu 18.10, a GUI congela. Ele para de reagir ao teclado e ao mouse e não há nada a fazer além de reiniciar o computador.
Eu acreditava que isso acontecia porque o sistema trocou os binários do Gnome para o disco e que, eventualmente, eles seriam trocados de volta. Mas isso nunca aconteceu no prazo observado (20 minutos ou mais).
Tentei resolver o problema desativando a troca (prefiro perder o trabalho não salvo a perder o trabalho não salvo e ter que reiniciar o PC) e instruindo o OOM killer a matar qualquer processo que tenha acionado a situação OOM de acordo com esta resposta . No entanto, isso não ajudou. Tentei usar muita memória abrindo muitas guias do navegador e a única coisa que aconteceu foi que o sistema parou de responder novamente.
Como isso é possível? Que outro mecanismo além da surra poderia estar envolvido? (pergunta de engenharia genuína, não um discurso retórico)
Eu monitorei as estatísticas do sistema durante este experimento e parece que a CPU não estava funcionando com 100% de carga, então não era a restrição computacional. Além disso, parece que a GUI congelou antes que eu tivesse a chance de abrir abas suficientes para acionar o assassino OOM.
A melhor teoria que posso apresentar é que as bibliotecas GUI estão usando algum tipo de alocador de memória que lhes permite continuar funcionando mesmo com muito pouca memória, seja usando algum mecanismo de troca alternativo ou por alguns rearranjos de heap intensivos da CPU. Caso contrário, não tenho ideia.
Existe alguma explicação melhor para esse comportamento? Ou uma solução mesmo?
EDITAR
minha troca:
vm.swappiness = 60
minha memória:
martin@martin-UX305UA:~$ free -h
total used free shared buff/cache available
Mem: 7.7G 5.5G 145M 993M 2.1G 975M
Swap: 2.0G 57M 1.9G
minha/etc/fstab
UUID=e0edf45b-903c-403f-b2c7-5e69b8b450da / ext4 errors=remount-ro 0 1
# /boot/efi was on /dev/sda1 during installation
UUID=0564-1C88 /boot/efi vfat umask=0077 0 1
/swapfile none swap sw 0 0
Vale a pena tentar usar alguma versão melhorada do OOM-killer. Como earlyoom ou nohang . Existem mais alternativas descritas em seus sites.
Esses aplicativos de espaço de usuário podem reagir muito mais rápido do que o OOM-killer normal do kernel.
O mantenedor nohang no github está respondendo muito ativamente aos problemas, caso você tenha algum.
Este podcast linux fornece uma introdução em áudio sobre o assunto.
Nota : Você realmente precisa adicionar mais RAM, mas vamos tentar isso...
Todo sistema precisa de uma partição swap ou /swapfile.
remover ajustes OOM
altere seu 2G/swapfile atualmente não utilizado para pelo menos 4G
ajustar vm.swappiness
/swapfile
Observação : o uso incorreto do
dd
comando pode causar perda de dados. Sugira copiar/colar.Certifique-se de que esta linha esteja em /etc/fstab...
vm.swappiness
No
terminal
, tente...sudo sysctl vm.swappiness
# para ver o valor original (=60)sudo sysctl vm.swappiness=80
# alterar RAM vs taxa de trocaPara tornar permanente...
Defina vm.swappiness=80 (baseado em 8G RAM e 4G SWAP), desta forma...
sudo -H gedit /etc/sysctl.conf
# edite este arquivoProcurar uma
vm.swappiness=
entrada existente...CTRL+ fvm.swappiness
Se encontrado, edite -o para dizer
vm.swappiness=80
Se não encontrar, adicione
vm.swappiness=80
no final do arquivoSalve suas edições e saia do gedit
sudo sysctl -p