web-dev-qa-db-fra.com

Comment le noyau oom score est-il calculé?

Regardé sur Google et n'a pas pu trouver quoi que ce soit expliquant comment le score de proc/<pid>/oom_score est calculé. Pourquoi utiliser ce score au lieu d'utiliser simplement la mémoire totale utilisée?

12
James Kingsbery

Voir Goldwyn Rodrigues article 2009 Pour la mise en œuvre à cette époque, Jonathan Corbet's article 201 Pour ce que je crois, c'est le comportement actuel, et Jonathan Corbet's article de 201 = Pour des idées sur les changements futurs.

À partir de l'article 2010:

Dans le jeu de patchs de David, les anciennes heuristiques () 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ée par le processus. Si le système dans son ensemble est à court de mémoire, la "mémoire disponible" est la somme de tout RAM et espace d'échange disponible sur le système. Si, à la place, la situation de l'ONU est causée par l'épuisement La mémoire autorisée à un groupe CPuset/contrôle donné, puis "mémoire disponible" est le montant total alloué à ce groupe de contrôle. Un calcul similaire est effectué si des limites imposées par une stratégie de mémoire ont été dépassées. Dans chaque cas, l'utilisation de la mémoire de Le processus est réputé être la somme de son ensemble de résident (le nombre de RAM pages qu'il utilise) et son utilisation de swap.

Ce calcul produit un nombre à dix fois par conséquent; Un processus qui utilise chaque octet de la mémoire disponible aura un score de 1000, tandis qu'un processus n'utilisant aucune mémoire aura un score de zéro. Il existe très peu de modifications heuristiques à ce score, mais le code soustrait toujours une petite quantité (30) du score des processus appartenant à des racines de la notion qu'il est légèrement plus précieux que les processus appartenant à l'utilisateur.

Un autre Tweak appliqué est d'ajouter la valeur stockée dans la variable OOM_SCORE_ADJ de chaque processus, qui peut être ajustée via/proc. Ce bouton permet l'ajustement de l'attractivité de chaque processus au tueur OMM dans l'espace utilisateur; Le réglage de -1000 désactivera entièrement Oom Kills, tout en définissant sur +1000, soit l'équivalent de la peinture d'une cible importante sur le processus associé.

18
sciurus