En nuestro clúster, estamos restringiendo nuestros recursos de procesos, por ejemplo, memoria ( memory.limit_in_bytes
).
Creo que, al final, esto también se maneja a través del asesino OOM en el kernel de Linux (parece que se lee el código fuente ).
¿Hay alguna forma de obtener una señal antes de que se cierre mi proceso? (Al igual que la -notify
opción para SGEqsub
, que se enviará SIGUSR1
antes de que finalice el proceso).
Leí acerca de /dev/mem_notify
aquí pero no lo tengo, ¿hay algo más hoy en día? También leí esto que parece algo relevante.
Quiero poder al menos volcar un pequeño seguimiento de pila y tal vez alguna otra información útil de depuración, pero tal vez incluso pueda recuperarme liberando algo de memoria.
Una solución alternativa que estoy usando actualmente es este pequeño script que con frecuencia comprueba si estoy cerca (95%) del límite y, de ser así, envía el proceso a SIGUSR1
. En Bash, estoy comenzando este script en segundo plano ( cgroup-mem-limit-watcher.py &
) para que busque otros procs en el mismo cgroup y se cierre automáticamente cuando el proceso Bash principal muere.