Trevlig

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 5 januari 2016; kontroller kräver 7 redigeringar .

Det trevliga verktyget  är ett datorprogram i UNIX-liknande operativsystem utformat för att starta processer med en ändrad fin prioritet. Den trevliga ( heltals ) prioriteten för en process används av OS-kärnans processschemaläggare vid allokering av CPU-tid mellan processer , den kan kallas cpu_nice [1] för att skilja den från io_nice [2] -prioriteten som används av I/O-schemaläggaren och modifierad av jonisverktyget [3] . Det trevliga verktyget dök upp i version 4 av UNIX- operativsystemet , utvecklat av AT&T [4] . Beskrivs i IEEE Std 1003.1-2001 ( POSIX .1) [4] [5] . En trevlig implementering ingår i coreutils -paketet .

Begreppen "nytta" och "kommando" bör särskiljas. Ett verktyg  är ett datorprogram som körs i en separat process . Kommando  är ett inbyggt kommando från kommandotolken (skal) , som körs i skalprocessen .

Nice -kommandot är ett inbyggt skal  -kommando som utför samma funktioner som nice -verktyget , men som körs inuti skalprocessen . Implementerat till exempel av kommandotolkarna csh och tcsh .

Den trevliga prioriteringen  är ett nummer som talar om för OS -kärnans processplanerare vilken prioritet användaren vill tilldela processen .

Beskrivning

Verktyget nice , körs utan argument, matar ut den trevliga prioritet som ärvts från den överordnade processen . nice tar ett offset-argument som sträcker sig från -20 (högsta prioritet) till +19 (lägsta prioritet). Om du anger offset och sökväg till den körbara filen kommer nice att få sin processprioritet , ändra den till offseten och använda familjesystemanropetexec() att ersätta dess processkod med kod från den angivna körbara filen Kommandot nice kommer att göra detsamma, men först kommer det att göra ett familjesystemanrop för att starta barnprocessen ( eng . sub-shell ). Om ingen offset specificeras kommer +10 offset att användas. En privilegierad användare ( root ) kan ange en negativ offset. fork() 

Den trevliga prioriteringen och OS -kärnans processplaneringsprioritet  är olika nummer. Det fina numret är den prioritet som användaren vill tilldela processen . Schemaläggarens prioritet  är den faktiska prioritet som tilldelas processen av schemaläggaren . Schemaläggaren kanske vill tilldela en process en prioritet nära nice, men det är inte alltid möjligt, eftersom det kan finnas många processer som körs på systemet med olika prioriteringar. Den fina prioriteten är ett processattribut och ärvs, precis som andra attribut, av underordnade processer . I utdata från verktygen top , ps , htop , etc. kallas den fina prioriteten "NI" - förkortning för "snäll", och schemaläggarens prioritet  är "PRI" - förkortning för "prioritet". Vanligtvis NI = PRI - 20 , men detta är inte alltid sant. Som standard är NI=0 , respektive PRI=20 .

Processschemaläggaren för Linuxkärnan stöder prioriteringar från 0 ( realtid ) till och med 139 [6] . Prioriteter −20…+19 för det trevliga verktyget eller kommandot motsvarar prioriteterna 100…139 för processplaneraren . Andra processplaneringsprioriteringar kan ställas in med kommandot chrt från util-linux- paketet .

FreeBSD kärnprocessplaneraren stöder prioriteringar från -20 till +20.

Linux används systemanropet för att få den nuvarande trevliga prioritet för en process , och [7] för att ändra den . getpriority()setpriority()

Processplaneraren kan arbeta i enlighet med en användarvald policy ( eng.  scheduling policy ). Vissa policyer kan ignorera den trevliga prioriteringen.

I Linux , med hjälp av ett systemanrop, kan du ta reda på processplaneringsprincipen som tillämpas på den aktuella processen och använda  den för att ändra den [8] . sched_getscheduler()sched_setscheduler()

Verktyget renice används för att ändra prioritet för processer som redan körs .

Syntax

nice [ -n offset ] [ --adjustment = offset ] [ kommando [ argument ... ]]

Alternativ

-n offset --justering=offset Ställ in nice-prioriteten till summan av den aktuella nice-prioriteten och det angivna "offset"-talet. Om detta argument inte anges kommer siffran 10 att användas.

Anteckningar

  1. CPU - engelska.  centralenhet , centralenhet .
  2. IO _  input-output , input-output .
  3. ionice är ett program från util-linux- paketet . Se ionice(1) manualsidan för GNU /Linux-   användarkommandon .
  4. 1 2 nice(1)  - Mansidan för FreeBSD   - användarkommandon .
  5. ↑ Det trevliga verktyget . Den öppna gruppen . — The Open Group Base Specifications Issue 7. IEEE Std 1003.1, 2013 Edition. Hämtad 8 augusti 2015. Arkiverad från originalet 12 september 2015.
  6. Se källkoden för Linux-kärnan :
  7. ↑ - GNU/Linux- systemet anropar mangetpriority(2) -  sidan  
  8. ↑ - GNU/Linux- systemet anropar mansched_getscheduler(2) -  sidan  

Länkar