Búsqueda de sitios web

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


El script timeout es un útil programa 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 límites de tiempo y memoria, finalizando el programa si se violan estos parámetros.

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

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

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

perl -v

A continuación, clone el repositorio timeout en su sistema usando el comando git, luego vaya al repositorio local usando el comando cd e invoquelo como un comando habitual de Linux.

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

Veamos ahora cómo funciona el script timeout.

Limitación de memoria básica (100 M de memoria virtual):

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

Aquí, el comando stress-ng ejecuta 4 factores de estrés de memoria virtual (VMS) que se combinan para utilizar el 40 % de la memoria disponible durante 10 minutos. Así, cada factor estresante 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 timeout anterior, los procesos de trabajo stress-ng finalizaron 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 su hijo. procesos.

Limitación de tiempo básica del proceso:

Para habilitar la limitación de tiempo del proceso, utilice 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 stress-ng CPU+SYS excede el valor definido de 4, los procesos de trabajo se cancelan.

Limitar tanto el tiempo como la memoria del proceso

También puedes limitar la memoria y el tiempo a la vez de la siguiente manera.

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

El tiempo de espera también admite algunas opciones avanzadas como --detect-hangups, que permite la detección de cuelgues.

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

Puede monitorear el límite de memoria RSS (tamaño del conjunto residente) usando el modificador --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 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 Github timeout: https://github.com/pshved/timeout.

También puede que le resulten igualmente útiles estos siguientes artículos relacionados:

  1. Cómo encontrar los 15 procesos principales por uso de memoria con "top" en modo por lotes
  2. CPUTool: limite y controle 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 timeout es un programa simple de monitoreo de recursos que esencialmente restringe el consumo de tiempo y memoria de los procesos en Linux. Puede enviarnos su opinión sobre el script de tiempo de espera a través del formulario de comentarios a continuación.