Com establir la prioritat del procés de Linux utilitzant ordres agradables i renices


En aquest article, explicarem breument el programador del nucli (també conegut com a planificador de processos) i la prioritat del procés, que són temes fora de l'abast d'aquesta guia. A continuació, ens endinsarem en una mica de gestió de processos de Linux: vegeu com executar un programa o comanda amb prioritat modificada i també canviar la prioritat d'executar processos de Linux.

Llegiu també: Com supervisar els processos de Linux i establir límits de processos per usuari

Un planificador del nucli és una unitat del nucli que determina el procés més adequat entre tots els processos executables per executar-lo a continuació; assigna el temps del processador entre els processos executables en un sistema. Un procés executable és aquell que només espera el temps de la CPU, està llest per executar-se.

El programador forma el nucli de la multitasca a Linux, utilitzant un algorisme de programació basat en prioritats per triar entre els processos executables del sistema. Classifica els processos en funció dels més mereixedors i de la necessitat de temps de CPU.

El nucli emmagatzema una gran quantitat d'informació sobre processos, inclosa la prioritat del procés, que és simplement la prioritat de programació associada a un procés. Els processos amb una prioritat més alta s'executaran abans que aquells amb una prioritat més baixa, mentre que els processos amb la mateixa prioritat es programaran un darrere l'altre, repetidament.

Hi ha un total de 140 prioritats i dos rangs de prioritats diferents implementats a Linux. El primer és un valor agradable (amabilitat) que oscil·la entre -20 (valor de prioritat més alt) a 19 (valor de prioritat més baixa) i el valor per defecte és 0, això és el que descobrirem en aquesta guia. L'altra és la prioritat en temps real, que oscil·la entre 1 i 99 per defecte, després de 100 a 139 estan pensades per a l'espai d'usuari.

Una característica important de Linux és la programació dinàmica basada en prioritats, que permet canviar (augmentar o disminuir) el bon valor dels processos en funció de les vostres necessitats, com veurem més endavant.

Com comprovar el bon valor dels processos de Linux

Per veure els valors agradables dels processos, podem utilitzar utilitats com htop.

Per visualitzar el valor agradable dels processos amb l'ordre ps en format definit per l'usuari (aquí el NI la columna mostra la qualitat dels processos).

$ ps -eo pid,ppid,ni,comm

Alternativament, podeu utilitzar les utilitats top o htop per veure els valors agradables dels processos de Linux tal com es mostra.

$ top
$ htop

A les sortides superior i superior de dalt, notareu que hi ha una columna anomenada PR i PRI receptiva que mostra la prioritat d'un procés.

Això, per tant, significa que:

  • NI: és el valor agradable, que és un concepte d'espai d'usuari, mentre que
  • PR o PRI: és la prioritat real del procés, tal com es veu pel nucli de Linux.

Total number of priorities = 140
Real time priority range(PR or PRI):  0 to 99 
User space priority range: 100 to 139

Interval de valors agradable (NI): -20 a 19

PR = 20 + NI
PR = 20 + (-20 to + 19)
PR = 20 + -20  to 20 + 19
PR = 0 to 39 which is same as 100 to 139.

Però si veieu un rt en lloc d'un número com es mostra a la captura de pantalla següent, bàsicament significa que el procés s'està executant amb prioritat de programació en temps real.

Com executar una ordre amb un bon valor donat a Linux

Aquí, veurem com prioritzar l'ús de la CPU d'un programa o comanda. Si teniu un programa o una tasca molt intensiva en CPU, però també enteneu que pot trigar molt de temps a completar-se, podeu establir-lo amb una prioritat alta o favorable mitjançant l'ordre agradable.

La sintaxi és la següent:

$ nice -n niceness-value [command args] 
OR
$ nice -niceness-value [command args] 	#it’s confusing for negative values
OR
$ nice --adjustment=niceness-value [command args]

Important:

  • Si no es proporciona cap valor, nice estableix una prioritat de 10 per defecte.
  • Una ordre o un programa executat sense bons valors predeterminats amb una prioritat zero.
  • Només root pot executar una ordre o un programa amb prioritat augmentada o alta.
  • Els usuaris normals només poden executar una ordre o un programa amb una prioritat baixa.

Per exemple, en lloc d'iniciar un programa o una ordre amb la prioritat per defecte, podeu iniciar-lo amb una prioritat específica fent servir la següent ordre agradable.

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

També podeu utilitzar el tercer mètode, que és una mica confús, especialment per als valors de bondat negatius.

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

Canviar la prioritat de programació d'un procés a Linux

Com hem esmentat abans, Linux permet una programació dinàmica basada en prioritats. Per tant, si un programa ja s'està executant, podeu canviar la seva prioritat amb l'ordre renice d'aquesta forma:

$ renice -n  -12  -p 1055
$ renice -n -2  -u apache

A partir de la mostra de sortida superior a continuació, la qualitat del teamspe+ amb PID 1055 és ara -12 i per a tots els processos propietat de l'usuari apache és -2.

Encara utilitzant aquesta sortida, podeu veure la fórmula PR = 20 + NI,

PR for ts3server = 20 + -12 = 8
PR for apache processes = 20 + -2 = 18

Qualsevol canvi que feu amb l'ordre renice als valors agradables dels processos d'un usuari només s'aplica fins al proper reinici. Per establir valors predeterminats permanents, llegiu la secció següent.

Com establir el valor agradable per defecte dels processos d'un usuari específic

Podeu establir el valor agradable per defecte d'un usuari o grup en particular al fitxer /etc/security/limits.conf. La seva funció principal és definir els límits de recursos per als usuaris connectats mitjançant PAM.

La sintaxi per definir un límit per a un usuari és la següent (i els possibles valors de les diferents columnes s'expliquen al fitxer):

#<domain>   <type>  <item>  <value>

Ara utilitzeu la sintaxi que hi ha a continuació, on difícil - vol dir fer complir enllaços durs i suau significa - fer complir els límits suaus.

<username>  <hard|soft>  priority  <nice value>

Alternativament, creeu un fitxer a /etc/security/limits.d/ que anul·li la configuració del fitxer principal anterior i aquests fitxers es llegeixen per ordre alfabètic.

Comenceu creant el fitxer /etc/security/limits.d/tecmint-priority.conf per a l'usuari tecmint:

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

A continuació, afegiu-hi aquesta configuració:

tecmint  hard  priority  10

Desa i tanca el fitxer. A partir d'ara, qualsevol procés propietat de tecmint tindrà un bon valor de 10 i PR de 30.

Per obtenir més informació, llegiu les pàgines de manual de Nice and Renice:

$ man nice
$ man renice 

També us agradaria llegir aquests articles següents sobre la gestió de processos de Linux.

  1. Com trobar i matar processos en execució a Linux
  2. Guia per a les ordres Kill, Pkill i Killall per finalitzar un procés a Linux
  3. Com supervisar l'ús del sistema, les interrupcions i resoldre problemes dels servidors Linux
  4. CPUTool: limita i controla l'ús de la CPU de qualsevol procés a Linux

En aquest article, vam explicar breument el programador del nucli, la prioritat del procés, vam veure com executar un programa o comanda amb prioritat modificada i també canviar la prioritat dels processos actius de Linux. Podeu compartir qualsevol reflexió sobre aquest tema mitjançant el formulari de comentaris que hi ha a continuació.