Limite d’UC sur les fichiers jar exécutables individuels

J’ai un script .sh avec de nombreux fichiers jar. Chaque fichier jar a des arguments de lancement uniques. Je dois limiter tous les fichiers jar à ne pas utiliser plus de% 5 CPU chacun.

nohup java -a dsasda -p adss nohup java -a dsasad -p adds nohup java -a dsdasa -p adsa nohup java -a dsdsa -p adds nohup java -a ddassa -p adas 

Je lisais des informations sur l’outil cpulimit, comment puis-je l’utiliser pour cibler des bocaux individuels?

Utiliser cpulimit

Je conduirai avec l’outil que vous avez proposé; cpulimit peut certainement faire ce que vous voulez. nohup cpulimit --background --limit=5 -- java -a dsasda -p adss

N’oubliez pas que 5% représente 5% d’un seul cœur de processeur , et non de la puissance de calcul totale de la machine. Si vous souhaitez utiliser 5% d’une machine multi-core, faites-la évoluer.

Vous voudrez probablement également passer l’argument –quiet à cpulimit.

Si votre souhait n’est pas de limiter spécifiquement le processus à 5%, mais simplement d’empêcher Java de s’enliser sur votre machine, envisagez plutôt d’utiliser nice .

En utilisant nice

nice va faire baisser la priorité de vos processus java pour qu’ils ne prennent pas tout le temps processeur et ralentissent les choses. Contrairement à cpulimit , nice laissera les processus java utiliser plus de 5% du processeur si rien d’autre ne veut l’utiliser.

nohup nice java -a dsasda -p adss

nice accepte un argument optionnel, --adjustment=N où N est un entier compris entre 19 (priorité très faible), 0 (normal) et même jusqu’à -20 (priorité très élevée, mais disponible uniquement si vous êtes root). Il va par défaut à 10, ce qui est probablement bien.

Vous pouvez utiliser cpulimit comme vous le suggérez pour cibler la limite en spécifiant le PID du processus que vous souhaitez limiter. Vous pouvez ainsi générer et limiter chacune des tâches ci-dessus à 5% de la CPU à l’aide du script suivant:

 #!/bin/sh nohup java -a dsasda -p adss & nohup cpulimit -p $! -l 5 >/dev/null & nohup java -a dsasad -p adds & nohup cpulimit -p $! -l 5 >/dev/null & nohup java -a dsdasa -p adsa & nohup cpulimit -p $! -l 5 >/dev/null & nohup java -a dsdsa -p adds & nohup cpulimit -p $! -l 5 >/dev/null & nohup java -a ddassa -p adas & nohup cpulimit -p $! -l 5 >/dev/null & 

Notez que $! signifie le PID du dernier processus généré par le shell (dans ce cas, la commande java de la ligne précédente). La limite- -l 5 signifie limite à 5%.