Sobes.tech
Middle

Comment Linux détermine-t-il quel processus terminer?

sobes.tech IA

Réponse de l'IA

Linux utilise l'algorithme OOM (Out-Of-Memory) Killer pour déterminer quels processus doivent être terminés lorsque le système manque de mémoire RAM. Cet algorithme analyse diverses métriques pour choisir les processus ayant le moindre impact négatif sur le système lors de leur terminaison.

Les principaux facteurs pris en compte par l'OOM Killer :

  • oom_score : Indicateur numérique reflétant l'impact probable de la terminaison d'un processus sur le système. Plus le score est élevé, plus il est probable que le processus soit sélectionné pour être terminé. Ce score est calculé en fonction de la consommation de mémoire du processus, de la priorité du processus (valeur nice) et d'autres facteurs.
  • Quantité de mémoire utilisée : Les processus consommant beaucoup de mémoire ont généralement un oom_score plus élevé.
  • Priorité du processus : Les processus avec une priorité plus basse (valeur nice plus élevée) ont plus de chances d'être terminés.
  • Temps de vie du processus : Les processus plus "jeunes" peuvent avoir un oom_score plus élevé.
  • Processus parent : L'OOM Killer essaie de ne pas terminer les processus critiques du système ou ceux dont dépendent d'autres processus importants.

L'utilisateur peut influencer le comportement de l'OOM Killer en modifiant la valeur de oom_score_adj pour des processus spécifiques. Ce décalage s'ajoute au oom_score de base, permettant de rendre un processus moins ou plus susceptible d'être terminé.

# Voir le oom_score actuel pour le processus avec PID 1234
cat /proc/1234/oom_score

# Voir le oom_score_adj actuel pour le processus avec PID 1234
cat /proc/1234/oom_score_adj

# Définir la valeur minimale de oom_score_adj (-1000) pour le processus avec PID 1234
# Cela garantit pratiquement que le processus ne sera pas terminé par l'OOM Killer
echo -1000 > /proc/1234/oom_score_adj

Ainsi, Linux détermine quel processus terminer en cas de pénurie de mémoire, en se basant sur un algorithme complexe qui pèse divers facteurs pour minimiser les conséquences négatives sur la stabilité du système.