Uanset hvor hurtigt din Linux-maskine er, vil der altid være nogle opgaver, der spiser meget CPU-tid. Alt fra videokodning til kørende matematiske modeller kan få CPU'en til at køre ved 100%. Det er fint, hvis maskinen ikke laver noget andet. Men hvis det er dit primære skrivebord eller det bruges som en server, så kører en opgave, der maksimerer din CPU, at maskinen bliver træg og svært at bruge. Skønheden i et multitasking-operativsystem er, at maskinen ikke fryser, da det altid planlægger CPU-tid til andre opgaver, og ting som skrivebordet vil stadig arbejde, men meget langsommere. Planlæggeren har ingen måde at vide, at du ønsker, at CPU-intensiv opgave skal køre med en lavere prioritet eller for at begrænse CPU-tiden. Men der er nogle værktøjer, som kan bruges til at styre proces-CPU-brug for disse ressource hungrige opgaver.

For at efterligne en CPU-intensiv opgave kan vi bruge et værktøj kaldet matho-prime der genererer en liste over primtal. Hvis du beder om at generere en stor nok liste, vil det maksimere CPU'en, mens den arbejder. For at installere matho-prime på Ubuntu eller på en Raspberry Pi brug:

 sudo apt-get install matematisk-primes 

Lad os bare starte opgaven og se CPU-brugen:

 matho-primes 0 9999999999> p.txt & 

Dette fortæller matho-primes at generere en liste over primater fra nul til ni milliarder ni hundrede nioghalvfems millioner ni hundrede nioghalvfems tusinde ni hundrede og nioghalvfems! Udgangen omdirigeres til filen p.txt . Ampersand i slutningen fortæller skallen at køre programmet i baggrunden, hvilket betyder at du vender tilbage til kommandoprompten lige efter start af opgaven.

Kør nu top kommando og bemærk, hvor stor en CPU der bruges af primalletgeneratoren.

Lad os nu dræbe den opgave og se på, hvordan vi kan starte det med en lavere prioritet. Afslut top ved at trykke på q, og skriv derefter fg at bringe matho-primes til forgrunden og tryk derefter på "Ctrl + C" for at tvinge programmet til at gå ud.

Start nu programmet igen, men i begyndelsen af ​​kommandoen tilføj ordet nice :

 dejlige matho-primes 0 9999999999> p.txt & 

nice er et værktøj, der fortæller Linux at planlægge denne opgave med en lavere prioritet. Niceness spænder fra -20 (mest gunstige planlægning) til 19 (mindst gunstige). Som standard vil nice planlægge opgaven med en pænhed på 10. Som standard startes normale opgaver med en nøjagtighed på nul. Det betyder, at en opgave med en pænhed på 10 vil blive betragtet som en lavere prioritet og vil få CPU ressourcer mindre ofte.

Vi kan nu starte en anden af ​​disse primtalgeneratorer til at efterligne andre opgaver, du vil gøre på din maskine (f.eks. Webbrowsing eller skrivning af et dokument). Denne vil have en normal niceness, da brug af skrivebordet skal have en større prioritet end at køre prime nummergeneratoren.

 matho-primes 0 9999999999> p2.txt & 

Bemærk, at output fra denne fil omdirigeres til p2.txt . Udgangen fra top vil se sådan ud:

Som du kan se, får processen med den højere niceness mindre CPU-tid. Det betyder, at hvis du starter en CPU-intensiv opgave med det, vil det ikke få din maskine til at blive svag eller få det til at reagere langsomt.

cpulimit

Der er en anden kommando kaldet "cpulimit", som i stedet for at ændre planlægningsprioriteten, midlertidigt pauser en proces for at sikre, at den ikke overstiger den ønskede CPU-brug.

For at installere det skal du skrive:

 sudo apt-get install cpulimit 

Kør nu CPU-intensiv prime nummergeneratoren igen og bemærk dens PID-nummer ved hjælp af denne kommando:

 ps | grep matho-prime 

Den første kolonne af output er PID. Begræns nu CPU-brugen af ​​denne proces som denne:

 sudo cpulimit -b-l 50-p 16299 

Hvor 16299 er PID for matho-primes processen. Et kig med top viser noget som dette:

Går videre

Der er en ledsagende kommando til en nice kaldet renice som vil ændre nydigheden af ​​en eksisterende proces. Forsøg at bruge top eller ps med grep at få PID af en proces og brug renice +19 16299 at indstille prioriteten til det lavest mulige (hvor 16299 er procesens PID).

Du er velkommen til at tilføje i diskussionen i kommentaren nedenfor.