GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Comment limiter l'utilisation des ressources pour un processus donné ?

J'ai un processus pour une application qui doit s'exécuter, mais qui finit par utiliser beaucoup trop d'utilisation d'E/S pour ce qu'elle fait. Et plante vraiment mon ordinateur, rendant impossible toute autre action pendant qu'il est en cours d'exécution.

Je me demandais donc s'il existait un moyen de limiter l'utilisation des E/S, de la RAM et du processeur pour un processus donné ? Et ses sous-processus bien sûr.

C'est sur mon système Ubuntu 18.04 LTS.

Meilleure réponse

Vous devez utiliser une combinaison de tous les cgexec , cpulimit et ionice :

  1. Limiter RAM et SWAP :

    sudo cgcreate -g memory:/szMyGroup
    echo $(( 512 * 1024 * 1024 )) | sudo tee /sys/fs/cgroup/memory/szMyGroup/memory.limit_in_bytes
    echo $(( 1024 * 1024 * 1024 ))  | sudo tee /sys/fs/cgroup/memory/szMyGroup/memory.memsw.limit_in_bytes
    

    Les commandes ci-dessus créent un groupe de contrôle nommé szMyGroup (Par exemple, dans votre cas group-great-uncle ), fixez un plafond aux processus exécutés sous szMyGroup jusqu'à 512 Mo de mémoire physique et jusqu'à 1 024 Mo de swap, puis :

    sudo cgexec -g memory:szMyGroup szMyProgram
    

    qui exécutera votre programme sous le szMyGroup groupe de contrôle, s'assurant ainsi qu'ils respectent les limites

  2. limiter les E/S disque :

    sudo ionice --class 3 --pid $(pgrep -f szMyProgram)
    

    La commande ci-dessus utilise pgrep avec la réutilisation de parties de la ligne de commande actuelle pour limiter son accès au disque pour n'utiliser le disque que lorsque aucun autre programme ne l'utilise

  3. Limitez le CPU :

    sudo cpulimit --limit=25 --pid=!#:4
    

    Le CPU du programme est maintenant limité à 25 % du maximum

Si le programme n'utilise pas beaucoup de CPU pour commencer, réduisez la valeur de cpulimit à la moitié ou moins de ce qu'il utilise actuellement.


Ubuntu
  1. Comment limiter l'utilisation du processeur d'un processus sous Linux

  2. Augmenter les connexions TCP pour Plex sur Ubuntu

  3. Linux - Limiter l'utilisation de la mémoire pour un seul processus Linux ?

  4. Comment définir le chemin pour les commandes sudo

  5. Comment limiter l'utilisation de la mémoire des applications ?

Comment changer la limite de temps pour une session Sudo

Comment spécifier la limite de temps pour une session Sudo

Comment limiter la bande passante réseau dans Ubuntu

Comment spécifier la limite de temps pour une session Sudo dans Ubuntu 20.04 LTS

Comment surveiller les informations de limite de ressources dans cPanel ?

Comment surveiller l'utilisation des ressources et les mesures dans cPanel