Recherche de site Web

Comment limiter l'utilisation du temps et de la mémoire des processus sous Linux


Le script timeout est un programme de surveillance des ressources utile pour limiter la consommation de temps et de mémoire des processus sous Linux. Il vous permet d'exécuter des programmes sous contrôle et d'appliquer des limites de temps et de mémoire, en mettant fin au programme en cas de violation de ces paramètres.

Aucune installation nécessaire, exécutez simplement une commande avec ses arguments à l'aide du programme timeout et il surveillera la consommation de mémoire et de temps de la commande, interrompant le processus s'il sort des limites, et vous avertira avec le paramètre prédéfini. message.

Pour exécuter ce script, vous devez avoir Perl 5 installé sur votre système Linux et le système de fichiers /proc monté.

Pour vérifier la version installée de Perl sur votre système Linux, exécutez la commande suivante.

perl -v

Ensuite, clonez le référentiel timeout sur votre système à l'aide de la commande git, puis accédez au référentiel local à l'aide de la commande cd et invoquez-le comme une commande Linux habituelle.

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

Voyons maintenant comment fonctionne le script timeout.

Limitation de mémoire de base (100 M de mémoire virtuelle) :

Ce premier exemple montre comment limiter l'utilisation de la mémoire d'un processus à 100 M de mémoire virtuelle, en utilisant l'indicateur -m. L'unité de mémoire par défaut est le kilo-octets.

Ici, la commande stress-ng exécute 4 facteurs de stress de mémoire virtuelle (VMS) qui se combinent pour utiliser 40 % de la mémoire disponible pendant 10 minutes. Ainsi chaque agent de stress utilise 10% de la mémoire disponible.

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

Compte tenu du résultat de la commande timeout ci-dessus, les processus de travail stress-ng ont été arrêtés après seulement 1,16 secondes. En effet, la consommation de mémoire combinée du VMS (438 660 kilo-octets) est supérieure à l'utilisation de la mémoire virtuelle autorisée pour stress-ng et son enfant. processus.

Limitation de temps de base du processus :

Pour activer la limitation de temps du processus, utilisez l'indicateur -t comme indiqué.

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

Dans l'exemple ci-dessus, lorsque le temps stress-ng CPU+SYS dépasse la valeur définie de 4, les processus de travail sont tués.

Limiter à la fois le temps et la mémoire du processus

Vous pouvez également limiter à la fois la mémoire et le temps comme suit.

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

Timeout prend également en charge certaines options avancées telles que --detect-hangups, qui permet la détection des raccrochages.

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

Vous pouvez surveiller la limite de mémoire RSS (taille définie du résident) à l'aide du commutateur --memlimit-rss ou -s. .

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

De plus, pour renvoyer le code de sortie ou le signal+128 d'un processus, utilisez l'option --confess ou -c comme indiqué.

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

Pour plus d'informations et un exemple d'utilisation, consultez le référentiel Github timeout : https://github.com/pshved/timeout.

Vous pourriez également trouver les articles connexes suivants tout aussi utiles :

  1. Comment trouver les 15 principaux processus par utilisation de la mémoire avec « top » en mode batch
  2. CPUTool - Limiter et contrôler l'utilisation du processeur de n'importe quel processus sous Linux
  3. Comment limiter l'utilisation du processeur d'un processus sous Linux avec l'outil CPULimit

Le script timeout est un simple programme de surveillance des ressources qui limite essentiellement la consommation de temps et de mémoire des processus sous Linux. Vous pouvez nous faire part de vos commentaires sur le script timeout via le formulaire de commentaires ci-dessous.