J'ai regardé sur Google et je n'ai rien trouvé qui explique comment le score proc/<pid>/oom_score
est calculé. Pourquoi utiliser ce score au lieu d'utiliser simplement la mémoire totale utilisée?
J'ai regardé sur Google et je n'ai rien trouvé qui explique comment le score proc/<pid>/oom_score
est calculé. Pourquoi utiliser ce score au lieu d'utiliser simplement la mémoire totale utilisée?
Réponses:
Voir l' article 2009 de Goldwyn Rodrigues pour la mise en œuvre à ce moment-là, l' article 2010 de Jonathan Corbet pour ce que je pense être le comportement actuel, et l' article 2013 de Jonathan Corbet pour des idées sur les changements futurs.
De l'article de 2010:
Dans l'ensemble de patchs de David, les anciennes heuristiques badness () ont presque entièrement disparu. Au lieu de cela, le calcul se transforme en une simple question de quel pourcentage de la mémoire disponible est utilisé par le processus. Si le système dans son ensemble manque de mémoire, la «mémoire disponible» est la somme de toute la RAM et de l'espace de swap disponible pour le système. Si, au lieu de cela, la situation de MOO est causée par l'épuisement de la mémoire autorisée pour un groupe cpuset / contrôle donné, alors "mémoire disponible" est la quantité totale allouée à ce groupe de contrôle. Un calcul similaire est effectué si les limites imposées par une politique de mémoire ont été dépassées. Dans chaque cas, l'utilisation de la mémoire du processus est considérée comme la somme de son ensemble résident (le nombre de pages RAM qu'il utilise) et de son utilisation de swap.
Ce calcul produit en conséquence un nombre pour cent-dix; un processus qui utilise chaque octet de la mémoire à sa disposition aura un score de 1000, tandis qu'un processus n'utilisant aucune mémoire obtiendra un score de zéro. Il y a très peu de réglages heuristiques à ce score, mais le code soustrait toujours une petite quantité (30) du score des processus appartenant à la racine sur la notion qu'ils sont légèrement plus précieux que les processus appartenant à l'utilisateur.
Un autre ajustement qui est appliqué consiste à ajouter la valeur stockée dans la variable oom_score_adj de chaque processus, qui peut être ajustée via / proc. Ce bouton permet d'ajuster l'attractivité de chaque processus au tueur OOM dans l'espace utilisateur; la définition de -1000 désactivera complètement les suppressions de MOO, tandis que la définition de +1000 équivaut à peindre une grande cible sur le processus associé.