Ajustando la prioridad de los procesos: nice, renice

Cada proceso en el sistema está corriendo con prioridades definidas, llamadas también “nice value”, que puede variar desde -20 (mayor prioridad) a 19 (menor prioridad). Si no está definido, cada proceso correrá con prioridad 0 de manera predeterminada (la prioridad “base” para la administración de procesos). Los procesos con mayor prioridad (nice value menor, hasta -20) serán agendados para ejecutar más seguido que otros que tienen menor prioridad (hasta 19), garantizando así más ciclos del procesador para dichos procesos. Los usuarios que no sean el superusuario sólo pueden bajar la prioridad de los procesos que poseen en el rango de 0 a 19. El superusuario (root) puede ajustar la prioridad de cualquier proceso a cualquier valor.

renice

Si uno o más procesos usan muchos recursos del sistema, Usted puede cambiar las prioridades de los mismos en vez de terminarlos. Para hacerlo, se usa el comando renice. La sintaxis del mismo es la siguiente:

renice prioridad [[-p] pid ...] [[-g] pgrp ...] [[-u] usuario ...]

donde prioridad es el valor de la prioridad, pid (use la opción -p para múltiples procesos) es el ID del proceso, pgrp (precedido por la opción -g) si son varios) es el ID de grupo del proceso, y usuario (-u para más de uno) es el nombre de usuario del dueño del proceso.

Supongamos que se está ejecutando un proceso con PID 785, el cual realiza una operación científica compleja, y mientras el proceso está trabajando Usted desea jugar un juego para el que necesita liberar recursos del sistema. Entonces, teclea:

$ renice +15 785

En este caso, su proceso probablemente tardará un poco más en finalizar pero no evitará que otros procesos utilicen más tiempo de CPU.

Si Usted es el administrador del sistema y nota que algún usuario está corriendo muchos procesos que utilizan muchos recursos del sistema, puede cambiar la prioridad de los procesos de dicho usuario con un único comando:

# renice +20 -u peter

Luego de esto, todos los procesos de peter tendrán la prioridad menor y no obstruirán a los procesos de otros usuarios.

nice

Ahora que sabe como puede cambiar la prioridad de los procesos, puede desear correr un comando con una prioridad definida. Para esto, utilice el comando nice.

En este caso debe especificar su comando como una opción para nice. La opción -n se usa para ajustar el valor de la prioridad. De manera predeterminada nice ajusta una prioridad de 10.

Por ejemplo, Usted desea crear una imagen ISO de un CD-ROM de instalación de Mandrakelinux:

$ dd if=/dev/cdrom of=~/mdk1.iso

En algunos sistemas con un CD-ROM IDE común, el proceso de la copia de un volumen grande de información puede utilizar muchos recursos del sistema. Para evitar que la copia bloquee a los demás procesos, se puede comenzar el proceso de copia con una prioridad disminuida usando este comando:

$ nice -n 19 dd if=/dev/cdrom of=~/mdk1.iso

y continuar con lo que estaba haciendo.