Uansett hvor fort Linux-maskinen din er, vil det alltid være noen oppgaver som bruker mye CPU-tid. Alt fra videokoding til løpende matematiske modeller kan føre til at CPUen kjører på 100%. Dette er greit hvis maskinen ikke gjør noe annet. Men hvis det er ditt hovedskrivebord eller det brukes som en server, kjører du en oppgave som maksimerer CPUen din, slik at maskinen blir treg og vanskelig å bruke. Skjønnheten i et multitasking operativsystem er at maskinen ikke vil fryse, da det alltid vil planlegge CPU-tid for andre oppgaver, og ting som skrivebordet vil fortsatt fungere, men mye langsommere. Planleggeren har ingen måte å vite at du vil at CPU-intensiv oppgave skal kjøre med lavere prioritet eller for å begrense CPU-tiden. Men det er noen verktøy som kan brukes til å kontrollere prosess CPU bruk for disse ressurs sultne oppgavene.

For å etterligne en CPU-intensiv oppgave, kan vi bruke et verktøy som kalles matho-prime som genererer en liste over primtal. Hvis du spør den om å generere en stor nok liste, vil den maksimere CPU mens den fungerer. For å installere matho-prime på Ubuntu eller på en Raspberry Pi bruk:

 sudo apt-get install matematisk-primes 

La oss bare starte oppgaven og se CPU-bruken:

 matho-primes 0 9999999999> p.txt & 

Dette forteller matho-primes å generere en liste over primater fra null til ni milliarder ni hundre og nitti ni millioner ni hundre og nitti ni tusen ni hundre og nitti ni! Utgangen blir omdirigert til filen p.txt . Ampersand på slutten forteller skallet å kjøre programmet i bakgrunnen, noe som betyr at du kommer tilbake til kommandoprompten rett etter at du har startet oppgaven.

Kjør nå top kommandoen og legg merke til hvor mye CPU som brukes av hovednummergeneratoren.

La oss nå drepe den oppgaven og se på hvordan vi kan starte den med lavere prioritet. Gå ut av top ved å trykke på q, og skriv deretter fg å få matho-primes til forgrunnen, og trykk deretter på "Ctrl + C" for å tvinge programmet til å avslutte.

Nå starter programmet igjen, men i begynnelsen av kommandoen legger du til ordet nice :

 fine matho-primes 0 9999999999> p.txt & 

nice er et verktøy som forteller Linux å planlegge denne oppgaven med lavere prioritet. Niceheten spenner fra -20 (mest gunstige planlegging) til 19 (minst gunstige). Som standard vil nice planlegge oppgaven med en finhet på 10. Som standard startes normale oppgaver med en finhet på null. Dette betyr at en oppgave med en finhet på 10 vil bli sett på som en lavere prioritet, og vil bli gitt CPU-ressurser sjeldnere.

Vi kan nå starte en andre av disse primtalgeneratorene for å etterligne andre oppgaver du vil gjøre på maskinen din (for eksempel nettlesing eller skriving av et dokument). Denne vil ha en normal finhet, da bruk av skrivebordet bør ha en høyere prioritet enn å kjøre hovednummergeneratoren.

 matho-primes 0 9999999999> p2.txt & 

Merk at utdataene fra denne filen blir omdirigert til p2.txt . Utgangen fra top vil se slik ut:

Som du kan se, får prosessen med høyere finhet mindre CPU-tid. Dette betyr at hvis du starter en CPU-intensiv oppgave med nice, vil det ikke gjøre maskinen din svak eller forårsake at den svarer sakte.

cpulimit

Det er en annen kommando kalt "cpulimit" som i stedet for å endre planleggingsprioriteten, midlertidig pauser en prosess for å sikre at den ikke overstiger den ønskede CPU-bruken.

For å installere det, skriv:

 sudo apt-get install cpulimit 

Kjør nå CPU-intensiv primallummergeneratoren igjen og noter PID-nummeret ved hjelp av denne kommandoen:

 ps | grep matho-prime 

Den første kolonnen for utgangen er PID. Begrens nå CPU-bruken av denne prosessen slik:

 sudo cpulimit -b-l 50-p 16299 

Hvor 16299 er PID for matho-primes prosessen. En titt med top viser noe slikt:

Gå videre

Det er en følgesvenn kommandoen til nice kalt renice som vil forandre finheten til en eksisterende prosess. Forsøk å bruke top eller ps med grep å få PID av en prosess og bruk renice +19 16299 å sette prioriteten til lavest mulig (der 16299 er PID for prosessen).

Ta gjerne med i diskusjonen i kommentaren nedenfor.