Ajustando la prioridad de los procesos: nice, renice

Cada proceso en el sistema está corriendo con prioridades definidas (llamadas también “nice value”). Este valor puede variar desde -20 a +20. La máxima prioridad para los procesos es -20. 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 prioridad máxima (cualquier valor negativo hasta -20) usan más recursos del sistema que otros. Los procesos con prioridad mínima (+20) funcionarán cuando otras tareas no usen el sistema. Los usuarios que no sean el super-usuario sólo pueden bajar la prioridad de los procesos que poseen en el rango de 0 a 20. El super-usuario (root) puede ajustar la prioridad de los procesos 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 tales tareas se puede usar el comando renice. La sintaxis del mismo es como sigue:

     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 tiene que corriendo un procesos con PID 785, y el mismo realiza una operación científica compleja, y mientras el proceso está trabajando Usted desea jugar un juego. Entonces, teclea:

     $ renice +15 785
    

En este caso, su proceso probablemente trabajará un poquito más. Sin embargo, 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 pedro
    

Luego de esto, todos los procesos de pedro tendrán la prioridad menor y no obstruirán 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.

Se debe teclear antes que el comando que desea correr. De manera predeterminada nice ajusta una prioridad de 10. El rango va desde -20 (prioridad mayor) a 19 (menor) La opción -n se usa para ajustar el valor de la prioridad.

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

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

Sin embargo, 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 que este proceso no impida que otros usuarios trabajen, podemos comenzar el proceso de copia con una prioridad disminuida usando este comando:

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

y continuar nuestro trabajo común.

Para cambiar la prioridad de un proceso también puede usar el utilitario top descripto antes. Use la tecla R dentro de la interfaz de top para cambiar la prioridad del proceso que pretenda.