Cómo limitar el uso de tiempo y memoria de los procesos en Linux


El script de tiempo de espera es un programa de monitoreo de recursos útil para limitar el tiempo y el consumo de memoria de los procesos en Linux. Le permite ejecutar programas bajo control y hacer cumplir los límites de tiempo y memoria, terminando el programa en caso de violación de estos parámetros.

No necesita instalación, simplemente ejecute un comando junto con sus argumentos usando el programa de tiempo de espera y monitoreará la memoria del comando y el consumo de tiempo, interrumpiendo el proceso si se sale de los límites y le notifica con el mensaje predefinido.

Para ejecutar este script, debe tener Perl 5 instalado en su sistema Linux y el sistema de archivos/proc montado.

Para verificar la versión instalada de Perl en su sistema Linux, ejecute el siguiente comando.

$ perl -v

A continuación, clone el repositorio de tiempo de espera en su sistema utilizando el comando habitual de Linux.

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

Veamos ahora cómo funciona la secuencia de comandos de tiempo de espera.

Este primer ejemplo muestra cómo limitar el uso de memoria de un proceso a 100M de memoria virtual, usando el indicador -m . La unidad predeterminada de memoria está en kilobytes.

Aquí, el comando stress-ng ejecuta 4 factores de estrés de memoria virtual (VMS) que se combinan para usar el 40% de la memoria disponible durante 10 minutos. Por tanto, cada factor de estrés utiliza el 10% de la memoria disponible.

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

Teniendo en cuenta la salida del comando de tiempo de espera anterior, los procesos de trabajo de stress-ng terminaron después de solo 1,16 segundos. Esto se debe a que el consumo de memoria combinado del VMS (438660 kilobytes) es mayor que el uso de memoria virtual permitido para stress-ng y sus procesos secundarios.

Para habilitar la limitación de tiempo del proceso, use la marca -t como se muestra.

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

En el ejemplo anterior, cuando el tiempo de CPU + SYS de stress-ng excede el valor definido de 4, los procesos de trabajo se eliminan.

También puede limitar tanto la memoria como el tiempo a la vez de la siguiente manera.

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

Timeout también admite algunas opciones avanzadas como --detect-hangups , que habilita la detección de bloqueos.

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

Puede controlar el límite de memoria de RSS (tamaño del conjunto residente) mediante el conmutador --memlimit-rss o -s .

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

Además, para devolver el código de salida o la señal + 128 de un proceso, use la opción --confess o -c como se muestra.

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

Para obtener más información y ejemplos de uso, consulte el repositorio de tiempo de espera de Github: https://github.com/pshved/timeout.

También puede encontrar estos siguientes artículos relacionados igualmente útiles:

  1. Cómo encontrar los 15 procesos principales por uso de memoria con "top" en modo por lotes
  2. CPUTool: limitar y controlar la utilización de la CPU de cualquier proceso en Linux
  3. Cómo limitar el uso de CPU de un proceso en Linux con la herramienta CPULimit

El script de tiempo de espera es un programa simple de monitoreo de recursos que esencialmente restringe el tiempo y el consumo de memoria de los procesos en Linux. Puede enviarnos sus comentarios sobre el script de tiempo de espera a través del formulario de comentarios a continuación.