GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo desencadenar una acción en condiciones de poca memoria en Linux?

Sí, el kernel de Linux proporciona un mecanismo para esto:notificación de presión de memoria . Esto está documentado en https://www.kernel.org/doc/Documentation/cgroup-v1/memory.txt, sección Memory Pressure .

En resumen, registra un descriptor de archivo eventfd en /sys/fs/cgroup/memory/memory.pressure_level sobre el que desea recibir notificaciones. Estas notificaciones pueden ser low , medium , o critical . Un caso de uso típico sería liberar algunos o todos los cachés internos en su proceso cuando recibe una notificación, para evitar una eliminación inminente de OOM.


Lo que está preguntando es, básicamente, una devolución de llamada basada en el kernel en una condición de poca memoria, ¿verdad? Si es así, creo firmemente que el núcleo no proporcionar tal mecanismo, y por una buena razón: al tener poca memoria, debería ejecutar inmediatamente lo único que puede liberar algo de memoria:el asesino OOM. Cualquier otro programa puede detener la máquina.

De todos modos, puede ejecutar una solución de monitoreo simple en el espacio de usuario. Tuve el mismo requisito de depuración/acción de poca memoria en el pasado, y escribí un bash simple que hizo lo siguiente:

  • monitor de una marca de agua blanda: si el uso de la memoria está por encima de este umbral, recopile algunas estadísticas (procesos, memoria libre/utilizada, etc.) y envíe un correo electrónico de advertencia;

  • monitor de una marca de agua dura: si el uso de la memoria está por encima de este umbral, recopile algunas estadísticas y elimine los procesos que consumen más memoria (o menos importantes), luego envíe un correo electrónico de alerta.

Tal secuencia de comandos sería muy liviana y puede sondear la máquina en intervalos pequeños (es decir, 15 segundos)


Linux
  1. Cómo eliminar búferes de memoria y caché en Linux

  2. Cómo verificar el uso de memoria en un servidor basado en Linux

  3. ¿Cómo registrar el consumo de memoria en Linux?

  4. Cómo encontrar el uso de la memoria del usuario en Linux

  5. ¿Cómo afectará a Linux el error de memoria de un solo bit?

Cómo verificar el uso de memoria en Linux

Cómo verificar la memoria compartida de Linux usando el comando ipcs

Cómo borrar la memoria de intercambio en Linux

Cómo deshabilitar permanentemente el intercambio en Linux

¿Cómo limpiar algo de espacio en disco en una instancia de Linux?

¿Cómo funciona el intercambio de memoria en Linux?