recibir señal antes de que OOM killer / cgroups elimine el proceso


11

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 -notifyopción para SGEqsub , que se enviará SIGUSR1antes 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.


No pude encontrar ninguna fuente de autoridad, ni pude encontrar una manera de invocar al asesino OOM para un proceso específico manualmente (para probar la idea) , pero por lo que encontré parece que el asesino OOM simplemente envía SIGTERM, por lo que debe configurar Un controlador para esta señal.
Hi-Angel

55
@ Hi-Angel: desde el código fuente de Linux , parece que envía SIGKILL.
Albert

@ Albert Después de leer el código fuente, también creo que OOM Killer enviará directamente una señal SIGKILL.
Andy

Respuestas:



5

OOM killer envía un SIGKILL ya que de lo contrario sería contraproducente dejar que el programa problemático elija continuar.

Esto significa que no hay absolutamente ninguna manera para que un proceso sepa cuándo está a punto de ser asesinado por él.

La gestión de tales problemas generalmente implica hacer correcciones a los programas o su configuración. A veces, dependiendo de la configuración del sistema, simplemente aumentar el espacio de intercambio puede dar al sistema operativo más flexibilidad de administración de memoria para evitar medidas tan drásticas.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.