Prioridades procesos Linux

A veces nos puede interesar priorizar los procesos corriendo en un Linux (por ejemplo, en un servidor concurrido en el que hay tareas de diversa importancia)

Para casos puntuales, lo más fácil es (impersonándose como la superusuaria Ruth) cambiar la prioridad indirectamente con (re)nice. Indirectamente porque los comandos nice y renice alteran el valor “niceness” (“majeza” :-P) del proceso. Cuánto más alto el valor, más majo es el proceso, o sea, más cede el paso a otros (menor prioridad para él mismo). El rango de valores para la “majeza” es de -20 a a 19.

En el caso de la prioridad de los procesos, funciona al revés: cuanto menor el valor, mayor la prioridad. Típicamente, una prioridad 0 sería la más alta, y 40 la menor. La prioridad por defecto sería 20. Pero ojo, todos estos valores son un poco relativos… Lo que los comandos de usuario (como top) muestran en realidad es el “raw nice value” para el espacio de usuario (que como hemos dicho, va de 0 a 40). Los valores “reales” de prioridades van definidos en el kernel (prio.h), con lo cual son susceptibles de cambio entre distribuciones y/o versiones del kernel (lo que a su vez podría afectar potencialmente a los rangos mencionados).

Para profundizar en estas sutilezas: “Understanding the Linux Kernel”, en O’Reilly; el paper “Understanding the Linux 2.6.8.1 CPU Scheduler” de Josh Aas (aunque ya tiene 10 años, sirve para los conceptos fundamentales); y/o el artículo “Understanding Linux Processes”

Si queremos hacer ajustes por defecto, podemos recurrir a PAM:

1) asegurarse de que se está cargando el módulo pam_limits para la aplicación que nos interesa. Por ejemplo, en /etc/pam.d/login debería haber una línea (sin comentar) tipo…

session    required   pam_limits.so

2) especificar la prioridad por defecto en /etc/security/limits.conf:

usuario_enchufado      -       priority        -10

En el ejemplo, se establece la niceness por defecto a -10, con lo que la prioridad por defecto para usuario_enchufado es 10 (más alta)

Podemos comprobar si los cambios han surgido efecto con ps o alguna variante de top, columna “priority”

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *