Zoeken op website

Hoe tijd- en geheugengebruik van processen in Linux te beperken


Het timeout-script is een handig programma voor het monitoren van bronnen om de tijd- en geheugenconsumptie van processen in Linux te beperken. Hiermee kunt u programma's onder controle uitvoeren en tijd- en geheugenlimieten afdwingen, waarbij het programma wordt beëindigd bij overtreding van deze parameters.

Geen installatie nodig, voer eenvoudigweg een commando samen met zijn argumenten uit met behulp van het timeout programma. Het zal het geheugen en het tijdverbruik van het commando monitoren, het proces onderbreken als het de limieten overschrijdt, en u op de hoogte stellen met de vooraf gedefinieerde bericht.

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

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

perl -v

Kloon vervolgens de timeout repository naar je systeem met behulp van het git-commando, ga dan naar de lokale repository met behulp van het cd-commando en roep het aan als een gebruikelijk Linux-commando.

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

Laten we nu kijken hoe het time-out-script werkt.

Basisgeheugenbeperking (100 miljoen virtueel geheugen):

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

Hier voert de opdracht stress-ng vier virtuele geheugenstressoren (VMS) uit die samen 40% van het beschikbare geheugen gedurende 10 minuten gebruiken. Elke stressor gebruikt dus 10% van het beschikbare geheugen.

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

Gezien de uitvoer van het timeout commando hierboven, werden de stress-ng werkprocessen na slechts 1,16 seconden beëindigd. Dit komt omdat het gecombineerde geheugengebruik van de VMS (438660 kilobytes) groter is dan het toegestane virtuele geheugengebruik voor stress-ng en zijn onderliggende processen.

Basistijdbeperking van het proces:

Om tijdsbeperking van het proces in te schakelen, gebruikt u de vlag -t zoals weergegeven.

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

In het bovenstaande voorbeeld, wanneer de stress-ng CPU+SYS tijd de gedefinieerde waarde van 4 overschrijdt, worden de werkprocessen beëindigd.

Beperking van zowel de tijd als het geheugen van het proces

U kunt ook als volgt zowel het geheugen als de tijd in één keer beperken.

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

Timeout ondersteunt ook enkele geavanceerde opties, zoals --detect-hangups, waarmee detectie van ophangen mogelijk is.

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

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

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

Als u bovendien de exitcode of het signaal+128 van een proces wilt retourneren, gebruikt u de optie --confess of -c, zoals weergegeven.

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

Voor meer informatie en gebruiksvoorbeelden, zie de timeout Github-repository: https://github.com/pshved/timeout.

Mogelijk vindt u de volgende gerelateerde artikelen ook even nuttig:

  1. Hoe u de 15 beste processen kunt vinden op basis van geheugengebruik met 'top' in batchmodus
  2. CPUTool - Beperk en beheer het CPU-gebruik van elk proces in Linux
  3. Hoe u het CPU-gebruik van een proces in Linux kunt beperken met CPULimit Tool

Het timeout-script is een eenvoudig programma voor het monitoren van bronnen dat in essentie de tijd- en geheugenconsumptie van processen in Linux beperkt. U kunt ons feedback geven over het time-out-script via het onderstaande opmerkingenformulier.