Le 11.04, /proc/[pid]
contient oom_score_adj
, mais man proc
décrit l'ancien oom_adj
. J'ai cherché sur Google sans succès pour toute information sur la façon de l'utiliser.
Ce que je dois arranger, c'est que les processus démarrés par «pbs» ou «gridengine» sont tués avant que quoi que ce soit d'autre ne soit tué. Comment puis je faire ça?
process
memory-usage
bmargulies
la source
la source
Réponses:
Basé sur mes propres questions / réponses sur Unix et Linux sur une question similaire.
Comme Stuart l'a très bien souligné dans sa réponse , les valeurs valides sont des entiers compris entre -1000 et 1000 pour
oom_score_adj
. La plus faible de la valeur, la baisser la chance qu'il va être tué.Il est très gênant d'avoir à modifier cette valeur encore et encore une fois que vous redémarrez l'application. Les informations sont simplement perdues après la fin du processus. Upstart (le démon init dans Ubuntu), a une option intéressante pour cela de configurer les démons pour s'assurer qu'il est défini chaque fois qu'il a (re) démarré:
Donc, fondamentalement, vous pouvez modifier le
/etc/init/myservice.conf
fichier de configuration des services que vous souhaitez modifier, pour inclure une ligneoom score -1000
. Je suppose que les services `` pbs '' ou `` gridengine '' dont vous parlez dans votre question sont activés par Upstart, sinon vous aurez besoin d'une autre façon de changer cela définitivement.la source
Si vous pouvez modifier le script de démarrage générant le processus que vous souhaitez hiérarchiser pour oom-killer, ajoutez ce qui suit au script de démarrage:
La valeur est héritée pour les processus enfants.
la source
Si vous définissez une valeur élevée (ish) pour oom_adj ou oom_score_adj, ils seront supprimés en premier. par exemple
oom_adj passe de -16 à 15 et comme mentionné ci-dessus oom_score_adj accepte -1000 à 1000
la source
sudo sh -c "echo -1000 > /proc/[PID]/oom_score_adj"
Regarder le code est toujours une bonne idée. Normalement, j'utilise la fonction de recherche de kernel.org, mais c'est actuellement en panne. Github fait aussi du bon travail. J'ai trouvé ça:
Depuis https://github.com/mirrors/linux-2.6/commit/a63d83f427fbce97a6cea0db2e64b0eb8435cd10#include/linux/oom.h
la source
Nous avons maintenant choom .
tl; dr:
choom --adjust -100 myprogram
.La page de manuel contient plus d'informations.
la source