processor

Hoe het CPU-gebruik van een proces op Linux te beperken?

Hoe het CPU-gebruik van een proces op Linux te beperken?
Tijdens je Linux-leven heb je vast gezien dat sommige processen alle CPU-cycli in beslag nemen (90-99% CPU-gebruik), waardoor je computer bijna niet meer reageert totdat het klaar is. Dat kan goed zijn als het proces een paar seconden duurt om te voltooien. Maar wat als het lang duurt?? Dat is niet erg leuk om minuten en uren naar je niet-reagerende computer te kijken, toch? Nou, Linux heeft veel geweldige tools om deze te maken niet zo aardig processen naar leuk processen.

U kunt instellen hoeveel CPU een enkel proces mag hebben. Als het proces echt veel CPU-kracht nodig heeft, kun je een paar opdrachten uitvoeren om het alle inactieve CPU-cycli te geven (CPU-cycli die je niet nodig hebt). Op die manier hoef je nooit lang naar je niet-reagerende computer te staren.

In dit artikel laat ik je zien hoe je het CPU-gebruik van een proces op Linux kunt beperken. Ik ga CentOS 7 gebruiken in dit artikel. Maar elke moderne Linux-distributie zou moeten werken. Dus laten we beginnen.

CPU-gebruik beperken met nice en renice:

Op Linux kunnen de prioriteiten van elk lopend proces worden gewijzigd. U kunt hogere prioriteiten stellen aan het proces dat belangrijker voor u is dan een proces dat zonder goede reden uw CPU belast.

Elk proces op Linux heeft een mooie waarde. De waarde van nice bepaalt welk proces hogere prioriteiten heeft en welke lagere. Mooie waarde kan tussen -20 en 19 . zijn. Een proces met de mooie waarde van -20 heeft de hoogste prioriteit en gebruikt de meeste CPU-cycli. Een proces met de mooie waarde 19 heeft de laagste prioriteit en gebruikt alleen de CPU als er geen andere processen zijn.

Er zijn twee manieren om de mooie waarde van een proces in te stellen. U kunt ofwel een proces starten met de leuk commando om een ​​mooie waarde in te stellen tijdens het starten van het proces. Of u kunt de renice commando om een ​​mooie waarde in te stellen nadat een proces is gestart.

Om een ​​mooie waarde in te stellen wanneer u een proces start, voert u het proces als volgt uit:

$ nice -n NICE_VALUE COMMAND_TO_RUN

OPMERKING: Hier NICE_VALUE kan van alles zijn -20 tot 19 en COMMAND_TO_RUN is een opdracht die u wilt uitvoeren met de mooie waarde van NICE_VALUE.

Laten we bijvoorbeeld zeggen dat u de slaap commando met de mooie waarde van 14. Voer de opdracht als volgt uit:

$ nice -n 14 slaap 40000 &

Nu kunt u controleren of de nice-waarde correct is ingesteld met behulp van het top-commando. U kunt alle processen weergeven die u hebt gestart (als uw aanmeldingsgebruiker) met de volgende opdracht:

$ ps -fl

Zoals je kunt zien, is de mooie waarde van het proces ingesteld op 14.

Als u nu de nice-waarde van uw bestaande processen wilt wijzigen, hebt u alleen de proces-ID (PID) nodig van het proces waarvan u de nice-waarde wilt wijzigen. U kunt de ps aux commando of de top commando om de proces-ID of PID te vinden.

Dan kun je rennen renice commando als volgt om de mooie waarde van een bestaand proces te wijzigen:

$ sudo renice -n NEW_NICE_VALUE -p PROCESS_PID

Zoals je kunt zien, is de mooie waarde van het proces met PID 6422 veranderd.

CPU-gebruik beperken met CGROUPS:

De volledige vorm van CGROUPS is Control Grijen. Het is een Linux-kernelfunctie die wordt gebruikt om bronnen te beperken voor het verwerken van groepen zoals (CPU, geheugen, machtigingen en nog veel meer) op Linux.

