Mon ordinateur a récemment manqué de mémoire (une conséquence non inattendue de la compilation de logiciels en travaillant avec de grands ensembles de données SIG). Dans le journal système détaillant comment il a traité la condition de MOO est la ligne suivante:
Out of memory: Kill process 7429 (Java) score 259 or sacrifice child
Qu'est-ce que c'est or sacrifice child
sur? Certes, il ne réfléchit pas à un rituel sombre pour faire avancer les choses?
À partir des fichiers source que j'ai trouvés oom_kill.c , le OOM Killer, après qu'un tel message est écrit dans le journal système, vérifie les enfants du processus identifié et évalue si possible de tuer l'un d'eux à la place du processus lui-même .
Voici un commentaire extrait du fichier source expliquant ceci:
/*
* If any of p's children has a different mm and is eligible for kill,
* the one with the highest oom_badness() score is sacrificed for its
* parent. This attempts to lose the minimal amount of work done while
* still freeing memory.
*/
Il s'agit de tuer un enfant processus du processus désigné pour recevoir un signal KILL
.
C'est le tueur Oom (Out of memory). Lorsque votre système manque de mémoire, le noyau linux tue les processus pour libérer de la mémoire. Une heuristique détermine quel processus est le meilleur candidat pour libérer de la mémoire sans endommager le système (généralement, les processus appartenant à la racine ne sont pas les meilleurs candidats).
Plus de détails ici: Comment le tueur OOM décide quel processus tuer en premier?