earlyoom - Daemon Out-of-Memory précoce
earlyoom - Daemon Out-of-Memory précoce
earlyoom est un daemon léger de l’espace utilisateur qui empêche le classique problème Linux « tout le système a gelé quand il a manqué de RAM ». Quand la mémoire devient faible, le tueur OOM du noyau en mémoire réagit souvent trop tard, après que la machine soit déjà devenue non-réactive du fait du thrashing. earlyoom surveille la RAM disponible et le swap et, quand ils tombent en dessous des seuils configurables, tue le plus gros consommateur de mémoire plus tôt — gardant le système interactif au lieu de s’arrêter. C’est simple, sans dépendances et largement utilisé sur les bureaux et serveurs.
Installation
| Plateforme | Commande |
|---|---|
| Debian/Ubuntu | sudo apt install earlyoom |
| Fedora | sudo dnf install earlyoom (par défaut sur Fedora Workstation) |
| Arch Linux | sudo pacman -S earlyoom |
| Depuis la source | make && sudo make install depuis le dépôt |
| Vérifier | earlyoom --version |
Activation du service
| Commande | Description |
|---|---|
sudo systemctl enable --now earlyoom | Activer et démarrer le daemon |
sudo systemctl status earlyoom | Vérifier qu’il s’exécute |
journalctl -u earlyoom -f | Regarder ses décisions en direct |
earlyoom | Exécuter au premier plan (test) |
Comment il décide
earlyoom regarde deux nombres et agit quand tous les deux tombent en dessous de leurs seuils :
| Métrique | Drapeau | Environ par défaut |
|---|---|---|
| RAM libre % | -m PERCENT | par ex. 10% |
| Swap libre % | -s PERCENT | par ex. 10% |
| Déclencheur de kill | tous les deux sous les seuils | — |
# Kill when RAM < 5% AND swap < 5%
earlyoom -m 5 -s 5
Options principales
| Option | Description |
|---|---|
-m PERCENT[,KILL] | Seuil RAM pour avertir/tuer (deux valeurs = avertir,tuer) |
-s PERCENT[,KILL] | Seuil swap pour avertir/tuer |
-M SIZE | Seuil RAM en KiB au lieu de pourcentage |
-r INTERVAL | Intervalle de rapport mémoire (secondes) |
-n | Activer les notifications de bureau sur le kill |
-N COMMAND | Exécuter une commande au kill (par ex. alerte personnalisée) |
--prefer REGEX | Préférer tuer les processus correspondant à un nom |
--avoid REGEX | Éviter de tuer les processus correspondant à un nom |
-p | Donner à earlyoom un score OOM favorable |
-d | Activer la sortie de débogage |
Préférer / Éviter les processus
# Prefer killing browsers/compilers; protect the display server and sshd
earlyoom -m 8 -s 8 \
--prefer '(^|/)(chrome|firefox|cc1plus|java)$' \
--avoid '(^|/)(Xorg|sshd|systemd)$'
| Directive | Effet |
|---|---|
--prefer | Tuer d’abord ceux-ci quand possible |
--avoid | Tuer ceux-ci en dernier recours |
Ajuster ceux-ci empêche un processus emballé de prendre votre session ou accès SSH avec lui.
Fichier de configuration
Sur les distros systemd, les options vivent généralement dans un fichier env :
# /etc/default/earlyoom (Debian) or the unit's EnvironmentFile
EARLYOOM_ARGS="-m 5 -s 5 -r 60 --avoid '(^|/)(sshd|Xorg)$'"
Puis sudo systemctl restart earlyoom.
earlyoom vs systemd-oomd vs kernel OOM
| Aspect | earlyoom | systemd-oomd | Kernel OOM killer |
|---|---|---|---|
| Couche | Daemon utilisateur | Utilisateur (systemd, PSI-based) | Noyau |
| Déclencheur | RAM/swap libre % | Pressure Stall Info (PSI) | Véritablement à court de mémoire (tard) |
| Granularité | Processus (plus gros) | cgroup/unit | Processus |
| Config | Drapeaux simples | Politique oomd systemd | Limité (oom_score_adj) |
| Meilleur pour | Filet de sécurité simple et efficace | cgroups gérées par systemd | Dernier recours |
Sur les distros systemd modernes,
systemd-oomd(PSI-based) est une alternative ; earlyoom reste populaire pour sa simplicité et fonctionne partout.
Flux de travail courants
# 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