Cambiar la prioridad de los procesos en Linux

Si bien es posible lanzar procesos indicando la prioridad en Linux, existen casos en los que necesitamos cambiar la prioridad de un proceso en ejecución. Para eso existe el comando renice.

renice [-n] <niceness> [-p|-g|-u] <identificadores>

donde identificadores se corresponde con:

  • un conjunto de ids de proceso (pid) si no se especifica parámetro o se precede por -p
  • un conjunto de id de grupo de proceso si se precede por -g
  • un conjunto de usuarios si se precede por -u.

Los usuarios que no sean el superusuario sólo pueden bajar la prioridad de sus procesos, es decir, aumentar su niceness (en el rango de 0 a 19). El superusuario (root) puede ajustar la prioridad de cualquier proceso usando un valor nice del rango completo (-20 a 19).

Ejemplo

Suponiendo que se está importando una base de datos y este proceso está consumiendo mucha CPU, obtenemos su PID (process id) mediante top o pgrep, y le bajamos la prioridad ejecutando desde la consola

$ renice +5 2119
2119 (process ID) old priority 0, new priority 5

Podemos repetir la operación, si la prioridad establecida no fuera suficientemente baja:

$ renice +7 2119
2119 (process ID) old priority 5, new priority 7

De esta manera, es posible que el proceso demore un poco más en terminar su ejecución, pero al mismo tiempo, otros tendrán más CPU disponible.


Ahora bien, si después de un rato vemos que no se concretara, podríamos intentar incrementar su prioridad haciendo:

$ renice 0 2119
renice: failed to set priority for 2119 (process ID): Permission denied

Esta acción falla debido a que para bajar el valor nice es necesario ser superusuario:

$ sudo renice 0 2119
2119 (process ID) old priority 10, new priority 0

Solo con el superusuario podemos establecer un niceness < 0:

$ sudo renice -5 2119
2119 (process ID) old priority 0, new priority -5

También te puede interesar:

Cambiar la prioridad de un proceso en Windows

Anuncios

3 comentarios en “Cambiar la prioridad de los procesos en Linux

  1. Pingback: Ejecutar procesos indicando la prioridad en Linux | Esas cosas que aprendo

  2. Pingback: Cambiar la prioridad de un proceso en Windows | Esas cosas que aprendo

  3. Pingback: Prioridades en Linux | Esas cosas que aprendo

Los comentarios están cerrados.