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_RUNNOTERA: 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: / cpulimitNOTERA: 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: cpulimitNOTERA: 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_COMMANDNOTERA: 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