Oavsett hur fort din Linux-maskin är, kommer det alltid att finnas några uppgifter som förbrukar mycket CPU-tid. Allt från videokodning till löpande matematiska modeller kan orsaka att CPU körs till 100%. Det här är bra om maskinen inte gör någonting annat. Men om det är ditt huvudsakliga skrivbord eller det används som en server kör du en uppgift som maximerar din CPU, vilket gör maskinen långsam och svår att använda. Skönheten hos ett multitasking operativsystem är att maskinen inte fryser eftersom det alltid ska schemalägga CPU-tid för andra uppgifter och saker som skrivbordet kommer fortfarande att fungera, men mycket långsammare. Schemaläggaren har ingen möjlighet att veta att du vill att CPU-intensiv uppgift ska köras med en lägre prioritet eller för att begränsa sin CPU-tid. Det finns dock några verktyg som kan användas för att styra processens CPU-användning för dessa resurs hungriga uppgifter.

För att emulera en CPU-intensiv uppgift kan vi använda ett verktyg som kallas matho-prime som genererar en lista över primtal. Om du frågar det om att generera en tillräckligt stor lista kommer det att maximera CPU-enheten medan den fungerar. För att installera matho-prime på Ubuntu eller på en Raspberry Pi-användning:

 sudo apt-get installera matematiska-primes 

Låt oss bara starta uppgiften och se CPU-användningen:

 matho-primes 0 9999999999> p.txt & 

Detta berättar att matho-primes genererar en lista över primer från noll till nio miljarder nio hundra niofemio miljoner niohundra nittionio tusen nio hundra nittiofem! Utdatan omdirigeras till filen p.txt . Ampersand i slutet berättar om att skalet ska köra programmet i bakgrunden vilket innebär att du returneras till kommandotolkningen direkt efter att du har startat uppgiften.

Kör nu det top kommandot och märk hur mycket CPU som används av primtalgeneratorn.

Låt oss nu döda den uppgiften och titta på hur vi kan starta det med en lägre prioritet. Avsluta top genom att trycka på q, skriv sedan fg för att matho-primes i förgrunden och tryck sedan på "Ctrl + C" för att tvinga programmet att gå ut.

Starta programmet igen, men i början av kommandot lägg till ordet nice :

 fina mattepremier 0 9999999999> p.txt & 

nice är ett verktyg som berättar för Linux att schemalägga denna uppgift med lägre prioritet. Niceness varierar från -20 (mest gynnsamma schemaläggning) till 19 (minst gynnsamma). Som vanligt kommer schemaläggaren att schemalägga uppgiften med en finhet på 10. Som vanligt startas normala uppgifter med en nischhet av noll. Det betyder att en uppgift med en finhet på 10 kommer att ses som en lägre prioritet och kommer att ges CPU-resurser mindre ofta.

Vi kan nu starta en andra av dessa primtalgeneratorer för att emulera andra uppgifter som du vill göra på din maskin (som webbläsning eller skrivning av ett dokument). Den här kommer att ha en normal nischhet, eftersom skrivbordet borde ha högre prioritet än att köra primtalgeneratorn.

 matho-primes 0 9999999999> p2.txt & 

Observera att utmatningen från den här filen omdirigeras till p2.txt . Utsignalen från top kommer att se ut så här:

Som du kan se får processen med högre nischhet mindre CPU-tid. Det innebär att om du startar en CPU-intensiv uppgift med nice, kommer det inte att göra din maskin trög eller orsaka att den svarar långsamt.

cpulimit

Det finns ett annat kommando som heter "cpulimit" som istället för att ändra planeringsprioritering, pausar det tillfälligt en process för att säkerställa att den inte överstiger den önskade CPU-användningen.

För att installera det skriver du:

 sudo apt-get install cpulimit 

Kör nu CPU-intensiv primtalgenerator igen och notera sitt PID-nummer med hjälp av det här kommandot:

 ps | grep matho-prime 

Den första kolumnen i utgången är PID. Begränsa nu CPU-användningen av processen så här:

 sudo cpulimit-b-l 50-p 16299 

Där 16299 är PID i matho-primes processen. En titt med top visar någonting så här:

Går längre

Det finns en följeslagare till nice kallad renice som kommer att förändra finheten i en befintlig process. Försöker använda top eller ps med grep att få PID för en process och använd renice +19 16299 att ställa prioriteten till lägsta möjliga (var 16299 är processens PID).

Skriv gärna i diskussionen i kommentaren nedan.