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.