Cómo establecer la prioridad del proceso de Linux usando los comandos nice y renice

Cómo establecer la prioridad del proceso de Linux usando los comandos nice y renice

En este artículo, explicaremos brevemente el programador del kernel. (también conocido como programador de procesos. y la prioridad del proceso. que son temas más allá del alcance de esta guía. Luego nos sumergiremos un poco en la gestión de procesos de Linux: veremos cómo ejecutar un programa o comando con prioridad modificada y también cambiar la prioridad de ejecución de procesos de Linux.

Lea también:. Cómo monitorear los procesos de Linux y establecer límites de procesos por usuario

Comprender el programador del kernel de Linux

Un programador del kernel es una unidad del kernel que determina el proceso más adecuado de todos los procesos ejecutables para ejecutar siguiente asigna tiempo de procesador entre los procesos ejecutables en un sistema. Un proceso ejecutable es aquel que solo espera el tiempo de la CPU, está listo para ser ejecutado.

El programador forma el núcleo de la multitarea en Linux, utilizando un algoritmo de programación basado en prioridades para elegir entre los procesos ejecutables en el sistema. Clasifica los procesos según los que más lo merecen, así como la necesidad de tiempo de CPU.

Comprender la prioridad del proceso y el valor agradable

El kernel almacena una gran cantidad de información sobre los procesos, incluida la prioridad del proceso, que es simplemente la prioridad de programación adjunta. a un proceso. Los procesos con una prioridad más alta se ejecutarán antes que aquellos con una prioridad más baja, mientras que los procesos con la misma prioridad se programan uno tras otro, repetidamente.

freestar.config.enabled_slots.push (locationName: “tecmint_incontent”, slotId : “tecmint_incontent”);

Hay un total de 140. prioridades y dos rangos de prioridad distintos implementados en Linux. El primero es un valor agradable ( bondad. que va de-20 (valor de prioridad más alto) a 19 (valor de prioridad más bajo) y el valor predeterminado es 0, esto es lo que descubriremos en esta guía. La otra es la prioridad en tiempo real, que varía de 1. a 99. de forma predeterminada, luego de 100. a 139. están pensados ​​para el espacio de usuario.

Una característica importante de Linux es la programación dinámica basada en prioridades, que permite cambiar (aumentar o disminuir) el valor agradable de los procesos según sus necesidades, ya que ver más adelante.

Cómo comprobar el buen valor de los procesos Linux

Para ver los buenos valores de los procesos, podemos usar utilidades como ps, top o htop.

Para ver el valor agradable de los procesos con el comando ps en formato definido por el usuario (aquí, la columna NI muestra la bondad de los procesos).

$ ps-eo pid, ppid, ni, comm  Ver valores agradables de los procesos Linux Ver valores agradables de procesos Linux

Alternativamente, puede usar las utilidades top o htop para ver valores agradables de procesos Linux como se muestra.

$ top $ htop Verifique los valores agradables del proceso de Linux usando el comando superior  Verifique los valores agradables del proceso de Linux usando el comando superior Verifique los valores agradables del proceso de Linux usando el comando superior  Verifique los valores agradables del proceso Linux usando el comando Htop  Verifique los valores agradables del proceso de Linux usando el comando Htop Verifique los valores agradables del proceso Linux usando el comando Htop Diferencia entre PR o PRI y NI

De las salidas top. y htop. anteriores, notará que hay una columna llamada PR y PRI de forma receptiva que muestra la prioridad de un proceso .

Esto, por lo tanto, significa que:

  • NI-es el valor agradable, que es un concepto de espacio de usuario, mientras que
  • PR o PRI-es la prioridad real del proceso, como lo ve el kernel de Linux.

Cómo calcular PR o valores PRI Número total de prioridades = 140 Rango de prioridad en tiempo real (PR o PRI): 0 a 99 Rango de prioridad del espacio de usuario: 100 a 139

Rango de valor agradable (NI):-20 a 19

PR = 20 + NI PR = 20 + (-20 a + 19) PR = 20 +-20 a 20 + 19 PR = 0 a 39 que es lo mismo que 100 a 139.

Pero si ve un rt en lugar de un número como se muestra en la captura de pantalla a continuación, básicamente significa que el proceso se está ejecutando con prioridad de programación en tiempo real.

Linux rt Process  Linux rt Process Proceso Linux rt

Cómo ejecutar un comando con un valor agradable dado en Linux

Aquí, veremos cómo priorizar el uso de CPU de un programa o comando. Si tiene un programa o una tarea que consume mucha CPU, pero también comprende que puede llevar mucho tiempo completarlo, puede configurarlo con una prioridad alta o favorable usando el comando nice.

La sintaxis es la siguiente:

$ nice-n niceness-value [command args] OR $ nice-niceness-value [command args] # es confuso para valores negativos O $ nice–adjustment = niceness-value [command args]

Importante:

  • Si no se proporciona ningún valor, nice establece una prioridad de 10 de forma predeterminada.
  • Un comando o programa se ejecuta sin nice tiene una prioridad predeterminada de cero.
  • Solo root puede ejecutar un comando o programa con prioridad alta o aumentada.
  • Los usuarios normales solo pueden ejecutar un comando o programa con prioridad baja.

Por ejemplo, en lugar de iniciar un programa o comando con la prioridad predeterminada, puede iniciarlo con una prioridad específica usando el siguiente comando nice.

$ sudo nice-n 5 tar-czf backup.tar.gz ./Documents/* O $ sudo nice–adjustment = 5 tar-czf backup.tar.gz ./Documents/*

También puede utilizar el tercer método, que es un poco confuso, especialmente para valores de bondad negativos.

$ sudo nice-5 tar-czf backup.tar.gz ./Documents/*

Cambiar la prioridad de programación de un proceso en Linux

Como mencionamos antes, Linux permite prioridad dinámica-programación basada. Por lo tanto, si un programa ya se está ejecutando, puede cambiar su prioridad con el comando renice. de esta forma:

$ renice-n-12-p 1055 $ renice-n-2-u apache  Cambiar la prioridad del proceso  Cambiar la prioridad del proceso Cambiar la prioridad del proceso

Del ejemplo de salida top. a continuación, la bondad de teamspe +. con PID 1055. ahora es-12 y para todos los procesos propiedad del usuario apache es-2.

Aún usando esta salida, puede ver la fórmula PR = 20 + NI. representa,

PR para ts3server = 20 +-12 = 8 PR para procesos apache = 20 +-2 = 18  Ver procesa valores agradables  Ver procesos buenos valores Ver procesos buenos valores

Cualquier cambio que realice con el comando renice. en los valores nice de los procesos de un usuario solo se aplicará hasta el siguiente reinicio. Para establecer valores predeterminados permanentes, lea la siguiente sección.

Cómo establecer el valor agradable predeterminado de los procesos de un usuario específico

Puede establecer el valor agradable predeterminado de un usuario o grupo en particular en el archivo /etc/security/limits.conf. Su función principal es definir los límites de recursos para los usuarios conectados a través de PAM.

La sintaxis para definir un límite para un usuario es la siguiente (y los posibles valores de las distintas columnas se explican en el archivo ):

#

Ahora use la siguiente sintaxis donde hard-significa hacer cumplir los enlaces duros y los medios suaves-hacer cumplir los límites suaves.

priority

Alternativamente, cree un archivo en /etc/security/limits.d/ que anule la configuración en el archivo principal anterior, y estos archivos se leen en orden alfabético.

Empiece por crear el archivo /etc/security/limits.d/tecmint-priority.conf. para el usuario tecmint.

# vi/etc/security/limits.d/tecmint-priority.conf

Luego agregue esta configuración:

tecmint hard priority 10

Guarde y cierre el archivo. A partir de ahora, cualquier proceso propiedad de tecmint. tendrá un buen valor de 10. y PR de 30.

Para Para obtener más información, lea las páginas man de nice. y renice.

$ man nice $ man renice

También le gustaría leer estos siguientes artículos sobre Linux gestión de procesos.

  1. Cómo encontrar y matar procesos en ejecución en Linux
  2. Una guía para los comandos Kill, Pkill y Killall para finalizar un proceso en Linux
  3. Cómo monitorear el uso del sistema, las interrupciones y la resolución de problemas de los servidores Linux
  4. CPUTool-Limitar y controlar la utilización de la CPU de cualquier proceso en Linux

En este artículo, explicamos brevemente programador del kernel, prioridad de proceso, analizó cómo ejecutar un programa o comando con prioridad modificada y también cambiar la prioridad de los procesos activos de Linux. Puede compartir sus pensamientos sobre este tema a través del formulario de comentarios a continuación.