Prioriteit geven aan Linux-processen met Nice en Renice

Binnen de verschillende beheertaken van Linux-besturingssystemen is het ideaal om in detail te weten hoe de processen binnen het systeem werken, aangezien dit essentieel is om te voltooien en te weten hoe elk proces intern de functie vervult waarvoor het is ontwikkeld.

Vandaag zal Solvetic in detail analyseren hoe we de processen van onze Linux-distributies kunnen prioriteren met behulp van nice en renice.

Wat zijn procesprioriteiten in LinuxHet is belangrijk voordat je weet hoe leuk en renice werk een beetje begrijpt waarom het instellen van een bepaalde prioriteit van een Linux-proces, de prioriteit van een proces, wordt gebruikt om de hoeveelheid tijd te bepalen dat het geselecteerde proces de processor kan gebruiken in een bepaalde tijd.

In Linux-omgevingen worden de processors gedeeld door meerdere processen (de processen wisselen elkaar af in het gebruik van de beschikbare processor(s)) waardoor de gebruiker kan waarnemen dat alle applicaties of taken tegelijkertijd worden uitgevoerd, dus door een prioriteit te definiëren , geven we aan het systeem aan welke processen meer gebruik kunnen maken van de processor en welke processen op de tweede plaats komen.

Deze prioriteit kan ertoe leiden dat sommige processen op enig moment niet worden uitgevoerd, omdat ze door andere processen met een hogere gebruiksprioriteit naar het einde van de proceswachtrij worden verplaatst.

Hoe de Kernel Scheduler werkt in LinuxEen ander punt om in gedachten te houden bij het beheren van Linux-systemen is de kernel te kennen, die verantwoordelijk is voor het opstarten. Het heeft een programmeur of planner in zijn kernel, een kerneleenheid die het meest geschikte proces bepaalt van alle beschikbare uitvoerbare processen, die in eerste instantie moeten worden uitgevoerd. Het wijst vervolgens processortijd toe tussen uitvoerbare processen op het systeem.

Een uitvoerbaar proces is een proces dat alleen wacht op de uitvoering van de CPU-tijd. De programmeur vormt de kern van multitasking in Linux en maakt gebruik van een op prioriteit gebaseerd planningsalgoritme om te kiezen uit uitvoerbare processen op het systeem. Vervolgens classificeert het de processen op basis van de meest fundamentele, evenals de CPU-tijdvereisten van elk van hen.

In Linux zijn er in totaal 140 prioriteiten en twee verschillende prioriteitsbereiken geïmplementeerd in Linux:

  • De eerste is de mooie waarde die varieert van -20 (waarde met hoogste prioriteit) tot 19 (waarde met laagste prioriteit) en de standaardwaarde is 0.
  • De tweede is de realtime prioriteit, die standaard varieert van 1 tot 99, daarna zijn 100 tot 139 bestemd voor gebruikersruimte.

1. De waarden van processen in Linux verifiëren


In Linux kunnen we de waarden van een proces controleren met behulp van hulpprogramma's zoals ps, top of htop.
Als we de parameter ps gebruiken, kunnen we het volgende uitvoeren:
 ps -eo pid, ppid, ni, comm
Daar onthult de kolom niet de waarde van elk proces:

VERGROTEN

Als alternatief kunnen we gebruik maken van de top- of htop-parameters waar we veel completere resultaten kunnen zien en automatisch zullen we de kolom zien met dezelfde waarden van elk weergegeven proces:

bovenkant

VERGROTEN

htop

VERGROTEN

OpmerkingAls we geen htop hebben, kunnen we het installeren door de regel sudo apt install htop . uit te voeren

2. Verschil tussen PR of PRI en NI en hoe hun waarden te berekenen


Wanneer we de top- en htop-parameters uitvoeren, kunnen we de PR-, PRI- of NI-kolommen zien, ze betekenen:

GEEN VAN BEIDEHet is een vriendelijke waarde, dat wil zeggen, het is een gebruikersruimteconcept

