Hur man ställer in processprioriteringar med nice och renice på Linux

Kommandona nice och renice låter dig finjustera hur kärnan behandlar dina processer genom att justera deras prioriteringar. Läs den här handledningen för att lära dig hur du använder dem i Linux och Unix-liknande operativsystem som macOS.

Allt är en fråga om process

Inuti din Linux- eller Unix-liknande dator kommer det att finnas många processer igång även innan du startar programmet du vill använda. Majoriteten av dessa processer är viktiga delar av själva Linux eller stödprocesser för din grafiska skrivbordsmiljö. Det händer mycket bakom kulisserna. Naturligtvis finns det bara så många systemresurser och CPU-tid att gå runt. Linuxkärnan är styrenheten för alla dessa processer.

Det är kärnan som måste bestämma vilka processer som får uppmärksamhet och resurser just nu, och vilka som måste vänta. Kärnan jonglerar kontinuerligt med processer och prioriteringar för att säkerställa att datorn körs så smidigt som möjligt och att alla processer får sin del. Vissa processer får förmånsbehandling. De är så viktiga för den allmänna driften av datorn att deras behov måste komma först före till exempel din webbläsare.

Det fina värdet

Ett av kriterierna som används för att bestämma hur kärnan behandlar en process är det goda värdet. Varje process har ett bra värde. Nice-värdet är ett heltal i intervallet -19 till 20. Alla standardprocesser startas med ett fint värde på noll.

Tricket här är att ju högre trevligt värde, desto trevligare är din process för de andra processerna. Med andra ord, ett högt trevligt värde talar om för kärnan att denna process gärna väntar. Ett negativt tal är motsatsen till att vara trevlig. Ju större negativt trevligt värde, desto mer självisk är processen. Den försöker få så mycket CPU-tid som den kan, utan hänsyn till de andra processerna.

Vi kan använda nice-kommandot för att ställa in nice-värdet när a processen startas och vi kan använda renice för att justera det fina värdet av en pågående process.

Det fina kommandot

Vi kan använda nice-kommandot för att justera nice-värdet för ett program när vi startar det. Detta tillåter oss att öka eller minska den prioritet som ges till processen av kärnan, i förhållande till de andra processerna.

Låt oss anta att en programmerare har skrivit ett program som heter ackermann . Detta beräknar Ackerman fungerar. Det är CPU och minneskrävande. Programmeraren kan starta programmet med följande kommando:

./ackermann

Vi kan använda toppkommandot för att se det pågående programmet.

top

Vi kan se detaljerna i Ackermann-programmet i toppen. Det fina värdet är siffran i ”NI-kolumnen”. Den ställdes till noll som vi förväntade oss.

Låt oss starta om det och den här gången göra det mindre krävande. Vi sätter ett bra värde på 15 för ackermann-programmet enligt följande. Skriv nice, ett mellanslag, -15, ett annat mellanslag och sedan namnet på programmet du vill starta. I vårt exempel använder vår fiktiva programmerare ./ackermann.

nice -15 ./ackermann

Observera att ”-15” inte är negativt femton. Det är positivt femton. ”-” krävs för att säga att vi skickar in en parameter. För att ange ett negativt tal måste du skriva två ”-” tecken.

Om vi ​​nu börjar toppen igen kan vi se förändringen i ackermanns beteende.

top

Med ett bra värde på 15 förbrukar inte ackermann mest CPU-tid. GNOME och Rhythmbox använder båda mer. Vi har tyglat ackermann lite.

Låt oss nu göra tvärtom och ge ackermann ett negativt fint värde. Observera användningen av två ”-” tecken. För att göra en applikation mer självisk och mindre trevlig måste du använda sudo. Vem som helst kan göra sin applikation trevligare, men bara superanvändare kan göra en mer självisk.

sudo nice --10 ./ackermann

Låt oss springa toppen och se vilken skillnad det har gjort.

top

Den här gången har ackermann ett fint värde på -10. Den är tillbaka på topplinjen och förbrukar mer CPU-tid än tidigare.

Renice Command

Kommandot renice låter oss justera det fina värdet av en pågående process. Vi behöver inte stoppa det och starta om det med nice. Vi kan sätta ett nytt värde direkt.

Kommandot renice tar process-ID, eller PID, för processen som en kommandoradsparameter. Vi kan antingen extrahera process-ID:t från kolumnen ”PID” i toppen, eller så kan vi använda ps och grep för att hitta det åt oss, enligt följande. Självklart kommer du att skriva namnet på din användare istället för dave och namnet på processen du är intresserad av istället för ackermann.

ps -eu dave | grep ackermann

Nu när vi har PID kan vi använda detta med renice. Vi ska återställa ackermann till ett trevligare beteende med ett fint värde på fem. För att ändra det fina värdet för en pågående process måste du använda sudo. Observera att det inte finns någon ”-” på parametern 5. Du behöver inte en för positiva tal och du behöver bara en, inte två, för negativa tal.

sudo renice -n 5 2339

Vi får bekräftat att renice har ändrat det fina värdet. Den visar oss det gamla värdet och det nya värdet.

Kärnan gör vanligtvis ett bra jobb med att hantera prioriteringar och dela ut CPU-tid och systemresurser. Men om du har en lång, CPU-intensiv uppgift att köra och du inte bryr dig när den avslutas, kommer det att få din dator att fungera lite smidigare om du ställer in ett högre trevligt värde för den uppgiften. Det blir trevligare för alla.