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


El script de tiempo de espera es un programa útil de monitoreo de recursos 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 utilizando 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

Luego, clone el repositorio de tiempo de espera en su sistema usando el comando git, luego muévase al repositorio local usando el comando cd e invocalo como un 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 el resultado 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 el indicador -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. 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

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.