Como posso evitar que meu sistema falhe ou fique inutilizável devido ao alto uso de RAM?

6

Às vezes, quando eu uso Lubuntu 17.10 - totalmente atualizado, meu uso de RAM atinge 100% e o sistema se torna inutilizável, se eu tiver "sorte" eu posso mover meu mouse cerca de 1 pixel por 10 segundos ... Isso torna praticamente impossível fazer qualquer coisa até mesmo desligar um aplicativo. Eu sou forçado a usar o botão liga / desliga do meu laptop.

Estou usando um macbook pro retina no final de 2013, com a instalação quase recente do Lubuntu 17.10.

Até agora, aconteceu enquanto eu tenho spyder3 aberto e eu carreguei arquivos muito grandes. Também aconteceu quando eu cliquei neste link no firefox (ATENÇÃO: pode falhar) link . Eu até fechei a conta antes de atingir 100% de uso, mas ele continuou até 100% e caiu. Eu só notei porque eu fechei a aba e vi o uso de RAM no spyder3 (eu não estava rodando nenhum script python3).

Existe uma maneira de evitar isso? Talvez tenha certeza que uma quantidade específica de RAM só pode ser usada pelo sistema operacional?

    
por Holykebab 12.01.2018 / 17:30

4 respostas

3

Provavelmente, o seu problema é causado pelo sistema "thrashing" - mover muitas páginas de memória para e do espaço de troca de uma vez, sem deixar tempo para que processos reais sejam executados.

Se você quiser que processos que usam muita memória sejam eliminados em vez de fazer com que todo o seu sistema seja executado lentamente, é possível desativar a troca. Executar sudo swapoff -a conseguirá isso até uma reinicialização; para desativar a troca permanentemente, você precisa editar /etc/fstab para remover a partição swapfile / swap, removendo ou comentando a linha com swap na terceira coluna. Por exemplo, meu /etc/fstab parece um pouco com isso:

# <file system> <mount point>   <type>  <options>       <dump>  <pass>
/dev/mapper/ubuntu--vg-root /               ext4    errors=remount-ro 0       1
# /boot was on /dev/sda1 during installation
UUID=fdedeca9-dafe-1a05-0866-7502fda1a7ea /boot           ext2    defaults        0       2
/dev/mapper/ubuntu--vg-swap_1 none            swap    sw              0       0

Para desabilitar o swap, eu gostaria de comentar a última linha (colocando um hash # no início da linha) e, em seguida, reinicie. Certifique-se de não modificar o resto do arquivo, caso contrário você poderá tornar seu sistema incapaz de inicializar.

Ressalva: Se você desabilitar a troca e não tiver memória física suficiente para os serviços básicos do sistema, o assassino da OOM pode decidir matar um deles e fazer com que o sistema trave ou fique inutilizável ( que a pergunta diz que você quer evitar).

    
por Josh 14.01.2018 / 14:28
6

Se um processo consome muita memória, o sistema deve se proteger através do OOM killer, que é um recurso padrão em qualquer sistema Linux.

Como avaliado na melhor resposta até o momento Como o assassino da OOM decide qual processo matar primeiro?

  

Se a memória é exaustivamente usada por processos, na medida em que   pode ameaçar a estabilidade do sistema, então o assassino da OOM   entra em cena.

     

NOTA: É tarefa do OOM Killer continuar matando processos   até que memória suficiente é liberada para o bom funcionamento do resto do   o processo que o Kernel está tentando executar.

     

O OOM Killer tem que selecionar o melhor processo (s) para matar. Melhor aqui   refere-se a esse processo que irá liberar a memória máxima em cima   matar e é também o menos importante para o sistema.

     

O principal objetivo é matar o menor número de processos que   minimiza o dano causado e, ao mesmo tempo, maximiza a quantidade   de memória liberada.

     

Para facilitar isso, o kernel mantém um oom_score para cada um dos   processos. Você pode ver o oom_score de cada um dos processos no   / proc filesystem sob o diretório pid.

     

$ cat /proc/10292/oom_score

     

Quanto maior o valor de oom_score de qualquer processo, maior é o   probabilidade de ser morto pelo OOM Killer em uma falta de memória   situação.

Se o seu sistema travar, sugiro ajustar a política do OOM ajustando o oom_score dos seus processos.

É improvável que o killer da OOM tenha sido desativado, mas, para ter certeza, verifique se esse comando retorna 0 :

$ sudo sysctl vm.overcommit_memory
vm.overcommit_memory = 0

Referências:

  1. link
  2. link
  3. link
  4. link
por rpet 12.01.2018 / 17:53
1

Faça uma partição de troca ou um arquivo de troca. Estes são como ram, mas no disco rígido, por isso é muito mais lento. Quando você não tem RAM suficiente, o sistema armazenará os dados no HDD em vez de no RAM. Você precisa especificar o tamanho dele. Geralmente, é recomendável que você tenha aproximadamente o mesmo tamanho da sua RAM.

O arquivo de troca é mais fácil de fazer, mas não permite hibernar para o HDD.

arquivo de permuta: link

A partição swap é mais difícil de fazer se você já instalou o seu sistema e todo o espaço do disco rígido está particionado, mas isso permite a hibernação.

partição swap: Como eu adiciono um swap partição após a instalação do sistema?

    
por FK-VH 12.01.2018 / 18:16
0

@Josh respondeu:

  

Eu acho que o problema descrito ("o sistema se torna inutilizável, se eu tiver sorte" eu posso mover meu mouse cerca de 1 pixel por 10 segundos ") é provavelmente causado pelo sistema debatendo, tentando trocar muitas páginas e de uma só vez. Desativar o swap deve fazer com que o aplicativo que consome memória seja eliminado, em vez de interromper todo o sistema.

Isso resolveu meu problema.

Eu tive uma troca quando instalei o Lubuntu, mas ele foi removido com o gparted depois. Eu não editei o / etc / fstab que é o que causou o problema. Uma vez que a troca foi removida corretamente, o assassino da OOM começou a funcionar como deveria.

    
por Holykebab 13.01.2018 / 06:25