PR / PRIHet is de echte prioriteit van het proces, deze informatie wordt geleverd door de Linux-kernel

Deze waarden zijn gebaseerd op het volgende.

 Totaal aantal prioriteiten = 140 Realtime prioriteitsbereik (PR of PRI): 0 tot 99 Prioriteitsbereik gebruikersruimte: 100 tot 139 NI-waardebereik (Nice Value) -20 tot 19: PR = 20 + NI PR = 20 + ( -20 tot + 19) PR = 20 + -20 tot 20 + 19 PR = 0 tot 39 wat gelijk is aan 100 tot 139
Als we in de weergegeven resultaten de rt-waarde zien, geeft dit aan dat het proces in realtime wordt uitgevoerd onder planningsprioriteit.

3. Een opdracht uitvoeren met een Nice-waarde op Linux


Nice is verantwoordelijk voor het toewijzen van een specifieke prioriteit aan een programma wanneer het wordt uitgevoerd, en door overerving aan de taken en processen die dit programma binnen het systeem kan activeren. Nice is van toepassing wanneer we een programma of een taak hebben die veel CPU-gebruik vereist, maar ook dat dit proces lang kan duren om te voltooien, daar zal het mogelijk zijn om een ​​hoge of gunstige prioriteit te configureren met het nice-commando.

De syntaxis die we kunnen gebruiken zijn de volgende:

 nice -n mooie waarde [opdrachtargumenten] nice - mooie waarde [opdrachtargumenten] nice --aanpassing = mooie waarde [opdrachtargumenten]
Stel je de volgende situatie voor:
  • Als er geen waarde is opgegeven, stelt nice standaard een prioriteit van 10 in
  • Een commando of programma uitgevoerd zonder standaardwaarden wordt ingesteld op een prioriteit van nul
  • Alleen de rootgebruiker kan een commando of programma met een hogere of hogere prioriteit uitvoeren
  • Normale gebruikers kunnen alleen een opdracht of programma met een lage prioriteit uitvoeren
Om een ​​prioriteit in te stellen, in plaats van een programma of commando met de standaardprioriteit te starten, is het mogelijk om het met een specifieke prioriteit te starten met behulp van het volgende nice-commando:
 sudo nice -n -5 xclock &
Of we kunnen het volgende uitvoeren:
 sudo nice --aanpassing = 5 xklok &

VERGROTEN

We kunnen zien dat er een nieuwe ID wordt gegenereerd.

4. De planningsprioriteit van een proces in Linux wijzigen


Bij gebruik van Linux-omgevingen is dynamisch programmeren mogelijk op basis van prioriteiten. Als een programma al actief is, is het daarom mogelijk om de prioriteit te wijzigen met het renice-commando als volgt:
 renice -n -12 -p (PID) renice -n -2 -u (Toepassing)
Bij het uitvoeren van deze opdracht kunnen we de oude prioriteit en de nieuwe prioriteit zien.

VERGROTEN

5. Hoe de Nice-standaard in te stellen voor de processen van een bepaalde gebruiker


U kunt de standaardwaarde voor een specifieke gebruiker of groep instellen in het bestand /etc/security/limits.conf. De belangrijkste functie is het definiëren van resourcelimieten voor gebruikers die via PAM zijn verbonden.

De syntaxis om een ​​limiet voor een gebruiker te definiëren is als volgt:

 
Als alternatief is het mogelijk om een ​​bestand aan te maken in /etc/security/limits.d/ dat zorgt voor het overschrijven van de configuratie in het hoofdbestand en deze bestanden worden in alfabetische volgorde gelezen.

Als we de hulp van nice of renice willen krijgen, kunnen we het volgende uitvoeren:

 man aardige man renice

VERGROTEN

We hebben dus een optie om prioriteiten vast te stellen op basis van de behoeften van de processen, het gebruik van de CPU in Linux veel meer te optimaliseren en de administratieve taken aanzienlijk te verbeteren.

U zal helpen de ontwikkeling van de site, het delen van de pagina met je vrienden

wave wave wave wave wave