web-dev-qa-db-fra.com

Exécutez le processus Linux à une très très faible priorité?

J'ai un processus régulier qui n'est pas si important, mais je consomme autant de pouvoir de la CPU, et j'ai un autre processus vraiment important, mais cela passe la majeure partie du temps inactif, mais quand il a eu un travail, il a vraiment besoin d'une puissance informatique élevée.

J'ai essayé de courir avec Nice -20 ./low_priority_process et Nice --20 ./high_priority_process Mais toujours la priorité inférieure consomme une quantité importante de CPU lorsque le processus de priorité élevée est dans le besoin, comment puis-je exécuter un processus qui donnera réellement ou même une suspension automatique lorsqu'un autre processus utilisant la puissance de la CPU

12
uray

Jetez un coup d'œil à cgroups , il devrait fournir exactement ce dont vous avez besoin - réservations de la CPU (et plus). Je suggérerais de lire contrôler la priorité des applications à l'aide de cgroups .

Cela dit, mettait les processus importants et souvent inactifs en groupe avec 95% alloués à 95% de la CPU et de vos autres applications dans une autre avec une autre avec 5% alloué - vous obtiendrez (presque) tout le pouvoir de votre travail en cas de besoin, tandis que le besoin Le processus d'affamation de puissance ne fera que 5% au maximum à ces moments. Lorsque les surtensions de calcul disparaissent, toutes les performances de la CPU seront jetées aux processus restants. En tant que prestation, si vous créez un cgroup spécial (avec des exigences de performance minimales) pour les processus tels que sshd, vous pourrez vous connecter, peu importe ce qui tente d'obtenir tout CPU, cela peut - certains tiers du processeur être réservé pour sshd.

10
peterph

Si la priorité de processus (valeur agréable) est faible, elle n'interrompt pas un processus de priorité plus élevé. La raison pour laquelle vous voyez le processus de priorité faible consommant toujours une quantité importante de CPU lorsque le processus de priorité plus élevé est en cours d'exécution, car le processus de priorité plus élevé n'est pas que occupé. Probablement attendre sur io. Utilisation chrt -p -i 0 $PID Pour exécuter le processus à une priorité encore plus faible que Nice 19 -p $PID (en supposant que nous parlons de Linux ici).

chrt -p -i 0 $PID met le processus dans le planificateur "vrai".

http://linux.die.net/man/1/chrt

7
Ken Sharp

Essayez cet exemple pour exécuter un processus comme un processus bas.

Si vous êtes prêt, c'est bien tar xvf asets.zip

Utilisation

Nice Tar XVF actifs.zip

Après cela, problème

haut pour surveiller le processus décompressez avec

pS AUX | grep "goudron"

Essayez quelque chose de spécifique avec CPULIMIT

wget -O cpulimit.Zip https://github.com/opsengine/cpulimit/archive/master.Zip
unzip cpulimit.Zip
cd cpulimit-master
make
Sudo cp src/cpulimit /usr/bin

cpulimit -l 50 python 0 999999999999>/dev/null &

0
unixmiah