prosessor

Hvordan begrense CPU-bruk av en prosess på Linux

Hvordan begrense CPU-bruk av en prosess på Linux
I løpet av din Linux-levetid må du ha sett at noen prosesser tar opp alle CPU-syklusene (90-99% CPU-bruk), noe som gjør datamaskinen din nesten ikke svarer til den er ferdig. Det kan være greit hvis prosessen tar noen sekunder å fullføre. Men hva om det tar lang tid? Det er ikke veldig hyggelig å sitte og se på datamaskinen som ikke svarer i minutter og timer, ikke sant? Vel, Linux har mange fantastiske verktøy for å lage disse ikke veldig snilt prosesser til hyggelig prosesser.

Du kan angi hvor mye CPU en enkelt prosess har lov til å ha. Hvis prosessen virkelig trenger mye CPU-kraft, kan du kjøre noen få kommandoer for å gi den alle ledige CPU-sykluser (CPU-sykluser som du ikke trenger). På den måten slipper du å sitte og stirre på datamaskinen som ikke svarer lenge.

I denne artikkelen vil jeg vise deg hvordan du kan begrense CPU-bruk av en prosess på Linux. Jeg skal bruke CentOS 7 i denne artikkelen. Men enhver moderne Linux-distribusjon skal fungere. Så, la oss komme i gang.

Begrensning av CPU-bruk med god og renice:

På Linux kan prioriteringene til hver kjørende prosess endres. Du kan sette høyere prioriteringer for prosessen som er viktigere for deg enn en prosess som ikke gir deg CPU uten god grunn.

Hver prosess på Linux har en fin verdi. Verdien av fin avgjør hvilken prosess som har høyere prioriteringer og hvilken som har lavere. Fin verdi kan være mellom -20 og 19. En prosess med en fin verdi på -20 vil ha høyest prioritet og vil bruke flest CPU-sykluser. En prosess med fin verdi 19 vil ha lavest prioritet og vil bruke CPU når ingen andre prosesser bare bruker den.

Det er to måter å sette den fine verdien av en prosess på. Du kan enten starte en prosess med hyggelig kommando for å sette en fin verdi mens du starter prosessen. Eller du kan bruke renice kommando for å sette en fin verdi etter at en prosess har startet.

For å sette en fin verdi når du starter en prosess, kjør prosessen som følger:

$ hyggelig -n NICE_VALUE COMMAND_TO_RUN

MERK: Her NICE_VALUE kan være alt fra -20 til 19 og COMMAND_TO_RUN er hvilken som helst kommando du vil kjøre med den fine verdien av NICE_VALUE.

La oss for eksempel si at du vil kjøre søvn kommando med den fine verdien av 14. Kjør kommandoen som følger:

$ hyggelig -n 14 sove 40000 &

Nå kan du bekrefte om den fine verdien er satt riktig ved hjelp av toppkommandoen. Du kan liste opp alle prosessene du startet (som innloggingsbruker) med følgende kommando:

$ ps -fl

Som du kan se, er den fine verdien av prosessen satt til 14.

Hvis du nå vil endre den fine verdien av eksisterende prosesser, er alt du trenger prosess-ID (PID) for prosessen du vil endre den fine verdien for. Du kan bruke ps aux kommandoen eller topp kommando for å finne prosess-ID eller PID.

Da kan du løpe renice kommandoen som følger for å endre den fine verdien av en eksisterende prosess:

$ sudo renice -n NEW_NICE_VALUE -p PROCESS_PID

Som du kan se, endres den fine verdien av prosessen med PID 6422.

Begrensning av CPU-bruk med CGROUPS:

Den fulle formen for CGROUPS er Control Groups. Det er en Linux-kjernefunksjoner som brukes til å begrense ressurser til prosessgrupper som (CPU, minne, tillatelser og mange flere) på Linux.

Alt du trenger å gjøre er å opprette en ny prosessgruppe og legge til prosessene du vil begrense ressursene til, til den gruppen. Enkel!

