El 11.04, /proc/[pid]
contiene oom_score_adj
, pero man proc
describe el viejo oom_adj
. Busqué en Google sin éxito ninguna información sobre cómo usar esto.
Lo que necesito arreglar es que los procesos iniciados por 'pbs' o 'gridengine' se eliminen antes de que se elimine cualquier otra cosa. ¿Cómo puedo hacer eso?
process
memory-usage
bmargulies
fuente
fuente
Respuestas:
Basado en mis propias preguntas y respuestas sobre Unix y Linux sobre una pregunta similar.
Como Stuart señaló muy bien en su respuesta , los valores válidos son enteros en el rango de -1000 a 1000 para
oom_score_adj
. Cuanto más bajo es el valor, menor es la probabilidad de que sea asesinado.Es muy inconveniente tener que cambiar este valor una y otra vez una vez que reinicia la aplicación. La información simplemente se pierde después de que el proceso ha finalizado. Upstart (el demonio init en Ubuntu), tiene una buena opción para que esto se configure para demonios para asegurarse de que esté configurado cada vez que se haya (re) iniciado:
Entonces, básicamente, puede editar el
/etc/init/myservice.conf
archivo de configuración para los servicios que desea cambiar, para incluir una líneaoom score -1000
. Supongo que los servicios 'pbs' o 'gridengine' de los que habla en su pregunta están habilitados para Upstart, de lo contrario, necesitará otra forma de cambiar esto permanentemente.fuente
Si puede modificar el script de inicio generando el proceso que desea priorizar para oom-killer, agregue lo siguiente al script de inicio:
El valor se hereda para los procesos secundarios.
fuente
Si establece un valor alto (ish) para oom_adj o oom_score_adj, se eliminarán primero. p.ej
oom_adj va de -16 a 15 y, como se mencionó anteriormente, oom_score_adj acepta -1000 a 1000
fuente
sudo sh -c "echo -1000 > /proc/[PID]/oom_score_adj"
Examinar el código siempre es una buena idea. Normalmente uso la función de búsqueda de kernel.org, pero actualmente no funciona. Github también hace un buen trabajo. Encontré esto:
Desde https://github.com/mirrors/linux-2.6/commit/a63d83f427fbce97a6cea0db2e64b0eb8435cd10#include/linux/oom.h
fuente
Tenemos choom ahora.
tl; dr:
choom --adjust -100 myprogram
.La página del manual tiene más información.
fuente