earlyoom - Cheatsheet Daemon Early Out-of-Memory
earlyoom - Cheatsheet Daemon Early Out-of-Memory
earlyoom è un daemon leggero nello spazio utente che previene il classico problema di Linux “il sistema intero si è congelato quando ha finito la RAM”. Quando la memoria si esaurisce, il uccisore OOM nel kernel spesso reagisce troppo tardi, dopo che la macchina è già diventata non responsiva dal thrashing. earlyoom monitora la RAM e lo swap disponibili e, quando scendono sotto le soglie configurabili, uccide il consumatore di memoria più grande all”inizio — mantenendo il sistema interattivo invece di bloccarsi. È semplice, senza dipendenze e ampiamente utilizzato su desktop e server.
Installazione
| Piattaforma | Comando |
|---|---|
| Debian/Ubuntu | sudo apt install earlyoom |
| Fedora | sudo dnf install earlyoom (predefinito su Fedora Workstation) |
| Arch Linux | sudo pacman -S earlyoom |
| Dal sorgente | make && sudo make install dal repo |
| Verifica | earlyoom --version |
Abilitazione del Servizio
| Comando | Descrizione |
|---|---|
sudo systemctl enable --now earlyoom | Abilita e avvia il daemon |
sudo systemctl status earlyoom | Controlla che sia in esecuzione |
journalctl -u earlyoom -f | Guarda le sue decisioni dal vivo |
earlyoom | Esegui in primo piano (test) |
Come Decide
earlyoom osserva due numeri e agisce quando entrambi scendono al di sotto delle loro soglie:
| Metrica | Flag | Predefinito-ish |
|---|---|---|
| RAM libera % | -m PERCENT | ad es. 10% |
| Swap libero % | -s PERCENT | ad es. 10% |
| Trigger di uccisione | entrambi al di sotto delle soglie | — |
# Uccidi quando RAM < 5% E swap < 5%
earlyoom -m 5 -s 5
Opzioni Principali
| Opzione | Descrizione |
|---|---|
-m PERCENT[,KILL] | Soglia RAM per avvertire/uccidere (due valori = avvertire,uccidere) |
-s PERCENT[,KILL] | Soglia swap per avvertire/uccidere |
-M SIZE | Soglia RAM in KiB invece di percentuale |
-r INTERVAL | Intervallo di rapporto della memoria (secondi) |
-n | Abilita notifiche desktop su uccisione |
-N COMMAND | Esegui un comando su uccisione (ad es. avviso personalizzato) |
--prefer REGEX | Preferisci uccidere i processi che corrispondono a un nome |
--avoid REGEX | Evita di uccidere i processi che corrispondono a un nome |
-p | Dai a earlyoom stesso un punteggio OOM favorevole |
-d | Abilita l”output di debug |
Preferire / Evitare Processi
# Preferisci uccidere i browser/compilatori; proteggi il server display e sshd
earlyoom -m 8 -s 8 \
--prefer '(^|/)(chrome|firefox|cc1plus|java)$' \
--avoid '(^|/)(Xorg|sshd|systemd)$'
| Direttiva | Effetto |
|---|---|
--prefer | Uccidi prima questi quando possibile |
--avoid | Uccidi questi solo come ultimo resort |
L”accordatura di questi impedisce a un processo fuori controllo di portare via la tua sessione o l”accesso SSH con esso.
File di Configurazione
Sui sistemi systemd, le opzioni di solito vivono in un file env:
# /etc/default/earlyoom (Debian) o EnvironmentFile dell''unità
EARLYOOM_ARGS="-m 5 -s 5 -r 60 --avoid '(^|/)(sshd|Xorg)$'"
Quindi sudo systemctl restart earlyoom.
earlyoom vs systemd-oomd vs kernel OOM
| Aspetto | earlyoom | systemd-oomd | Kernel OOM killer |
|---|---|---|---|
| Livello | Daemon nello spazio utente | Spazio utente (systemd, basato su PSI) | Kernel |
| Trigger | RAM/swap libero % | Pressure Stall Info (PSI) | Veramente senza memoria (tardi) |
| Granularità | Processo (più grande) | cgroup/unità | Processo |
| Configurazione | Flag semplici | politica systemd oomd | Limitata (oom_score_adj) |
| Migliore per | Rete di sicurezza semplice ed efficace | cgroup gestiti da systemd | Ultimo resort |
Sui sistemi systemd moderni,
systemd-oomd(basato su PSI) è un”alternativa; earlyoom rimane popolare per la sua semplicità e funziona ovunque.
Flussi di Lavoro Comuni
# Desktop: mantieni l''interfaccia utente responsiva, notifica gli uccisioni, proteggi la sessione
earlyoom -m 8 -s 4 -n --avoid '(^|/)(Xorg|gnome-shell|sshd)$'
# Server: soglie conservative, registra ogni azione
sudo systemctl enable --now earlyoom
journalctl -u earlyoom -f