Nel nostro cluster, stiamo limitando le risorse dei nostri processi, ad esempio memory ( memory.limit_in_bytes).
Penso che, alla fine, anche questo sia gestito tramite il killer OOM nel kernel Linux (sembra leggerlo il codice sorgente ).
C'è un modo per ricevere un segnale prima che il mio processo venga ucciso? (Proprio come l' -notifyopzione per SGEqsub , che invierà SIGUSR1prima che il processo venga interrotto.)
Ho letto /dev/mem_notify qui ma non ce l'ho - c'è qualcos'altro al giorno d'oggi? Ho anche letto questo che sembra in qualche modo rilevante.
Voglio essere in grado di scaricare almeno una piccola traccia dello stack e forse altre utili informazioni di debug, ma forse posso anche recuperare liberando un po 'di memoria.
Una soluzione alternativa che sto attualmente utilizzando è questo piccolo script che verifica frequentemente se sono vicino (95%) al limite e, in tal caso, invia il processo a SIGUSR1. In Bash, sto iniziando questo script in background ( cgroup-mem-limit-watcher.py &) in modo che cerchi altri proc nello stesso cgroup e si chiuda automaticamente quando il processo Bash padre termina.