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' -notify
opzione per SGEqsub
, che invierà SIGUSR1
prima 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.