Pular para o conteúdo

earlyoom - Cheatsheet de Daemon de Falta de Memória Antecipada

earlyoom - Cheatsheet de Daemon de Falta de Memória Antecipada

earlyoom é um daemon leve de espaço do usuário que previne o clássico problema Linux “o sistema inteiro congelou quando ficou sem RAM”. Quando a memória fica baixa, o matador OOM no kernel frequentemente reage muito tarde, depois que a máquina já ficou sem resposta devido a trashing. earlyoom monitora RAM e swap disponível e, quando caem abaixo de limiares configuráveis, mata o maior consumidor de memória cedo — mantendo o sistema interativo em vez de congelar. É simples, sem dependências e amplamente usado em desktops e servidores.

Instalação

PlataformaComando
Debian/Ubuntusudo apt install earlyoom
Fedorasudo dnf install earlyoom (padrão no Fedora Workstation)
Arch Linuxsudo pacman -S earlyoom
From sourcemake && sudo make install do repo
Verifyearlyoom --version

Habilitando o Serviço

ComandoDescrição
sudo systemctl enable --now earlyoomHabilite e inicie o daemon
sudo systemctl status earlyoomVerifique se está executando
journalctl -u earlyoom -fAssista suas decisões ao vivo
earlyoomExecute em primeiro plano (testando)

Como Decide

earlyoom observa dois números e age quando ambos caem abaixo de seus limiares:

MétricaFlagPadrão-ish
Free RAM %-m PERCENTex. 10%
Free swap %-s PERCENTex. 10%
Kill triggerambos abaixo dos limiares
# Kill when RAM < 5% AND swap < 5%
earlyoom -m 5 -s 5

Opções-Chave

OpçãoDescrição
-m PERCENT[,KILL]Limite de RAM para avisar/matar (dois valores = aviso,matar)
-s PERCENT[,KILL]Limite de swap para avisar/matar
-M SIZELimite de RAM em KiB em vez de porcentagem
-r INTERVALIntervalo de relatório de memória (segundos)
-nAtivar notificações de desktop ao matar
-N COMMANDExecute um comando ao matar (ex. alerta customizado)
--prefer REGEXPrefira matar processos com um nome correspondente
--avoid REGEXEvite matar processos com um nome correspondente
-pDê ao earlyoom uma pontuação OOM favorável
-dAtivar saída de debug

Preferindo / Evitando Processos

# Prefer killing browsers/compilers; protect the display server and sshd
earlyoom -m 8 -s 8 \
  --prefer '(^|/)(chrome|firefox|cc1plus|java)$' \
  --avoid '(^|/)(Xorg|sshd|systemd)$'
DiretivaEfeito
--preferMate esses primeiro quando possível
--avoidMate esses apenas como último recurso

Afinar esses impede que um processo descontrolado leve sua sessão ou acesso SSH consigo.

Arquivo de Configuração

Em distros systemd, as opções geralmente ficam em um arquivo env:

# /etc/default/earlyoom  (Debian) or the unit's EnvironmentFile
EARLYOOM_ARGS="-m 5 -s 5 -r 60 --avoid '(^|/)(sshd|Xorg)$'"

Depois sudo systemctl restart earlyoom.

earlyoom vs systemd-oomd vs kernel OOM

Aspectoearlyoomsystemd-oomdKernel OOM killer
LayerDaemon de espaço do usuárioEspaço do usuário (systemd, baseado em PSI)Kernel
TriggerFree RAM/swap %Informações de Pressure Stall (PSI)Verdadeiramente sem memória (tarde)
GranularityProcesso (maior)cgroup/unitProcesso
ConfigFlags simplesPolítica systemd oomdLimitado (oom_score_adj)
Best forRede de segurança simples e eficazcgroups gerenciados por systemdÚltimo recurso

Em distros systemd modernas, systemd-oomd (baseado em PSI) é uma alternativa; earlyoom permanece popular por sua simplicidade e funciona em qualquer lugar.

Fluxos de Trabalho Comuns

# Desktop: keep the UI responsive, notify on kills, protect the session
earlyoom -m 8 -s 4 -n --avoid '(^|/)(Xorg|gnome-shell|sshd)$'

# Server: conservative thresholds, log every action
sudo systemctl enable --now earlyoom
journalctl -u earlyoom -f

Recursos