Cómo establecer prioridades de proceso con nice y renice en Linux

Contenidos

Bash shell en una computadora portátil Ubuntu

los nice y renice Los comandos le posibilitan ajustar cómo el kernel trata sus procesos ajustando sus prioridades. Lea este tutorial para aprender a usarlos en Linux y sistemas operativos similares a Unix, como macOS.

Todo es cuestión de procedimiento

Dentro de su computadora Linux o semejante a Unix, habrá muchos procesos en ejecución inclusive antes de que inicie la aplicación que desea utilizar. La mayoría de estos procesos son ítems vitales del propio Linux o procesos de soporte para su entorno de escritorio gráfico. Están sucediendo muchas cosas detrás de escena. De todos modos, solo hay tantos recursos del sistema y tiempo de CPU para todos. El kernel de Linux es el controlador de todos estos procesos.

Es el kernel el que tiene que elegir qué procesos reciben atención y recursos en este momento, y cuáles disponen que esperar. El kernel hace malabarismos continuamente con los procesos y las prioridades para garantizar que la computadora funcione de la manera más fluida factible y que todos los procesos reciban la participación adecuada. Algunos procesos reciben un trato preferencial. Son tan importantes para el funcionamiento general de la computadora que sus necesidades deben ser lo primero antes que, digamos, su navegador.

El buen valor

Uno de los criterios utilizados para establecer cómo el kernel trata un procedimiento es el valor agradable. Cada procedimiento tiene un buen valor. El valor agradable es un número entero en el rango de -19 a 20. Todos los procesos estándar se inician con un valor agradable de cero.

El truco aquí es que cuanto mayor sea el valor agradable, mejor será su procedimiento para el otro Procesos. Dicho de otra forma, un valor alto y agradable le dice al kernel que este procedimiento está feliz de esperar. Un número negativo es lo opuesto a ser amable. Cuanto mayor sea el valor agradable negativo, más egoísta el procedimiento es. Está tratando de obtener la mayor cantidad de tiempo de CPU que puede, sin prestar atención los otros procesos.

Podemos utilizar el nice comando para colocar el buen valor cuando un se inicia el proceso y podemos utilizar renice para ajustar el buen valor de un proceso en ejecución.

El buen comando

Podemos utilizar el nice comando para ajustar el valor agradable de un programa cuando lo lanzamos. Esto nos posibilita incrementar o reducir la prioridad que el kernel le da al procedimiento, en vinculación con los otros procesos.

Supongamos que un programador ha escrito un programa llamado ackermann . Esto calcula Funciones de Ackerman. Es un uso intensivo de la CPU y la memoria. El programador puede iniciar el programa con el siguiente comando:

./ackermann

comando ackermann en la ventana de terminal

Podemos utilizar el top comando para ver el programa en ejecución.

top

top corriendo en una terminal

Podemos ver los detalles del ackermann programa en top. El buen valor es la cifra en la “columna NI”. Se puso a cero como podíamos esperar.

Reiniciemos y esta vez hagámoslo menos exigente. Estableceremos un buen valor de 15 para el ackermann programe de la próxima manera. Escriba agradable, un espacio, -15, otro espacio y posteriormente el nombre del programa que desea iniciar. En nuestro ejemplo, nuestro programador ficticio está usando ./ackermann.

nice -15 ./ackermann

Buen comando 15 en la ventana de terminal

Tenga cuidado, el «-15» no es quince negativo. Es quince positivo. El «-» es necesario para indicar nice estamos pasando un parámetro. Para indicar un número negativo, debe escribir dos caracteres «-«.

Si ahora empezamos top de nuevo, podemos ver el cambio en el comportamiento de ackermann.

top

top corriendo en una terminal

Con un buen valor de 15, ackermann no consume la mayor parte del tiempo de CPU. GNOME y Rhythmbox están usando más. Hemos reinado ackermann en un poco.

Ahora hagamos lo contrario y demos ackermann un buen valor negativo. Tenga en cuenta el uso de dos caracteres «-«. Para hacer una aplicación más egoísta y menos agradable, debes utilizar sudo. Cualquiera puede hacer que su aplicación sea más agradable, pero solo los superusuarios pueden hacer que uno sea más egoísta.

sudo nice --10 ./ackermann

Nice -10 comando en la ventana de terminal

Corramos arriba y veamos qué diferencia ha hecho.

top

top corriendo en una terminal

Esta vez ackermann tiene un buen valor de -10. Está de nuevo en la línea superior y consume más tiempo de CPU que antes.

El comando renice

los renice El comando nos posibilita ajustar el valor agradable de un procedimiento en ejecución. No necesitamos detenerlo y relanzarlo con nice. Podemos determinar un nuevo valor sobre la marcha.

los renice comando toma el ID de procedimiento, o PID, del procedimiento como un parámetro de línea de comando. Podemos extraer el ID del procedimiento de la columna «PID» en top , o podemos utilizar ps y grep para encontrarlo por nosotros, de la próxima manera. Evidentemente, escribirás el nombre de tu usuario en lugar de dave y el nombre del procedimiento que le interesa en lugar de ackermann.

ps -eu dave | grep ackermann

Ahora que tenemos el PID podemos usarlo con renice. Vamos a determinar ackermann de vuelta a un comportamiento más agradable con un buen valor de cinco. Para cambiar el valor agradable de un procedimiento en ejecución, debe utilizar sudo. Tenga en cuenta que no hay «-» en el 5 parámetro. No necesitas uno para números positivos y solo necesitas uno, no dos, para números negativos.

sudo renice -n 5 2339

Obtenemos la confirmación de que renice ha cambiado el buen valor. Nos muestra el valor antiguo y el nuevo valor.

El kernel de forma general hace un gran trabajo al manejar las prioridades y repartir el tiempo de la CPU y los recursos del sistema. Pero si tiene que ejecutar una tarea larga que necesita un uso intensivo de la CPU y no le importa cuando concluya, hará que su computadora funcione un poco más suave si establece un valor agradable más alto para esa tarea. Eso será mejor para todos.

Suscribite a nuestro Newsletter

No te enviaremos correo SPAM. Lo odiamos tanto como tú.