J'ai un processus pour une application qui doit s'exécuter, mais qui finit par utiliser beaucoup trop d'E / S pour ce qu'elle fait. Et plante vraiment mon ordinateur, ce qui rend impossible de faire quoi que ce soit d'autre pendant qu'il fonctionne.
Je me demandais donc s'il y avait un moyen de limiter l'utilisation des E / S, la RAM et le CPU pour un processus donné? Et ses sous-processus bien sûr.
C'est sur mon système Ubuntu 18.04 LTS.
ionice
,renice
- et peut-être desulimit -s
commandes, et c'est tout.cgroups-io
donc je n'en ai aucune idée :)Réponses:
Vous devez utiliser une combinaison de tous
cgexec
,cpulimit
etionice
:Limitez la RAM et le SWAP:
Les commandes ci-dessus créent un groupe de contrôle nommé
szMyGroup
(par exemple dans votre casgroup-great-uncle
), définissent un plafond pour les processus exécutés sousszMyGroup
jusqu'à 512 Mo de mémoire physique et jusqu'à 1024 Mo de swap, puis:qui exécutera votre programme sous le
szMyGroup
groupe de contrôle, garantissant ainsi qu'ils respectent les limiteslimiter le disque IO:
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 utiliser uniquement le disque quand aucun autre programme ne l'utiliseLimitez le CPU:
Le CPU du programme est désormais 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.
la source