Sådan indstilles Linux-procesprioritet ved hjælp af pæne kommandoer


I denne artikel forklarer vi kort kernelplanlæggeren (også kendt som procesplanlæggeren) og procesprioritet, som er emner, der ligger uden for denne vejlednings omfang. Derefter dykker vi ned i en lille smule Linux-processtyring: se hvordan man kører et program eller en kommando med ændret prioritet og også ændrer prioriteten for at køre Linux-processer.

Læs også: Sådan overvåges Linux-processer og indstilles procesgrænser pr. Bruger

En kerneplanlægning er en enhed af kernen, der bestemmer den mest egnede proces ud af alle kørbare processer, der skal udføres næste; det tildeler processortid mellem de kørbare processer på et system. En kørbar proces er en proces, der kun venter på CPU-tid, den er klar til at blive udført.

Planlæggeren udgør kernen i multitasking i Linux ved hjælp af en prioritetsbaseret planlægningsalgoritme til at vælge mellem de kørbare processer i systemet. Det rangerer processer baseret på det mest fortjente såvel som behovet for CPU-tid.

Kernen lagrer meget information om processer, herunder procesprioritet, som simpelthen er planlægningsprioriteten knyttet til en proces. Processer med en højere prioritet vil blive udført før dem med en lavere prioritet, mens processer med samme prioritet planlægges gentagne gange efter den næste.

Der er i alt 140 prioriteter og to forskellige prioritetsområder implementeret i Linux. Den første er en pæn værdi (pænhed), der spænder fra -20 (højeste prioritetsværdi) til 19 (laveste prioritetsværdi) og standard er 0 , dette er hvad vi vil afdække i denne vejledning. Den anden er realtidsprioriteten, der varierer fra 1 til 99 som standard, og derefter er 100 til 139 beregnet til brugerrum.

Et vigtigt kendetegn ved Linux er dynamisk prioritetsbaseret planlægning, som gør det muligt at ændre den fine værdi af processer (øges eller formindskes) afhængigt af dine behov, som vi senere vil se.

Sådan kontrolleres god værdi af Linux-processer

For at se de fine værdier ved processer kan vi bruge værktøjer som htop.

For at se processer pæn værdi med ps-kommando i brugerdefineret format (her vises kolonnen NI kolonnen, hvor processerne er fine).

$ ps -eo pid,ppid,ni,comm

Alternativt kan du bruge top- eller htop-værktøjer til at se Linux-processer pæne værdier som vist.

$ top
$ htop

Fra top- og htop-output ovenfor bemærker du, at der er en kolonne kaldet PR og PRI , der viser prioriteten for en proces.

Dette betyder derfor, at:

  • NI - er den gode værdi, som er et bruger-plads-koncept, mens
  • PR eller PRI - er processens faktiske prioritet, set af Linux-kernen.

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

Nice-værdiområde (NI): -20 til 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.

Men hvis du ser et rt snarere end et tal som vist i skærmbilledet nedenfor, betyder det grundlæggende, at processen kører under prioritetsplanlægning i realtid.

Sådan køres en kommando med en given god værdi i Linux

Her vil vi se på, hvordan man prioriterer CPU-brugen af et program eller en kommando. Hvis du har et meget CPU-intensivt program eller en opgave, men du også forstår, at det kan tage lang tid at gennemføre, kan du indstille det til en høj eller gunstig prioritet ved hjælp af den fine kommando.

Syntaksen er som følger:

$ 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]

Vigtig:

  • Hvis der ikke er angivet nogen værdi, indstiller nice som standard en prioritet på 10.
  • En kommando eller et program, der køres uden pæne standardindstillinger, har en prioritet på nul.
  • Kun root kan køre en kommando eller et program med øget eller høj prioritet.
  • Normale brugere kan kun køre en kommando eller et program med lav prioritet.

For eksempel i stedet for at starte et program eller en kommando med standardprioriteten, kan du starte det med en bestemt prioritet ved hjælp af følgende pæne kommando.

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

Du kan også bruge den tredje metode, der er lidt forvirrende, især for negative pæne værdier.

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

Skift planlægningsprioriteten for en proces i Linux

Som vi nævnte før, tillader Linux dynamisk prioritetsbaseret planlægning. Derfor, hvis et program allerede kører, kan du ændre dets prioritet med renice-kommandoen i denne form:

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

Fra nedenstående eksempler på top output, er holdbarheden af teamspe + med PID 1055 nu -12 , og for alle processer, der ejes af bruger-apache, er -2 .

Stadig ved hjælp af denne output, kan du se formlen PR = 20 + NI står,

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

Eventuelle ændringer, du foretager med renice-kommando til en brugers processer, er værdier kun gældende indtil næste genstart. Læs det næste afsnit for at indstille permanente standardværdier.

Sådan indstilles standardværdien af en bestemt brugers processer

Du kan indstille standardværdien for en bestemt bruger eller gruppe i /etc/security/limits.conf-filen. Dens primære funktion er at definere ressourcegrænserne for de brugere, der er logget ind via PAM.

Syntaksen til at definere en grænse for en bruger er som følger (og de mulige værdier for de forskellige kolonner forklares i filen):

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

Brug nu syntaksen nedenfor, hvor hårdt - betyder håndhævelse af hårde links og bløde midler - håndhævelse af de bløde grænser.

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

Alternativt kan du oprette en fil under /etc/security/limits.d/, som tilsidesætter indstillingerne i hovedfilen ovenfor, og disse filer læses i alfabetisk rækkefølge.

Start med at oprette filen /etc/security/limits.d/tecmint-priority.conf til bruger tecmint:

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

Tilføj derefter denne konfiguration i den:

tecmint  hard  priority  10

Gem og luk filen. Fra nu af vil enhver proces, der ejes af tecmint, have en god værdi på 10 og PR på 30.

For mere information, læs mandsiderne i nice and renice:

$ man nice
$ man renice 

Du kan også godt lide at læse disse følgende artikler om Linux processtyring.

  1. Sådan finder du og dræber kørende processer i Linux
  2. En guide til at dræbe, Pkill og Killall-kommandoer til at afslutte en proces i Linux
  3. Sådan overvåges systembrug, afbrydelser og fejlfinding af Linux-servere
  4. CPUTool - Begræns og styr CPU-udnyttelse af enhver proces i Linux

I denne artikel forklarede vi kort kernel scheduler, procesprioritet, kiggede på, hvordan man kører et program eller en kommando med ændret prioritet og ændrer også prioriteten for aktive Linux-processer. Du kan dele eventuelle tanker vedrørende dette emne via feedbackformularen nedenfor.