En este paso, aprenderá a influir en la prioridad de programación de los procesos utilizando los comandos nice y renice. El valor nice (también conocido como niceness) de un proceso indica su prioridad al programador de Linux. Un valor nice más bajo (más negativo) significa una prioridad más alta, mientras que un valor nice más alto (más positivo) significa una prioridad más baja. El rango de valores nice suele ser de -20 (prioridad más alta) a 19 (prioridad más baja), siendo 0 el valor predeterminado.
-
Iniciar múltiples instancias de sha1sum /dev/zero & y luego iniciar una instancia adicional con un nivel nice de 10.
Iniciaremos varios procesos sha1sum para simular un sistema ocupado. Luego, iniciaremos uno con una prioridad deliberadamente más baja (valor nice más alto) para observar el efecto.
Primero, inicie tres instancias regulares (ajuste según el recuento de núcleos de su CPU si lo desea, pero al menos tantos como procesadores virtuales para crear contención):
for i in {1..3}; do sha1sum /dev/zero & done
A continuación, inicie la cuarta instancia con un nivel nice de 10. Este proceso tendrá una prioridad más baja en comparación con los demás.
nice -n 10 sha1sum /dev/zero &
Verá una salida similar a esta, que indica los PID de los procesos en segundo plano:
[1] 5443
[2] 5444
[3] 5445
[4] 5446
(Nota: Los valores PID en su salida variarán.)
-
Utilizar los comandos ps y pgrep para mostrar el PID, el porcentaje de uso de CPU, el valor nice y el nombre del ejecutable para cada proceso.
Observe las columnas %CPU y NI. La instancia con el valor nice de 10 debería mostrar un porcentaje de uso de CPU más bajo que las otras instancias, ya que el programador le da menos tiempo de CPU.
ps -o pid,pcpu,nice,comm $(pgrep sha1sum)
Busque el proceso con el valor NI 10. Su %CPU debería ser notablemente más bajo que los demás.
PID %CPU NI COMMAND
5443 56.8 0 sha1sum
5444 58.0 0 sha1sum
5445 56.5 0 sha1sum
5446 6.7 10 sha1sum
(Nota: Los valores exactos de %CPU variarán según la carga del sistema y el recuento de núcleos, pero el proceso con nice 10 debería tener una cuota más baja.)
-
Utilizar el comando sudo renice para cambiar el nivel nice de uno de los procesos regulares a 5.
El comando renice le permite cambiar el valor nice de un proceso que ya se está ejecutando. Demostraremos esto cambiando uno de los procesos regulares (valor nice 0) a un valor nice de 5.
Primero, identifique el PID de uno de los procesos sha1sum que tiene un valor nice de 0 de la salida del comando ps anterior. Usemos el primero del ejemplo anterior (PID 5443).
sudo renice -n 5 <PID_of_regular_process>
Reemplace <PID_of_regular_process> con el PID real que identificó. Por ejemplo:
sudo renice -n 5 5443
Debería ver una salida que confirme el cambio de prioridad:
5443 (process ID) old priority 0, new priority 5
-
Repetir los comandos ps y pgrep para mostrar el porcentaje de CPU y el nivel nice.
Observe el cambio en el uso de la CPU para el proceso cuyo valor nice modificó. El proceso con el valor nice 5 ahora debería tener un uso de CPU ligeramente más bajo en comparación con los procesos con el valor nice 0, pero más alto que el proceso con el valor nice 10.
ps -o pid,pcpu,nice,comm $(pgrep sha1sum)
Debería ver que el valor NI para el proceso modificado ahora es 5, y su uso de CPU refleja su nuevo nivel de prioridad.
PID %CPU NI COMMAND
5443 55.4 5 sha1sum
5444 67.2 0 sha1sum
5445 67.1 0 sha1sum
5446 7.5 10 sha1sum
(Nota: Los valores exactos de %CPU variarán, pero debería observar que los procesos con valores nice más bajos (prioridad más alta) obtienen más tiempo de CPU.)