Hvordan sette prosessprioriteter med nice og renice på Linux

Nice- og renice-kommandoene lar deg finjustere hvordan kjernen behandler prosessene dine ved å justere deres prioriteringer. Les denne veiledningen for å lære hvordan du bruker dem i Linux og Unix-lignende operativsystemer som macOS.

Det hele er et spørsmål om prosess

Inne i din Linux- eller Unix-lignende datamaskin vil det være mange prosesser som kjører selv før du starter programmet du vil bruke. De fleste av disse prosessene er viktige elementer i selve Linux eller støtteprosesser for ditt grafiske skrivebordsmiljø. Det skjer mye bak kulissene. Selvfølgelig er det bare så mange systemressurser og CPU-tid å gå rundt. Linux-kjernen er kontrolleren for alle disse prosessene.

Det er kjernen som må bestemme hvilke prosesser som får oppmerksomhet og ressurser akkurat nå, og hvilke som må vente. Kjernen sjonglerer kontinuerlig med prosesser og prioriteringer for å sikre at datamaskinen kjører så jevnt som mulig og at alle prosesser får sin passende del. Noen prosesser får fortrinnsbehandling. De er så viktige for den generelle driften av datamaskinen at deres behov må komme først foran for eksempel nettleseren din.

Den fine verdien

Et av kriteriene som brukes for å bestemme hvordan kjernen behandler en prosess er den gode verdien. Hver prosess har en god verdi. Nice-verdien er et heltall i området -19 til 20. Alle standardprosesser lanseres med en fin verdi på null.

  Hvordan bruke ja-kommandoen på Linux

Trikset her er at jo høyere den gode verdien er, jo bedre er prosessen din for de andre prosessene. Med andre ord, en høy fin verdi forteller kjernen at denne prosessen gjerne venter. Et negativt tall er det motsatte av å være hyggelig. Jo større den negative verdien er, jo mer egoistisk er prosessen. Den prøver å få så mye CPU-tid som mulig, uten hensyn til de andre prosessene.

Vi kan bruke nice-kommandoen til å angi nice-verdien når en prosessen settes i gang og vi kan bruke renice til å justere den fine verdien av en pågående prosess.

Den hyggelige kommandoen

Vi kan bruke nice-kommandoen til å justere nice-verdien for et program når vi starter det. Dette tillater oss å øke eller redusere prioriteringen som gis til prosessen av kjernen, i forhold til de andre prosessene.

La oss anta at en programmerer har skrevet et program som heter ackermann . Dette beregner Ackerman fungerer. Det er CPU og minnekrevende. Programmereren kan starte programmet med følgende kommando:

./ackermann

Vi kan bruke toppkommandoen for å se programmet som kjører.

top

Vi kan se detaljene i ackermann-programmet øverst. Den fine verdien er tallet i «NI-kolonnen». Den satt til null som vi hadde forventet.

La oss starte den på nytt og denne gangen gjøre den mindre krevende. Vi setter en fin verdi på 15 for ackermann-programmet som følger. Skriv nice, et mellomrom, -15, et annet mellomrom, og deretter navnet på programmet du ønsker å starte. I vårt eksempel bruker vår fiktive programmerer ./ackermann.

nice -15 ./ackermann

Vær oppmerksom på at «-15» ikke er negativ femten. Det er positivt femten. «-» er nødvendig for å fortelle at vi sender inn en parameter. For å indikere et negativt tall må du skrive to «-«-tegn.

  Hvordan spille Borderlands 2 på Linux

Hvis vi nå starter toppen igjen, kan vi se endringen i adferden til ackermann.

top

Med en god verdi på 15 bruker ikke ackermann mest CPU-tid. GNOME og Rhythmbox bruker begge mer. Vi har tøylet ackermann litt.

La oss nå gjøre det motsatte og gi ackermann en negativ fin verdi. Legg merke til bruken av to «-«-tegn. For å gjøre en applikasjon mer egoistisk og mindre fin, må du bruke sudo. Hvem som helst kan gjøre applikasjonen sin mer fin, men bare superbrukere kan gjøre en mer egoistisk.

sudo nice --10 ./ackermann

La oss løpe toppen og se hvilken forskjell det har gjort.

top

Denne gangen har ackermann en pen verdi på -10. Den er tilbake på topplinjen og bruker mer CPU-tid enn før.

Renice-kommandoen

Renice-kommandoen lar oss justere den gode verdien av en kjørende prosess. Vi trenger ikke å stoppe det og relansere det med nice. Vi kan sette en ny verdi på farten.

  Linux: test diskhastighet [Guide]

Renice-kommandoen tar prosess-ID, eller PID, til prosessen som en kommandolinjeparameter. Vi kan enten trekke ut prosess-ID-en fra «PID»-kolonnen i toppen, eller vi kan bruke ps og grep for å finne den for oss, som følger. Du skriver selvsagt inn navnet på brukeren din i stedet for dave og navnet på prosessen du er interessert i i stedet for ackermann.

ps -eu dave | grep ackermann

Nå som vi har PID kan vi bruke dette med renice. Vi skal sette ackermann tilbake til en hyggeligere oppførsel med en fin verdi på fem. For å endre den fine verdien for en kjørende prosess må du bruke sudo. Merk at det ikke er noen «-» på parameteren 5. Du trenger ikke én for positive tall, og du trenger bare én, ikke to, for negative tall.

sudo renice -n 5 2339

Vi får bekreftet at renice har endret den fine verdien. Den viser oss den gamle verdien og den nye verdien.

Kjernen gjør vanligvis en god jobb med å håndtere prioriteringer og dele ut CPU-tid og systemressurser. Men hvis du har en lang, CPU-intensiv oppgave å kjøre og du ikke bryr deg når den avsluttes, vil det få datamaskinen til å kjøre litt jevnere hvis du angir en høyere hyggelig verdi for den oppgaven. Det vil være hyggeligere for alle.