quarta-feira, 29 de julho de 2026

Auxiliando o OOM Killer do kernel a fechar processos que estejam travando a máquina

 O OOM Killer pode querer ajuda com programas travados

 O OOM Killer é um recurso do kernel que decide se e quando fechar programas que estejam usando muita memória RAM a ponto de eventualmente esgotá-la e fazer com que o sistema trave (por falta de RAM/SWAP) ou fique extremamente lento (por ter que usar swap em disco). Para "medir" isso há um valor de sistema que é o vm.min_free_kbytes cujo valor normalmente é de cerca de 1% da memória RAM total. Pode parecer pouco mas esses cerca de 40MB (em sistemas com 4GB, por exemplo) é suficiente para as funções mais críticas do sistema e suficiente na maioria das vezes para mantê-lo "vivo" até que o OOM Killer feche o eventual executável mal-criado.

Mas pode ocorrer do OOM Killer "chegar atrasado" para fechar o que está provocando a saturação da máquina e, assim, a máquina simplesmente trava mesmo. Há um programa chamado earlyoom que trabalha como o "apressadinho" do sistema, prevenindo de forma mais antecipada o que o OOM Killer faz, uma espécie de garantia de que programas mal comportados sejam parados mas sem atingir, por exemplo, a interface gráfica do usuário (pelo menos numa primeira interação com o sistema), coisa que o OOM Killer costuma fazer, fazendo o usuário voltar à tela de autenticação para logar de novo.

Para instalar o programa:

sudo apt install earlyoom

Vamos configurar o mesmo, no Terminal: 

sudo nano /etc/default/earlyoom

No arquivo padrão, as eventuais linhas que não tenham o # podem ser comentadas ou procure a linha que tem sem as aspas " EARLYOOM_ARGS " e coloque tudo isso mostrado abaixo (o comando é uma linha só):

EARLYOOM_ARGS="-r 0 -m 2 -M 256000 --prefer '^(Web Content|Isolated Web Co)$' --avoid '^(dnf|apt|pacman|rpm-ostree|packagekitd|gnome-shell|gnome-session-c|gnome-session-b|lightdm|sddm|sddm-helper|gdm|gdm-wayland-ses|gdm-session-wor|gdm-x-session|Xorg|Xwayland|systemd|systemd-logind|dbus-daemon|dbus-broker|cinnamon|cinnamon-sessio|kwin_x11|kwin_wayland|plasmashell|ksmserver|plasma_session|startplasma-way|sway|i3|xfce4-session|mate-session|marco|lxqt-session|openbox|cryptsetup)$'" 

O arquivo vai ficar como na imagem abaixo:

 

Ctrl+o pra salvar e ctrl+x pra fechar. Depois disso:

sudo systemctl enable --now earlyoom 

sudo systemctl start earlyoom

As flags da configuração significam:

  • -r 0: Desativa os logs periódicos de rotina (só loga ações do matador de processos).
  • -m 2: Aciona o aviso/ação quando a RAM disponível for menor que 2%.
  • -M 256000: Limite absoluto em Kilobytes (aprox. 250 MB de RAM livre).
  • --prefer: Dá prioridade de encerramento para as abas/processos do navegador (Web Content).
  • --avoid: Protege a interface gráfica, gerenciadores de pacote e serviços vitais do sistema para não fechar seu ambiente de trabalho ou quebrar atualizações.

 Com isso o seu sistema deverá ficar mais preparado para eventuais "acessos de RAM/SWAP" além do disponível.


 

Nenhum comentário:

Postar um comentário