Procesprioriteiten instellen met Nice and Renice op Linux

Bash-shell op Ubuntu-laptop
Fatmawati Achmad Zaenuri / Shutterstock.com

De nice en renice Met commando’s kunt u nauwkeurig afstemmen hoe de kernel uw processen behandelt door hun prioriteiten aan te passen. Lees deze tutorial om te leren hoe u ze kunt gebruiken in Linux en Unix-achtige besturingssystemen zoals macOS.

Het is allemaal een kwestie van proces

Binnen uw Linux- of Unix-achtige computer zullen er veel processen worden uitgevoerd, zelfs voordat u de toepassing start die u wilt gebruiken. De meeste van deze processen zijn vitale elementen van Linux zelf of ondersteunen processen voor uw grafische desktopomgeving. Er gebeurt veel achter de schermen. Natuurlijk zijn er maar een beperkt aantal systeembronnen en CPU-tijd om rond te gaan. De Linux-kernel is de controller voor al deze processen.

Het is de kernel die moet beslissen welke processen op dit moment aandacht en bronnen krijgen, en welke moeten wachten. De kernel jongleert voortdurend met processen en prioriteiten om ervoor te zorgen dat de computer zo soepel mogelijk werkt en dat alle processen hun juiste aandeel krijgen. Sommige processen krijgen een voorkeursbehandeling. Ze zijn zo belangrijk voor de algemene werking van de computer dat hun behoeften voorop moeten gaan staan ​​dan bijvoorbeeld uw browser.

De mooie waarde

Een van de criteria die worden gebruikt om te bepalen hoe de kernel een proces behandelt, is de mooie waarde. Elk proces heeft een mooie waarde. De mooie waarde is een geheel getal in het bereik van -19 tot 20. Alle standaardprocessen worden gestart met een mooie waarde van nul.

De truc hier is dat hoe hoger de mooie waarde, hoe leuker je proces is andere processen. Met andere woorden, een hoge mooie waarde vertelt de kernel dat dit proces graag wacht. Een negatief getal is het tegenovergestelde van aardig zijn. Hoe groter de negatieve mooie waarde, hoe meer egoïstisch het proces is. Het probeert zoveel mogelijk CPU-tijd te krijgen, zonder rekening te houden met de andere processen.

We kunnen de nice commando naar set de mooie waarde wanneer een proces wordt gestart en we kunnen gebruiken renice naar aanpassen de mooie waarde van een lopend proces.

Het aardige commando

We kunnen de nice commando om de mooie waarde voor een programma aan te passen terwijl we het starten. Dit stelt ons in staat om de prioriteit die de kernel aan het proces geeft, te verhogen of te verlagen ten opzichte van de andere processen.

Stel dat een programmeur een programma heeft geschreven met de naam ackermann . Dit berekent Ackerman-functies. Het is CPU- en geheugenintensief. De programmeur kan het programma starten met het volgende commando:

./ackermann

ackermann commando in terminalvenster

We kunnen de top opdracht om het actieve programma te bekijken.

top

top rennen in een terminal

We kunnen de details van het ackermann programma in top. De aardige waarde is het cijfer in de “NI-kolom”. Het werd op nul gezet zoals we zouden verwachten.

Laten we hem opnieuw opstarten en deze keer minder veeleisend maken. We stellen een mooie waarde van 15 in voor de ackermann programma als volgt. Typ nice, een spatie, -15, nog een spatie, en dan de naam van het programma dat je wilt starten. In ons voorbeeld gebruikt onze fictieve programmeur ./ackermann.

nice -15 ./ackermann

nice 15 commando in terminalvenster

Let goed op, de “-15” is niet negatief vijftien. Het is positief vijftien. De “-” is vereist om te vertellen nice we geven een parameter door. Om een ​​negatief getal aan te geven, moet u twee “-” tekens typen.

Als we nu beginnen top nogmaals, we kunnen de verandering in het gedrag van zien ackermann.

top

top rennen in een terminal

Met een mooie waarde van 15, ackermann verbruikt niet de meeste CPU-tijd. GNOME en Rhythmbox gebruiken beide meer. We hebben beheerst ackermann in een beetje.

Laten we nu het omgekeerde doen en geven ackermann een negatieve mooie waarde. Let op het gebruik van twee “-” tekens. Om een ​​applicatie egoïstischer en minder leuk te maken, moet u sudo. Iedereen kan zijn applicatie leuker maken, maar alleen superusers kunnen er nog een egoïstisch maken.

sudo nice --10 ./ackermann

mooi -10 commando in terminalvenster

Laten we naar boven rennen en kijken welk verschil dat heeft gemaakt.

top

top rennen in een terminal

Deze keer ackermann heeft een mooie waarde van -10. Het staat weer bovenaan en verbruikt meer CPU-tijd dan voorheen.

Het Renice Commando

De renice commando laat ons de mooie waarde van een lopend proces aanpassen. We hoeven het niet te stoppen en opnieuw te starten met nice. We kunnen on-the-fly een nieuwe waarde instellen.

De renice commando neemt de proces-ID, of PID, van het proces als een opdrachtregelparameter. We kunnen ofwel de proces-ID extraheren uit de “PID” -kolom in top , of we kunnen gebruiken ps en grep om het voor ons te vinden, als volgt. Het is duidelijk dat u de naam van uw gebruiker typt in plaats van dave en de naam van het proces waarin u geïnteresseerd bent in plaats van ackermann.

ps -eu dave | grep ackermann

ps doorgestuurd grep in een terminalvenster

Nu we de PID hebben, kunnen we dit gebruiken renice. We gaan zitten ackermann terug naar een mooier gedrag met een mooie waarde van vijf. Om de mooie waarde voor een lopend proces te wijzigen, moet u sudo. Merk op dat er geen “-” op de 5 parameter. Je hebt er geen nodig voor positieve getallen en je hebt er maar één nodig, niet twee, voor negatieve getallen.

sudo renice -n 5 2339

renice-opdracht die in een terminalvenster wordt uitgevoerd

Dat krijgen we bevestigd renice heeft de mooie waarde veranderd. Het toont ons de oude waarde en de nieuwe waarde.

De kernel doet meestal uitstekend werk bij het omgaan met prioriteiten en het uitdelen van CPU-tijd en systeembronnen. Maar als u een lange, CPU-intensieve taak moet uitvoeren en het maakt u niet uit wanneer deze eindigt, zal uw computer een beetje soepeler werken als u een hogere aardige waarde instelt voor die taak. Dat wordt voor iedereen leuker.

Nieuwste artikelen

Gerelateerde artikelen