Besturingsproces CPU-gebruik Met nice en cpulimit [Linux]
Ongeacht hoe snel uw Linux-machine is, er zullen altijd een aantal taken zijn die veel CPU-tijd verbruiken. Alles van videocodering tot het uitvoeren van wiskundige modellen kan ervoor zorgen dat de CPU 100% draait. Dit is prima als de machine niets anders doet. Maar als het uw belangrijkste bureaublad is of als een server wordt gebruikt, dan zal het uitvoeren van een taak die uw CPU maximaal belast, de machine traag en moeilijk te gebruiken maken. Het mooie van een multitasking-besturingssysteem is dat de machine niet zal bevriezen omdat de CPU-tijd altijd wordt gepland voor andere taken en dingen zoals de desktop nog steeds werken, maar veel langzamer. De planner heeft geen manier om te weten dat u wilt dat de CPU-intensieve taak met een lagere prioriteit wordt uitgevoerd of dat de CPU-tijd wordt beperkt. Er zijn echter een aantal tools die kunnen worden gebruikt om het CPU-gebruik van de computer te regelen voor deze resource-hongerige taken.
Om een CPU-intensieve taak te emuleren, kunnen we een tool gebruiken met de naam matho-prime
die een lijst priemgetallen genereert. Als je het vraagt om een lijst te genereren die groot genoeg is, zal het de CPU maximaal benutten terwijl het werkt. Om matho-prime
op Ubuntu of op een Raspberry Pi te installeren, gebruik je:
sudo apt-get installeer mathomatic-primes
Laten we gewoon de taak starten en het CPU-gebruik bekijken:
matho-primes 0 9999999999> p.txt &
Dit vertelt matho-primes
om een lijst van matho-primes
te genereren van nul tot negen miljard negenhonderdnegenennegentig miljoen negenhonderdnegenennegentig duizend negenhonderdnegenennegentig! De uitvoer wordt omgeleid naar het bestand p.txt
. De ampersand aan het einde vertelt de shell om het programma op de achtergrond uit te voeren, wat betekent dat u direct na het starten van de taak terugkeert naar de opdrachtprompt.
Voer nu de opdracht top
uit en merk de hoeveelheid CPU op die wordt gebruikt door de priemgetalgenerator.
Laten we nu die taak doden en kijken hoe we hem met een lagere prioriteit kunnen lanceren. Ga naar top
door op q
drukken en typ fg
om matho-primes
naar de voorgrond te brengen en druk vervolgens op "Ctrl + C" om het programma te dwingen om af te sluiten.
Start het programma opnieuw, maar voeg aan het begin van het commando het woord nice
:
leuke matho-primes 0 9999999999> p.txt &
nice
is een tool die Linux vertelt om deze taak op een lagere prioriteit in te plannen. De aardigheid varieert van -20 (meest gunstige planning) tot 19 (minst gunstig). Standaard zal nice
de taak plannen met een aardigheid van 10. Standaard worden normale taken gestart met een aardigheid van nul. Dit betekent dat een taak met een aardigheid van 10 als van een lagere prioriteit wordt gezien en minder vaak CPU-middelen zal krijgen.
We kunnen nu een tweede van deze priemgetalgenerator starten om andere taken te emuleren die u op uw machine wilt uitvoeren (zoals surfen op het web of het schrijven van een document). Deze zal een normale aardigheid hebben, aangezien het gebruik van de desktop een grotere prioriteit zou moeten hebben dan het uitvoeren van de priemgetalgenerator.
matho-primes 0 9999999999> p2.txt &
Merk op dat de uitvoer van dit bestand wordt omgeleid naar p2.txt
. De uitvoer van top
ziet er ongeveer zo uit:
Zoals u kunt zien, ontvangt het proces met de hogere aardigheid minder CPU-tijd. Dit betekent dat als u een CPU-intensieve taak met nice
start, dit uw machine niet traag zal maken of langzaam zal laten reageren.
cpulimit
Er is een ander commando genaamd "cpulimit" dat in plaats van het wijzigen van de planningsprioriteit, het tijdelijk een proces pauzeert om ervoor te zorgen dat dit het gewenste CPU-gebruik niet overschrijdt.
Om het te installeren, type:
sudo apt-get install cpulimit
Voer nu de CPU-intensieve priemgetalgenerator opnieuw uit en noteer het PID-nummer met deze opdracht:
ps | grep matho-prime
De eerste kolom van de uitvoer is de PID. Beperk nu het CPU-gebruik van dat proces als volgt:
sudo cpulimit -b-l 50 -p 16299
Waar 16299 de PID is van het matho-primes
proces. Een look met top
toont zoiets als dit:
Verder gaan
Er is een companion-opdracht voor nice
genaamd renice
die de aardigheid van een bestaand proces zal veranderen. Probeer gebruik te maken van top
of ps
met grep
om de PID van een proces te krijgen en renice +19 16299
te gebruiken om de prioriteit in te stellen op het laagst mogelijke (waarbij 16299 de PID van het proces is).
Voeg gerust toe in de discussie in de onderstaande opmerking.