CPU

Hur man begränsar CPU-användningen av en process på Linux

Hur man begränsar CPU-användningen av en process på Linux
Under din Linux-livstid måste du ha sett att vissa processer tar upp alla CPU-cykler (90-99% CPU-användning), vilket gör att din dator nästan inte svarar tills den är klar. Det kan vara okej om processen tar några sekunder att slutföra. Men vad händer om det tar lång tid? Det är inte så trevligt att sitta och titta på din dator som inte svarar i minuter och timmar, eller hur? Tja, Linux har många fantastiska verktyg för att göra dessa inte så trevligt processer till trevlig processer.

Du kan ställa in hur mycket CPU en enda process får ha. Om processen verkligen behöver mycket CPU-kraft kan du köra några kommandon för att ge den alla lediga CPU-cykler (CPU-cykler som du inte behöver). På det sättet behöver du aldrig sitta och stirra länge på din dator som inte svarar.

I den här artikeln kommer jag att visa dig hur du begränsar CPU-användningen av en process på Linux. Jag ska använda CentOS 7 i den här artikeln. Men alla moderna Linux-distributioner bör fungera. Så, låt oss komma igång.

Begränsa CPU-användning med trevlig och renice:

På Linux kan prioriteringarna för varje körningsprocess ändras. Du kan ställa in högre prioriteringar för processen som är viktigare för dig än en process som slår din CPU utan goda skäl.

Varje process på Linux har ett bra värde. Värdet av trevligt avgör vilken process som har högre prioriteringar och vilken som har lägre. Trevligt värde kan vara mellan -20 och 19. En process med det fina värdet -20 kommer att ha högsta prioritet och använda de flesta CPU-cykler. En process med det fina värdet 19 har lägst prioritet och använder CPU när inga andra processer bara använder den.

Det finns två sätt att ställa in det trevliga värdet av en process. Du kan antingen starta en process med trevlig kommando för att ställa in ett bra värde när du startar processen. Eller så kan du använda förlåtelse kommando för att ställa in ett bra värde efter att en process har startat.

För att ställa in ett trevligt värde när du startar en process, kör processen på följande sätt:

$ trevligt -n NICE_VALUE COMMAND_TO_RUN

NOTERA: Här NICE_VALUE kan vara allt från -20 till 19 och COMMAND_TO_RUN är något kommando som du vill köra med det fina värdet på NICE_VALUE.

Låt oss till exempel säga att du vill köra sova kommando med det fina värdet på 14. Kör kommandot enligt följande:

$ trevligt -n 14 sov 40000 &

Nu kan du verifiera om det trevliga värdet är korrekt inställt med det översta kommandot. Du kan lista alla processer som du startade (som din inloggningsanvändare) med följande kommando:

$ ps -fl

Som du kan se är det trevliga värdet av processen inställt på 14.

Om du nu vill ändra det fina värdet på dina befintliga processer, är allt du behöver process-ID (PID) för den process som du vill ändra det fina värdet för. Du kan använda ps aux kommandot eller topp kommando för att hitta process-ID eller PID.

Då kan du springa förlåtelse kommandot enligt följande för att ändra det fina värdet på en befintlig process:

$ sudo renice -n NEW_NICE_VALUE -p PROCESS_PID

Som du kan se, ändras det fina värdet av processen med PID 6422.

Begränsa CPU-användning med CGROUPS:

Den fullständiga formen av CGROUPS är Control Groups. Det är en Linux-kärnfunktion som används för att begränsa resurser till processgrupper som (CPU, minne, behörigheter och många fler) på Linux.

Allt du behöver göra är att skapa en ny processgrupp och lägga till dina processer som du vill begränsa resurser till, till den gruppen. Enkel!

CGROUPS-hanteringsverktyg är inte installerade på CentOS 7 som standard. Men det är tillgängligt i det officiella paketförvaret för CentOS 7.

Uppdatera först YUM-paketets förvarscache med följande kommando:

$ sudo yum makecache

Installera nu CGROUPS-hanteringsverktyg med följande kommando:

$ sudo yum installera libcgroup-tools

Tryck nu y och tryck sedan på .

Den ska installeras.

Du kan begränsa CPU-användningen för en enda grupp. Du kan till exempel använda CGROUPS för att berätta en process inom en CGROUP för att använda låt oss säga 100 ms av varje 1000 ms (eller .1 av var 1: e) CPU-tid.

Skapa först en CGROUP med följande kommando:

$ sudo cgcreate -g cpu: / cpulimit

NOTERA: Här, cpulimit är gruppnamnet som styr cpu användande.

Nu måste du ställa in cpu.cfs_period_us och cpu.cfs_quota_us fastighet på cpulimit grupp.

För detta exempel bör 1000 ms (millisekunder) eller 1000000 us (mikrosekunder) ställas in på cpu.cfs_period_us egendom och 100ms eller 100000us ska ställas in på cpu.cfs_quota_us fast egendom.

Kör följande kommandon för att ställa in dessa egenskaper till cpulimit grupp:

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

Nu kan du köra följande kommando för att kontrollera om alla egenskaper är korrekt inställda:

$ sudo cgget -g cpu: cpulimit

NOTERA: Här, cpulimit är namnet på CGROUP och cpu är den resurs som jag begränsar.

Som du kan se, cpu.cfs_period_us och cpu.cfs_quota_us är korrekt inställda.

Nu oavsett vilken process du lägger till cpulimit CGROUP använder 1/10th (100000/1000000 = 1/10 = 0.1 = 10%) av de totala CPU-cyklerna.

Nu för att begränsa CPU: n för en process, starta programmet eller kommandot med cgexec som följer:

$ sudo cgexec -g cpu: cpulimit YOUR_COMMAND

NOTERA: Här, DIN_COMMAND kan vara valfria Linux-kommandon.

För att bevisa att det faktiskt fungerar, ska jag först köra följande kommando utan CGROUPS och sedan med CGROUPS och visa resultaten.

$ dd if = / dev / zero of = out bs = 1M

Som du kan se, utan CGROUPS, använder kommandot 90% av den totala CPU: n.

Sedan körde jag samma kommando med CGROUPS enligt följande:

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

Som du kan se är CPU-användningen högst 10%. Processen använder inte mer än så.

Så det är så du använder CGROUPS för att begränsa CPU-användningen av en process på Linux. Tack för att du läste den här artikeln.

Referenser:

[1] https: // åtkomst.röd hatt.com / dokumentation / en-us / red_hat_enterprise_linux / 6 / html / resource_management_guide / sec-cpu

[2] https: // linux.dö.nät / man / 1 / trevligt

[3] https: // linux.dö.nät / man / 8 / renice

Hur man installerar och spelar Doom på Linux
Introduktion till Doom Doom-serien har sitt ursprung på 90-talet efter att den ursprungliga Doom släpptes. Det blev en omedelbar hit och från den tide...
Vulkan för Linux-användare
Med varje ny generation grafikkort ser vi spelutvecklare driva gränserna för grafisk trohet och komma ett steg närmare fotorealism. Men trots all kred...
OpenTTD vs Simutrans
Att skapa din egen transportsimulering kan vara rolig, avkopplande och extremt lockande. Det är därför du måste se till att du testar så många spel so...