Nice- og renice-kommandoer lader dig finjustere, hvordan kernen behandler dine processer ved at justere deres prioriteter. Læs denne vejledning for at lære, hvordan du bruger dem i Linux og Unix-lignende operativsystemer såsom macOS.
Indholdsfortegnelse
Det hele er et spørgsmål om proces
Inde i din Linux- eller Unix-lignende computer vil der være mange processer, der kører, selv før du starter det program, du vil bruge. De fleste af disse processer er vitale elementer i selve Linux eller understøttende processer til dit grafiske skrivebordsmiljø. Der sker meget bag kulisserne. Selvfølgelig er der kun så mange systemressourcer og CPU-tid at gå rundt. Linux-kernen er controlleren for alle disse processer.
Det er kernen, der skal afgøre, hvilke processer der får opmærksomhed og ressourcer lige nu, og hvilke der skal vente. Kernen jonglerer løbende med processer og prioriteter for at sikre, at computeren kører så glat, som den kan, og at alle processer får deres passende andel. Nogle processer får fortrinsbehandling. De er så vigtige for den generelle drift af computeren, at deres behov skal komme først foran f.eks. din browser.
Den pæne værdi
Et af kriterierne, der bruges til at bestemme, hvordan kernen behandler en proces, er den gode værdi. Hver proces har en god værdi. Nice-værdien er et heltal i intervallet -19 til 20. Alle standardprocesser lanceres med en pæn værdi på nul.
Tricket her er, at jo højere nice-værdien er, jo pænere er din proces for de andre processer. Med andre ord, en høj pæn værdi fortæller kernen, at denne proces gerne venter. Et negativt tal er det modsatte af at være pæn. Jo større den negative nice værdi er, jo mere egoistisk er processen. Den forsøger at få så meget CPU-tid, som den kan, uden hensyntagen til de andre processer.
Vi kan bruge nice-kommandoen til at indstille nice-værdien, når en processen igangsættes og vi kan bruge renice til at justere den pæne værdi af en kørende proces.
Den pæne kommando
Vi kan bruge nice-kommandoen til at justere nice-værdien for et program, mens vi starter det. Dette giver os mulighed for at øge eller mindske den prioritet, der gives til processen af kernen, i forhold til de andre processer.
Lad os antage, at en programmør har skrevet et program kaldet ackermann . Dette beregner Ackerman funktioner. Det er CPU- og hukommelsesintensivt. Programmøren kan starte programmet med følgende kommando:
./ackermann
Vi kan bruge den øverste kommando til at se det kørende program.
top
Vi kan se detaljerne i ackermann-programmet øverst. Den pæne værdi er tallet i “NI-kolonnen”. Den blev sat til nul, som vi havde forventet.
Lad os genstarte det og denne gang gøre det mindre krævende. Vi sætter en pæn værdi på 15 for ackermann-programmet som følger. Skriv nice, et mellemrum, -15, et andet mellemrum, og derefter navnet på det program, du ønsker at starte. I vores eksempel bruger vores fiktive programmør ./ackermann.
nice -15 ./ackermann
Vær opmærksom på, at “-15” ikke er negativ femten. Det er positivt femten. “-” er påkrævet for at fortælle pænt, at vi sender en parameter ind. For at angive et negativt tal skal du skrive to “-” tegn.
Hvis vi nu starter toppen igen, kan vi se ændringen i ackermanns adfærd.
top
Med en pæn værdi på 15 bruger ackermann ikke mest CPU-tid. GNOME og Rhythmbox bruger begge mere. Vi har tøjlet ackermann lidt.
Lad os nu gøre det omvendte og give ackermann en negativ pæn værdi. Bemærk brugen af to “-” tegn. For at gøre en applikation mere egoistisk og mindre rar, skal du bruge sudo. Enhver kan gøre deres ansøgning mere pæn, men kun superbrugere kan gøre en mere egoistisk.
sudo nice --10 ./ackermann
Lad os løbe toppen og se, hvilken forskel det har gjort.
top
Denne gang har ackermann en pæn værdi på -10. Den er tilbage på toplinjen og bruger mere CPU-tid end før.
Renice-kommandoen
Renice-kommandoen lader os justere den gode værdi af en kørende proces. Vi behøver ikke at stoppe det og genstarte det med nice. Vi kan indstille en ny værdi on-the-fly.
Renice-kommandoen tager processens ID eller PID som en kommandolinjeparameter. Vi kan enten udtrække proces-id’et fra kolonnen “PID” i toppen, eller vi kan bruge ps og grep til at finde det for os, som følger. Selvfølgelig skal du skrive navnet på din bruger i stedet for dave og navnet på den proces, du er interesseret i, i stedet for ackermann.
ps -eu dave | grep ackermann
Nu hvor vi har PID, kan vi bruge dette med renice. Vi vil sætte ackermann tilbage til en pænere adfærd med en pæn værdi på fem. For at ændre den gode værdi for en kørende proces skal du bruge sudo. Bemærk, at der ikke er noget “-” på parameter 5. Du behøver ikke én for positive tal, og du behøver kun én, ikke to, for negative tal.
sudo renice -n 5 2339
Vi får bekræftet, at renice har ændret den pæne værdi. Det viser os den gamle værdi og den nye værdi.
Kernen gør normalt et godt stykke arbejde med at håndtere prioriteter og uddele CPU-tid og systemressourcer. Men hvis du har en lang, CPU-intensiv opgave at køre, og du er ligeglad med, hvornår den afsluttes, vil det få din computer til at køre en smule mere jævnt, hvis du indstiller en højere god værdi for den opgave. Det vil være pænere for alle.