Sådan begrænses brug af tid og hukommelse af processer i Linux


Timeout-scriptet er et nyttigt ressourceovervågningsprogram til begrænsning af tid og hukommelsesforbrug af processer i Linux. Det giver dig mulighed for at køre programmer under kontrol og håndhæve tids- og hukommelsesgrænser og afslutte programmet efter overtrædelse af disse parametre.

Ingen installation nødvendig, udfør blot en kommando sammen med sine argumenter ved hjælp af timeout-programmet, og det overvåger kommandos hukommelse og tidsforbrug, afbryder processen, hvis det går uden for grænserne og giver dig besked om den foruddefinerede besked.

For at køre dette script skal du have Perl 5 installeret på dit Linux-system og/proc-filsystemet monteret.

For at kontrollere den installerede version af Perl på dit Linux-system skal du køre følgende kommando.

$ perl -v

Derefter skal du klone timeout-lageret til dit system ved hjælp af git-kommandoen, derefter flytte ind i det lokale lager ved hjælp af cd-kommandoen og påberåbe det som en almindelig Linux-kommando.

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

Lad os nu se på, hvordan timeout-script fungerer.

Dette første eksempel viser, hvordan man begrænser hukommelsesforbruget af en proces til 100M virtuel hukommelse ved hjælp af -m -flagget. Standardenheden til hukommelse er i kilobyte.

Her kører kommandoen stress-ng 4 virtuelle hukommelsesstressorer (VMS), der tilsammen bruger 40% af den tilgængelige hukommelse i 10 minutter. Således bruger hver stressor 10% af den tilgængelige hukommelse.

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

I betragtning af output fra ovenstående timeout-kommando blev stress-ng-arbejdsprocesserne afsluttet efter kun 1,16 sekunder. Dette skyldes, at det kombinerede hukommelsesforbrug af VMS (438660 kilobyte) er større end det tilladte brug af virtuel hukommelse til stress-ng og dets underordnede processer.

For at aktivere tidsbegrænsning af processen skal du bruge flagget -t som vist.

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

I ovenstående eksempel dræbes arbejdsprocesserne, når stress-ng CPU + SYS-tiden overstiger den definerede værdi på 4.

Du kan også begrænse både hukommelse og tid på én gang som følger.

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

Timeout understøtter også nogle avancerede indstillinger såsom --detect-hangups , som muliggør detektion af hangup.

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

Du kan overvåge RSS (resident set size) hukommelsesgrænse ved hjælp af --memlimit-rss eller -s switch.

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

Derudover, for at returnere udgangskoden eller signalet + 128 for en proces skal du bruge indstillingen --confess eller -c som vist.

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

For mere information og brugseksempel, se timeout Github-arkivet: https://github.com/pshved/timeout.

Du kan også finde disse følgende relaterede artikler lige så nyttige:

  1. How To Find Top 15 Processes by Memory Usage with ‘top’ in Batch Mode
  2. CPUTool – Limit and Control CPU Utilization of Any Process in Linux
  3. How To Limit CPU Usage of a Process in Linux with CPULimit Tool

Timeout-scriptet er et simpelt ressourceovervågningsprogram, der i det væsentlige begrænser tid og hukommelsesforbrug af processer i Linux. Du kan give os feedback om timeout-scriptet via nedenstående kommentarformular.