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
| Plataforma | Comando |
|---|---|
| Debian/Ubuntu | sudo apt install earlyoom |
| Fedora | sudo dnf install earlyoom (padrão no Fedora Workstation) |
| Arch Linux | sudo pacman -S earlyoom |
| From source | make && sudo make install do repo |
| Verify | earlyoom --version |
Habilitando o Serviço
| Comando | Descrição |
|---|---|
sudo systemctl enable --now earlyoom | Habilite e inicie o daemon |
sudo systemctl status earlyoom | Verifique se está executando |
journalctl -u earlyoom -f | Assista suas decisões ao vivo |
earlyoom | Execute em primeiro plano (testando) |
Como Decide
earlyoom observa dois números e age quando ambos caem abaixo de seus limiares:
| Métrica | Flag | Padrão-ish |
|---|---|---|
| Free RAM % | -m PERCENT | ex. 10% |
| Free swap % | -s PERCENT | ex. 10% |
| Kill trigger | ambos abaixo dos limiares | — |
# Kill when RAM < 5% AND swap < 5%
earlyoom -m 5 -s 5
Opções-Chave
| Opção | Descrição |
|---|---|
-m PERCENT[,KILL] | Limite de RAM para avisar/matar (dois valores = aviso,matar) |
-s PERCENT[,KILL] | Limite de swap para avisar/matar |
-M SIZE | Limite de RAM em KiB em vez de porcentagem |
-r INTERVAL | Intervalo de relatório de memória (segundos) |
-n | Ativar notificações de desktop ao matar |
-N COMMAND | Execute um comando ao matar (ex. alerta customizado) |
--prefer REGEX | Prefira matar processos com um nome correspondente |
--avoid REGEX | Evite matar processos com um nome correspondente |
-p | Dê ao earlyoom uma pontuação OOM favorável |
-d | Ativar 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)$'
| Diretiva | Efeito |
|---|---|
--prefer | Mate esses primeiro quando possível |
--avoid | Mate 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
| Aspecto | earlyoom | systemd-oomd | Kernel OOM killer |
|---|---|---|---|
| Layer | Daemon de espaço do usuário | Espaço do usuário (systemd, baseado em PSI) | Kernel |
| Trigger | Free RAM/swap % | Informações de Pressure Stall (PSI) | Verdadeiramente sem memória (tarde) |
| Granularity | Processo (maior) | cgroup/unit | Processo |
| Config | Flags simples | Política systemd oomd | Limitado (oom_score_adj) |
| Best for | Rede de segurança simples e eficaz | cgroups 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