Problemas de desactivación del OOM-killer de Linux

Problemas de desactivación del OOM-killer de Linux

Tengo una máquina Linux sin intercambio, que tiene vm.overcommit_memory=2y vm.overcommit_ratio=100configura. Sin embargo, estas configuraciones parecen no tener ningún efecto. Algunos procesos recién iniciados que intentan consumir mucha memoria todavía están siendo eliminados por OOM en lugar de que se les niegue la asignación de memoria. ¿Es porque los procesos iniciados antes sysctl -w vm.overcommit_memory=2 vm.overcommit_ratio=100(por ejemplo, antes de que /etc/sysctl.confse aplique durante el arranque) aún pueden acceder a su memoria sobrecargada y, por lo tanto, activar el asesino OOM?¿Es posible (1) deshabilitar la sobreasignación de memoria utilizando los parámetros del kernel, o (2) en tiempo de ejecución obligar al kernel a asignar toda la memoria sobreasignada para todos los procesos?

EDITAR: Después de explorar Documentation/el código fuente relevante y parte de Linux (git c6fa8e6de3)(1)Parece poco probable.

Respuesta1

Estás intentando algo que simplemente no es posible. Si deja que el sistema se ejecute casi hasta el agotamiento, siempre existirá la posibilidad de que un proceso finalice debido al agotamiento de la memoria. Hay muchos escenarios que no se pueden evitar, pero el más fácil de entender es un error de página causado por un proceso que agrega una página a su pila.

Necesita un intercambio o un colchón de RAM si desea evitar la muerte del oom.

información relacionada