2.9.- Administrar las prioridades de los procesos

Puede que a veces desee priorizar el uso de CPU de sus programas. Por ejemplo, puede que ejecute un programa que hace uso intensivo de la CPU pero que tarda mucho en terminar su tarea y no desea que éste interfiera con otros que poseen una naturaleza más interactiva. Otro posible caso es que, en un ordenador con gran carga, haya una tarea cuya ejecución es más importante que la de las demás, por lo que desea aumentar su prioridad. En ambos casos, el método usual para conseguir el objetivo pasa por utilizar los comandos nice y renice. Puede utilizar nice para iniciar un programa con una prioridad de uso específica o utilizar renice para alterar la prioridad de un programa en ejecución.

Podemos asignar una prioridad para nice: indicando la prioridad precedida de un guión (esto funciona bien en el caso de prioridades positivas, pero que les da el aspecto de un valor negativo), especificando la prioridad tras un parámetro --n o especificando la prioridad tras un parámetro --adjustment=. En todos los casos, estos parámetros van seguidos por el nombre del programa que desea ejecutar:

nice [argumento] [comando [argumentos-del-comando]]

nice_1

nice_2nice_3

 Los tres comandos que hemos visto arriba, ejecutan el programa ls con prioridad 12 y le pasan el fichero a data.txt que luego vemos el contenido con el comando cat. Si omitimos el valor de regulación, nice utilizara el valor 10 por defecto. El rango de valores posibles es de -20 a 19, donde los valores negativos tienen la prioridad más alta. Sólo root puede iniciar un programa con una prioridad incrementada (es decir, asignar un valor de prioridad negativo), no obstante cualquier usuario puede utilizar nice para iniciar un programa con una prioridad baja. La prioridad por defecto para ejecutar un programa sin nice es 0.

Si vemos que un proceso que está ejecutándose y consume demasiado tiempo de CPU o está siendo afectado por otros programas y, por tanto, se le debería asignar más tiempo de CPU, puede emplear el programa renice para modificar su prioridad sin interrumpir el funcionamiento del programa. La sintaxis es:

renice prioridad [[-p] pids] [[-g] pgrps] [[-u] usuarios]]

 Debe especificar la prioridad, que recibe los mismos valores que en nice. Además, debe especificar una o más PID (pids), una o más ID de grupo (pgrps) o uno o más nombres de usuario (usuarios). En los últimos casos, renice cambia la prioridad de todos los programas que coinciden con el criterio especificado, pero sólo root puede utilizar renice de esta manera. Una vez más, sólo root puede incrementar la prioridad de un proceso. Si indica un valor numérico sin una opción -p, -g o -u, renice asume que el valor es un PID. Podemos mezclar y combinar estos métodos de especificación.