CPU

Sådan begrænses CPU-brugen af ​​en proces på Linux

Sådan begrænses CPU-brugen af ​​en proces på Linux
I din Linux-levetid skal du have set nogle processer optage alle CPU-cyklusser (90-99% CPU-forbrug), hvilket gør din computer næsten ikke reagerer, indtil den er færdig. Det kan være okay, hvis processen tager et par sekunder at gennemføre. Men hvad hvis det tager lang tid? Det er ikke særlig rart at sidde og se på din ikke-responsive computer i minutter og timer, ikke sandt? Nå, Linux har mange fantastiske værktøjer til at lave disse ikke særlig flot processer til pæn processer.

Du kan indstille, hvor meget CPU en enkelt proces må have. Hvis processen virkelig har brug for meget CPU-strøm, kan du køre et par kommandoer for at give det alle de inaktive CPU-cyklusser (CPU-cyklusser, som du ikke har brug for). På den måde behøver du aldrig sidde og stirre længe på din computer, der ikke svarer.

I denne artikel vil jeg vise dig, hvordan du begrænser CPU-brugen af ​​en proces på Linux. Jeg skal bruge CentOS 7 i denne artikel. Men enhver moderne Linux-distribution skal fungere. Så lad os komme i gang.

Begrænsning af CPU-brug med god fornøjelse:

På Linux kan prioriteterne for hver kørende proces ændres. Du kan indstille højere prioriteter til processen, som er vigtigere for dig end en proces, der ikke hogger din CPU uden god grund.

Hver proces på Linux har en god værdi. Værdien af ​​nice bestemmer, hvilken proces der har højere prioriteter, og hvilken der har lavere. Fin værdi kan være mellem -20 og 19. En proces med en pæn værdi på -20 har højeste prioritet og bruger de fleste CPU-cyklusser. En proces med den fine værdi 19 har lavest prioritet og bruger CPU'en, når ingen andre processer kun bruger den.

Der er to måder at indstille den pæne værdi af en proces på. Du kan enten starte en proces med pæn kommando til at indstille en pæn værdi, mens du starter processen. Eller du kan bruge undladelse kommando til at indstille en pæn værdi efter en proces er startet.

For at indstille en god værdi, når du starter en proces, skal du køre processen som følger:

$ dejligt -n NICE_VALUE COMMAND_TO_RUN

BEMÆRK: Her NICE_VALUE kan være alt fra -20 til 19 og COMMAND_TO_RUN er enhver kommando, du vil køre med den pæne værdi af NICE_VALUE.

Lad os f.eks. Sige, at du vil køre søvn kommando med den pæne værdi af 14. Kør kommandoen som følger:

$ dejligt -n 14 sove 40000 &

Nu kan du kontrollere, om den pæne værdi er indstillet korrekt ved hjælp af den øverste kommando. Du kan liste alle de processer, du startede (som din loginbruger) med følgende kommando:

$ ps -fl

Som du kan se, er den gode værdi af processen indstillet til 14.

Hvis du nu vil ændre den pæne værdi af dine eksisterende processer, er alt hvad du behøver proces-id (PID) for den proces, som du vil ændre den pæne værdi. Du kan bruge ps aux kommando eller top kommando for at finde proces-id eller PID.

Så kan du løbe undladelse kommando som følger for at ændre den pæne værdi af en eksisterende proces:

$ sudo renice -n NEW_NICE_VALUE -p PROCESS_PID

Som du kan se, ændres den pæne værdi af processen med PID 6422.

Begrænsning af CPU-brug med CGROUPS:

Den fulde form for CGROUPS er Control Ggrupper. Det er en Linux-kernefunktioner, der bruges til at begrænse ressourcer til procesgrupper som (CPU, hukommelse, tilladelser og mange flere) på Linux.

Alt hvad du skal gøre er at oprette en ny procesgruppe og tilføje dine processer, som du vil begrænse ressourcer til, til den gruppe. Enkel!

CGROUPS-styringsværktøjer er ikke installeret på CentOS 7 som standard. Men det er tilgængeligt i det officielle pakkeopbevaringssted for CentOS 7.

Opdater først YUM-pakkeopbevaringscachen med følgende kommando:

$ sudo yum makecache

Installer nu CGROUPS-styringsværktøjer med følgende kommando:

$ sudo yum installerer libcgroup-tools

Tryk nu y og tryk derefter på .

Det skal installeres.

Du kan begrænse CPU-brugen af ​​en enkelt gruppe. For eksempel kan du bruge CGROUPS til at fortælle en proces inden for en CGROUP for at bruge lad os sige 100 ms ud af hver 1000 ms (eller .1s ud af hver 1s) af CPU-tid.

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

$ sudo cgcreate -g cpu: / cpulimit

BEMÆRK: Her, cpulimit er gruppenavnet, der styrer cpu brug.

Nu skal du indstille cpu.cfs_period_us og cpu.cfs_quota_us ejendom på cpulimit gruppe.

I dette eksempel skal 1000 ms (millisekunder) eller 1000000 us (mikrosekunder) indstilles til cpu.cfs_period_us ejendom og 100ms eller 100000us skal indstilles til cpu.cfs_quota_us ejendom.

Kør følgende kommandoer for at indstille disse egenskaber til cpulimit gruppe:

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

Nu kan du køre følgende kommando for at kontrollere, om alle egenskaberne er korrekt indstillet:

$ sudo cgget -g cpu: cpulimit

BEMÆRK: Her, cpulimit er navnet på CGROUP og cpu er den ressource, jeg begrænser.

Som du kan se, cpu.cfs_period_us og cpu.cfs_quota_us er korrekt indstillet.

Nu uanset hvilken proces du tilføjer til cpulimit CGROUP bruger 1/10th (100000/1000000 = 1/10 = 0.1 = 10%) af de samlede CPU-cyklusser.

Start nu programmet eller kommandoen med for at begrænse CPU i en proces cgexec som følger:

$ sudo cgexec -g cpu: cpulimit YOUR_COMMAND

BEMÆRK: Her, DIN_KOMMAND kan være alle gyldige Linux-kommandoer.

For at bevise, at det faktisk fungerer, skal jeg først køre følgende kommando uden CGROUPS og derefter med CGROUPS og vise dig resultaterne.

$ dd hvis = / dev / nul af = ud bs = 1M

Som du kan se, uden CGROUPS, bruger kommandoen 90% af den samlede CPU.

Derefter kørte jeg den samme kommando med CGROUPS som følger:

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

Som du kan se, er CPU-brugen maksimalt 10%. Processen bruger ikke mere end det.

Så det er sådan, du bruger CGROUPS til at begrænse CPU-brugen af ​​en proces på Linux. Tak, fordi du læste denne artikel.

Referencer:

[1] https: // adgang.rød hat.com / dokumentation / da-os / red_hat_enterprise_linux / 6 / html / resource_management_guide / sec-cpu

[2] https: // linux.dø.net / mand / 1 / dejligt

[3] https: // linux.dø.net / mand / 8 / renice

OpenTTD vs Simutrans
Oprettelse af din egen transportsimulering kan være sjovt, afslappende og ekstremt lokkende. Derfor skal du sørge for at prøve så mange spil som mulig...
OpenTTD Tutorial
OpenTTD er et af de mest populære forretningssimuleringsspil derude. I dette spil skal du oprette en vidunderlig transportvirksomhed. Du starter dog i...
SuperTuxKart til Linux
SuperTuxKart er en fantastisk titel designet til at give dig Mario Kart-oplevelsen gratis på dit Linux-system. Det er ret udfordrende og sjovt at spil...