Dans notre cluster, nous restreignons les ressources de nos processus, par exemple memory ( memory.limit_in_bytes
).
Je pense qu'en fin de compte, cela est également géré via le tueur OOM dans le noyau Linux (cela ressemble en lisant le code source ).
Existe-t-il un moyen d'obtenir un signal avant la fin de mon processus? (Tout comme l' -notify
option pour les SGEqsub
, qui sera envoyée SIGUSR1
avant la fin du processus.)
J'ai lu /dev/mem_notify
ici mais je ne l'ai pas - y a-t-il autre chose de nos jours? J'ai également lu ceci qui semble quelque peu pertinent.
Je veux pouvoir au moins vider une petite trace de pile et peut-être quelques autres informations de débogage utiles - mais peut-être que je peux même récupérer en libérant de la mémoire.
Une solution de contournement que j'utilise actuellement est ce petit script qui vérifie fréquemment si je suis proche (95%) de la limite et si oui, il envoie le processus a SIGUSR1
. Dans Bash, je démarre ce script en arrière-plan ( cgroup-mem-limit-watcher.py &
) pour qu'il surveille les autres procs du même groupe de contrôle et se ferme automatiquement lorsque le processus Bash parent meurt.