Com limitar el temps i l'ús de memòria dels processos a Linux


L'script de temps d'espera és un programa útil de control de recursos per limitar el temps i el consum de memòria dels processos a Linux. Us permet executar programes sota control i fer complir els límits de temps i memòria, finalitzant el programa en violar aquests paràmetres.

No cal instal·lació, simplement executeu una ordre juntament amb els seus arguments mitjançant el programa de temps d'espera i controlarà la memòria i el consum de temps de l'ordre, interrompent el procés si surt dels límits i us notificarà amb el missatge predefinit.

Per executar aquest script, heu de tenir Perl 5 instal·lat al vostre sistema Linux i el sistema de fitxers /proc muntat.

Per comprovar la versió instal·lada de Perl al vostre sistema Linux, executeu l'ordre següent.

$ perl -v

A continuació, cloneu el dipòsit de temps d'espera al vostre sistema mitjançant l'ordre habitual de Linux.

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

Vegem ara com funciona l'script de temps d'espera.

Aquest primer exemple mostra com limitar l'ús de memòria d'un procés a 100 M de memòria virtual, utilitzant la marca -m. La unitat predeterminada per a la memòria és en kilobytes.

Aquí, l'ordre stress-ng executa 4 factors d'estrès de memòria virtual (VMS) que es combinen per utilitzar el 40% de la memòria disponible durant 10 minuts. Així, cada factor estressant utilitza el 10% de la memòria disponible.

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

Tenint en compte la sortida de l'ordre de temps d'espera anterior, els processos de treball de stress-ng es van acabar després de només 1,16 segons. Això es deu al fet que el consum de memòria combinat del VMS (438660 kilobytes) és superior a l'ús de memòria virtual permès per a stress-ng i els seus processos fills.

Per habilitar la limitació de temps del procés, utilitzeu la marca -t tal com es mostra.

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

A l'exemple anterior, quan el temps de stress-ng CPU+SYS supera el valor definit de 4, els processos de treball s'eliminen.

També podeu limitar la memòria i el temps alhora de la següent manera.

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

El temps d'espera també admet algunes opcions avançades com ara --detect-hangups, que permet la detecció de penjades.

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

Podeu controlar el límit de memòria RSS (mida del conjunt del resident) mitjançant l'interruptor --memlimit-rss o -s.

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

A més, per retornar el codi de sortida o senyal+128 d'un procés, utilitzeu l'opció --confess o -c tal com es mostra.

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

Per obtenir més informació i exemple d'ús, consulteu el repositori de Github de temps d'espera: https://github.com/pshved/timeout.

També podeu trobar els següents articles relacionats igualment útils:

  1. Com trobar els 15 processos principals per ús de memòria amb superior en mode per lots
  2. CPUTool: limita i controla l'ús de la CPU de qualsevol procés a Linux
  3. Com limitar l'ús de la CPU d'un procés a Linux amb l'eina CPULimit

L'script de temps d'espera és un programa de control de recursos senzill que restringeix essencialment el temps i el consum de memòria dels processos a Linux. Podeu donar-nos comentaris sobre l'script de temps d'espera mitjançant el formulari de comentaris a continuació.