Het enige dat u hoeft te doen, is een nieuwe procesgroep maken en uw processen waaraan u de middelen wilt beperken, aan die groep toevoegen. Gemakkelijk!

CGROUPS-beheertools zijn standaard niet geïnstalleerd op CentOS 7. Maar het is beschikbaar in de officiële pakketrepository van CentOS 7.

Werk eerst de cache van de YUM-pakketrepository bij met de volgende opdracht:

$ sudo yum makecache

Installeer nu CGROUPS-beheertools met de volgende opdracht:

$ sudo yum install libcgroup-tools

Druk nu op ja en druk vervolgens op .

Het moet worden geïnstalleerd.

U kunt het CPU-gebruik van een enkele groep beperken. U kunt CGROUPS bijvoorbeeld gebruiken om een ​​proces binnen een CGROUP te vertellen dat het bijvoorbeeld 100 ms van elke 1000 ms moet gebruiken (of .1s op elke 1s) CPU-tijd.

Maak eerst een CGROUP aan met het volgende commando:

$ sudo cgcreate -g cpu:/cpulimit

OPMERKING: Hier, cpulimit is de groepsnaam die de . bestuurt processor gebruik.

Nu moet je instellen processor.cfs_period_us en processor.cfs_quota_us eigendom op de cpulimit groep.

Voor dit voorbeeld moet 1000ms (milliseconden) of 1000000us (microseconden) worden ingesteld op processor.cfs_period_us eigenschap en 100ms of 100000us moeten worden ingesteld op de processor.cfs_quota_us eigendom.

Voer de volgende opdrachten uit om deze eigenschappen in te stellen op de cpulimit groep:

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

Nu kunt u de volgende opdracht uitvoeren om te controleren of alle eigenschappen correct zijn ingesteld:

$ sudo cgget -g cpu:cpulimit

OPMERKING: Hier, cpulimit is de naam van de CGROUP en processor is de bron die ik aan het beperken ben.

Zoals je kunt zien, processor.cfs_period_us en processor.cfs_quota_us zijn correct ingesteld.

Aan welk proces je nu ook toevoegt cpulimit CGROUP gebruikt 1/10dit (100000/1000000 = 1/10 = 0.1 = 10%) van de totale CPU-cycli.

Om nu de CPU van een proces te beperken, start u het programma of de opdracht met cgexec als volgt:

$ sudo cgexec -g cpu:cpulimit YOUR_COMMAND

OPMERKING: Hier, UW_COMMANDO kunnen alle geldige Linux-opdrachten zijn.

Om te bewijzen dat het echt werkt, ga ik eerst de volgende opdracht uitvoeren zonder CGROUPS en vervolgens met CGROUPS en laat ik u de resultaten zien.

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

Zoals je kunt zien, gebruikt de opdracht zonder CGROUPS 90% van de totale CPU.

Vervolgens voerde ik hetzelfde commando uit met CGROUPS als volgt:

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

Zoals je kunt zien, is het CPU-gebruik maximaal 10%. Het proces gebruikt niet meer dan dat.

Dus zo gebruik je CGROUPS om het CPU-gebruik van een proces op Linux te beperken. Bedankt voor het lezen van dit artikel.

Referenties:

[1] https://toegang.rode Hoed.com/documentation/en-us/red_hat_enterprise_linux/6/html/resource_management_guide/sec-cpu

[2] https://linux.dood gaan.net/man/1/nice

[3] https://linux.dood gaan.netto/man/8/renice

Hoe FPS te verhogen in Linux?
FPS staat voor Beelden per seconde. De taak van FPS is om de framesnelheid te meten bij het afspelen van video's of speluitvoeringen. In eenvoudige wo...
Top Oculus App Lab-games
Als je eigenaar bent van een Oculus-headset, moet je op de hoogte zijn van sideloading. Sideloading is het proces van het installeren van niet-winkeli...
Top 10 spellen om te spelen op Ubuntu
Het Windows-platform is een van de dominante platforms voor gaming geweest vanwege het enorme percentage games dat tegenwoordig wordt ontwikkeld om Wi...