Hoe beperken van tijd en geheugengebruik van processen in Linux

Het timeout-script is een nuttig hulpmiddel voor het monitoren van resources om de tijd en geheugenconsumptie van processen in Linux te beperken. Het stelt u in staat om programma’s onder controle uit te voeren en tijd- en geheugenlimieten af te dwingen, waarbij het programma wordt beëindigd bij overtreding van deze parameters.

Geen installatie nodig, voer eenvoudig een opdracht samen met de argumenten uit met het timeout-programma en het zal het geheugen- en tijdverbruik van de opdracht bewaken, het proces onderbreken als het buiten de limieten valt en u op de hoogte stellen met het vooraf gedefinieerde bericht.

Om dit script uit te voeren, moet u Perl 5 geïnstalleerd hebben op uw Linux-systeem en het /proc-bestandssysteem gemonteerd hebben.

Om de geïnstalleerde versie van Perl op uw Linux-systeem te controleren, voert u de volgende opdracht uit.

$ perl -v
Check Perl Version in Linux

Vervolgens kloont u de timeout-repository naar uw systeem met behulp van het git-commando, verplaatst u zich naar de lokale repository met behulp van het cd-commando en roept u het aan als een gewone Linux-opdracht.

$ cd ~/bin
$ git clone https://github.com/pshved/timeout.git
$ cd timeout

Laten we nu eens kijken hoe het timeout-script werkt.Basisgeheugenlimiet (100M virtueel geheugen):

Basisgeheugenbeperking (100M aan virtueel geheugen):

Dit eerste voorbeeld laat zien hoe u het geheugengebruik van een proces kunt beperken tot 100M virtueel geheugen, met behulp van de -m vlag. De standaardeenheid voor geheugen is in kilobytes.

Hier wordt de stress-ng-opdracht uitgevoerd met 4 virtuele geheugen stressors (VMS) die samen 40% van het beschikbare geheugen gebruiken gedurende 10 minuten. Elk stressor gebruikt dus 10% van het beschikbare geheugen.

$ ./timeout -m 100000 stress-ng --vm 4 --vm-bytes 40% -t 10m
Limiting Memory of Process

Gezien de uitvoer van de timeout-opdracht hierboven, werden de stress-ng werknemersprocessen na slechts 1,16 seconden afgebroken. Dit komt omdat het gecombineerde geheugengebruik van de VMS (438660 kilobytes) groter is dan het toegestane virtuele geheugengebruik voor stress-ng en zijn kindprocessen.

Basislimiet voor procesduur:

Gebruik de -t vlag om tijdsbeperking van proces in te schakelen, zoals weergegeven.

$ ./timeout -t 4 stress-ng --vm 4 --vm-bytes 40% -t 10m
Time Limiting of Process

In bovenstaand voorbeeld, wanneer de stress-ng CPU+SYS tijd de gedefinieerde waarde van 4 overschrijdt, worden de werknemersprocessen gedood.

Beperking van zowel tijd als geheugen van proces

U kunt ook zowel geheugen als tijd tegelijk beperken, zoals hieronder weergegeven.

$ ./timeout -t 4 -m 100000 stress-ng --vm 4 --vm-bytes 40% -t 10m

Timeout ondersteunt ook enkele geavanceerde opties zoals --detect-hangups, die hang-up detectie inschakelt.

$ ./timeout --detect-hangups -m 100000 stress-ng --vm 4 --vm-bytes 40% -t 10m

Je kunt het RSS (resident set size) geheugenlimiet controleren met de --memlimit-rss of -s schakelaar.

$ ./timeout -m 100000 -s  stress-ng --vm 4 --vm-bytes 40% -t 10m

Bovendien, om de exitcode of signaal+128 van een proces terug te krijgen, gebruik je de --confess of -c optie zoals getoond.

$ ./timeout -m 100000 -c  stress-ng --vm 4 --vm-bytes 40% -t 10m

Voor meer informatie en een gebruiksvoorbeeld, zie het timeout Github repository: https://github.com/pshved/timeout.

Je zou ook deze volgende gerelateerde artikelen even nuttig kunnen vinden:

  1. Hoe je de Top 15 Processen kunt vinden op basis van Geheugengebruik met ’top’ in Batchmodus
  2. CPUTool – Beperk en Controleer CPU-gebruik van Elk Proces in Linux
  3. Hoe je CPU-gebruik van een Proces kunt Beperken in Linux met CPULimit Tool

Het timeout script is een eenvoudig programma voor het monitoren van resources dat in wezen de tijd en het geheugenverbruik van processen in Linux beperkt. Je kunt ons feedback geven over het timeout script via het opmerkingenformulier hieronder.

Source:
https://www.tecmint.com/limit-time-and-memory-usage-of-linux-process/