Noen ganger er det hendig å kunne gripe inn i hvor mye av prosessoren programmer får lov å bruke.
Operativsystemet skal jo stort sett ta seg av prioritering og disponering av prosessor-ressurser selv, men likevel kan kommandoene i denne veiledningen være veldig hendige. Vil du vite mer om behandling av prosesser generelt anbefaler jeg en guide hos LinuxCommand.
Nice
Vanligvis ønsker man å bruke nice for å håndtere programmer som tror de eier hele prosessoren. Med nice kan du starte programmer og oppgi hvor høyt prioritert de skal være i forhold til bruk av CPU-en.
Verdien du bruker sammen med nice angir om programmet skal være høyere eller lavere prioritert enn andre programmer. -20, som er laveste verdi, gir programmet høy prioritet, og 19, som er høyeste verdi, gir programmet lav prioritet. Når to forskjellige programmer konkurrer om prosessoren vil dermed programmet med høyest prioritet få mest CPU-tid. Selv om den ikke gjør maskinen din raskere per se, vil opplevelsen av ytelsen kunne bli bedre.
Har du for eksempel en tjener som har som oppgave å presentere sanntidsdata, la oss si direktekonvertering og streaming av video (her:vlc), kan det være en fordel å gi den prosessen høy prioritet (her:-10):
$ sudo nice –adjustment=-10 vlc
Legg merke til at du må være root for å få satt opp prioriteten.
Og har du en slem prosess (her:firefox) som ikke oppfører seg ordentlig, og gjør at hele maskinen føles som sirup når du bruker den, gir man den lav prioritet (her:10):
$ nice –adjustment=10 firefox
Du kan også bruke renice for å endre verdien på prosesser som allerede kjører. Skriv «man renice» i en terminal for å lese om syntaksen på den.
Du kan som oftest bruke grafiske verktøy for å gjøre denne jobben. I Ubuntu er det mulig å endre prioritet på prosesser i Systemmonitor (under System-> Administrasjon). Bare høyreklikk på prosessen og velg Prioritet.
Cpulimit
I stedet for å sette hvilken prioritet som er ønskelig, setter cpulimit en grense for hvor mange prosent av prosessorkraften som får brukes. I de fleste tilfeller vil dette være en mindre effektiv måte å disponere CPU-ressurser rent ytelsesmessig, men jeg har funnet noen bruksområder.
Maskinen jeg bruker nå bråker som en industristøvsuger når prosessoren får litt mye å gjøre. Firefox med Flash (flashplugin-nonfree) kan fort bli en skikkelig ressurssluker. Skal jeg se en lengre flashvideo på nett, går jeg med øresus i flere timer etterpå.
En løsning kan være å bruke cpulimit. Med den kan jeg sette at Firefox kun skal få lov til å bruke maks 50% av CPU-en. Det viser seg at det holder i massevis, og jeg merker svært lite ytelsesforskjell.
Du kan velge å bruke enten navn på programfila, eller PID når du bruker cpulimit.
For å ta den første metoden først, så brukes den slik:
$ cpulimit -e firefox 50
Har du flere instanser av Firefox oppe, vil denne fungere kun på den første cpulimit finner. Derfor er det noen ganger hensiktsmessig å heller bruke PID. PID-en finner du ved å finne igjen programmet med «ps»:
ps aux | grep -i firefox
PID-en skal da dukke opp i andre kolonne.
Og syntaksen for å starte cpulimit kan da være:
$ cpulimit -p 6485 50
Når du har satt grensen med cpulimit kan du sjekke om det funker ved å bruke kommandoen «top» for å se prosessene som tar mest CPU.
Jeg gjør oppmerksom på at det er en bug i cpulimit som gjør at du ikke kan bruke langversjonen av opsjonene i versjon 1.1-10. Du må med andre ord bruke «-p» og ikke «–pid=” og så videre, ellers vil du mest sannsynlig få feilmeldingen «segmentation fault».
Veldig bra. Firefox er et h.. på gamle støvsugere.
Har du noen ide om hvordan cpulimit kan settes opp slik at når brukere (uten rettigheter) starter definerte program (FF) blir disse automagisk begrenset.
Dersom du starter cpulimit og lar den gå, vil den faktisk justere prosessen når den blir startet:
Det er et problem med denne måten å gjøre det på, og det er at den kun vil ta den første prosessen som dukker opp. Åpner du to instanser av Firefox, vil med andre ord ikke den siste justeres.
Dette kan man selvfølgelig fikse med et script som henter ut PID-ene til alle instanser av Firefox. For eksempel:
Denne kan da legges inn som et script som en priviligert brukerkonto kjører. Har ikke testet det selv, men det bør kunne funke.