OOM Killer c'est quoi ?
Comprendre et Gérer le "Out of Memory" (OOM) dans Linux
I. Concept de l'OOM dans Linux
1. Définition de l'OOM Killer
• Mécanisme intégré au noyau Linux
• Intervient lors d'un manque critique de mémoire (RAM ou swap)
• Sélectionne et termine des processus pour libérer de la mémoire
2. Pourquoi l'OOM se produit-il ?
• Linux utilise un modèle de surallocation de mémoire
• Le noyau peut allouer plus de mémoire que disponible physiquement
• Fonctionne bien car les applications n'utilisent pas toujours toute la mémoire demandée
• Problème survient quand plusieurs applications utilisent toute leur mémoire allouée
II. Fonctionnement de l'OOM Killer
1. Processus de sélection automatique
• Le noyau détecte une situation de mémoire critique
• Évalue tous les processus en cours d'exécution
• Attribue un score (oom_score) à chaque processus
• Termine automatiquement le processus avec le score le plus élevé
2. Calcul du score OOM
• Basé principalement sur l'utilisation de la mémoire
• Tient compte d'autres facteurs (temps d'exécution, privilèges, etc.)
3. Paramètres dans linux pouvant gérer OOM
- vm.overcommit_memory
- vm.oom_kill_allocating_task
- kernel.shmmax
- kernel.shmall
- vm.min_free_kbytes
III. Applications et outils pour gérer l'OOM
✅ À privilégier :
• earlyoom : Tue les processus avant l'intervention de l'OOM Killer du noyau
• systemd-oomd : Gestion OOM plus fine via systemd
• cgroups v2 : Gestion granulaire des ressources, incluant la mémoire
⚠️ À tester :
• nohang : Alternative à earlyoom avec fonctionnalités supplémentaires
• oomd : Démon OOM de Facebook, puissant mais complexe
• zram : Compression de la mémoire en RAM, retarde l'OOM
❌ À éviter :
• Désactiver complètement l'OOM Killer
• Régler vm.overcommit_memory à 2
IV. Pourquoi utiliser des applications tierces pour gérer l'OOM ?
Bien que Linux dispose d'un mécanisme OOM intégré, il existe plusieurs raisons d'utiliser des applications tierces :
1. Intervention précoce
2. Personnalisation avancée
3. Priorisation intelligente
4. Notifications et journalisation :
5. Gestion proactive
6. Adaptation aux environnements spécifiques
7. Réactivité améliorée
V. Bonnes pratiques
1. Surveiller régulièrement l'utilisation de la mémoire
2. Optimiser les applications pour une meilleure gestion de la mémoire
3. Utiliser des outils comme earlyoom pour une intervention précoce
4. Ajuster les scores OOM des processus critiques
5. Considérer l'augmentation de la RAM ou du swap si les OOM sont fréquents
Conclusion
Comprendre et gérer efficacement l'OOM est crucial pour maintenir la stabilité et les performances des systèmes Linux. Bien que le noyau Linux offre une gestion de base de l'OOM, l'utilisation d'outils tiers peut apporter une flexibilité et une efficacité supplémentaires, particulièrement dans des environnements complexes ou avec des exigences spécifiques.
Sources :
forum opensuse tw
wikipedia OOM
A. Un peu de pratique
a. Trouver le PID du processus :
pidof [nom_du_processus]
b. Vérifier le score OOM :
cat /proc/[PID]/oom_score
c. Voir le score ajusté :
cat /proc/[PID]/oom_score_adj
III. Gestion de l'OOM
1. Ajuster le comportement de l'OOM Killer
• Modifier oom_score_adj : echo [valeur] > /proc/[PID]/oom_score_adj
• Valeurs entre -1000 et 1000
• Plus la valeur est basse, moins le processus risque d'être tué