CGROUPS-styringsverktøy er ikke installert på CentOS 7 som standard. Men den er tilgjengelig i det offisielle pakkelageret til CentOS 7.

Oppdater først YUM-pakkelagerbufferen med følgende kommando:

$ sudo yum makecache

Installer nå CGROUPS-styringsverktøy med følgende kommando:

$ sudo yum installer libcgroup-verktøy

Trykk nå y og trykk deretter på .

Den skal installeres.

Du kan begrense CPU-bruk i en enkelt gruppe. For eksempel kan du bruke CGROUPS for å fortelle en prosess i en CGROUP for å bruke la oss si 100ms av hver 1000ms (eller .1s av hver 1s) av CPU-tid.

Opprett først en CGROUP med følgende kommando:

$ sudo cgcreate -g cpu: / cpulimit

MERK: Her, cpulimit er gruppenavnet som styrer prosessor bruk.

Nå må du stille prosessor.cfs_period_us og prosessor.cfs_quota_us eiendom på cpulimit gruppe.

For dette eksemplet bør 1000 ms (millisekunder) eller 1000000 us (mikrosekunder) settes til prosessor.cfs_period_us eiendom og 100ms eller 100000us bør settes til prosessor.cfs_quota_us eiendom.

Kjør følgende kommandoer for å sette disse egenskapene til cpulimit gruppe:

$ sudo cgset -r cpu.cfs_period_us = 1000000 cpulimit
$ sudo cgset -r cpu.cfs_quota_us = 100000 cpulimit

Nå kan du kjøre følgende kommando for å sjekke om alle egenskapene er riktig angitt:

$ sudo cgget -g cpu: cpulimit

MERK: Her, cpulimit er navnet på CGROUP og prosessor er ressursen jeg begrenser.

Som du kan se, prosessor.cfs_period_us og prosessor.cfs_quota_us er riktig innstilt.

Nå uansett hvilken prosess du legger til cpulimit CGROUP vil bruke 1/10th (100000/1000000 = 1/10 = 0.1 = 10%) av de totale CPU-syklusene.

Nå for å begrense CPU i en prosess, start programmet eller kommandoen med cgexec som følger:

$ sudo cgexec -g cpu: cpulimit YOUR_COMMAND

MERK: Her, DIN_KOMMAND kan være alle gyldige Linux-kommandoer.

For å bevise at det faktisk fungerer, skal jeg først kjøre følgende kommando uten CGROUPS og deretter med CGROUPS og vise resultatene.

$ dd hvis = / dev / null av = ut bs = 1M

Som du kan se, uten CGROUPS, bruker kommandoen 90% av total CPU.

Så kjørte jeg den samme kommandoen med CGROUPS som følger:

$ sudo cgexec -g cpu: cpulimit dd if = / dev / zero of = out bs = 1M

Som du kan se, er CPU-bruken maksimalt 10%. Prosessen bruker ikke mer enn det.

Så det er slik du bruker CGROUPS for å begrense CPU-bruken av en prosess på Linux. Takk for at du leser denne artikkelen.

Referanser:

[1] https: // tilgang.Rød hatt.no / dokumentasjon / no-us / red_hat_enterprise_linux / 6 / html / resource_management_guide / sec-cpu

[2] https: // linux.dø.nett / mann / 1 / fin

[3] https: // linux.dø.nett / mann / 8 / renice

Kjemp om Wesnoth-opplæringen
Kampen om Wesnoth er et av de mest populære open source-strategispillene du kan spille på dette tidspunktet. Ikke bare har dette spillet vært i utvikl...
0 A.D. Opplæringen
Ut av de mange strategispillene der ute, 0 A.D. klarer å skille seg ut som en omfattende tittel og et veldig dypt, taktisk spill til tross for å være ...
Unity3D opplæring
Introduksjon til Unity 3D Unity 3D er en kraftig spillutviklingsmotor. Det er kryssplattform, det er det lar deg lage spill for mobil, web, stasjonær ...