J'ai un processus régulier qui n'est pas si important mais qui consomme tellement de puissance CPU, et j'ai un autre processus qui est vraiment important, mais il passe la plupart du temps inactif, mais quand il a obtenu un emploi, il a vraiment besoin d'une puissance de calcul élevée
J'ai essayé de courir avec nice -20 ./low_priority_process
et nice --20 ./high_priority_process
mais la priorité inférieure consomme une quantité importante de CPU quand un processus de haute priorité est nécessaire, comment puis-je exécuter un processus qui donnera vraiment ou même une suspension automatique lorsqu'un autre processus utilisant la puissance du CPU
RR
planification pour le processus de haute priorité.Réponses:
Jetez un oeil à cgroups , il devrait fournir exactement ce dont vous avez besoin - réservations CPU (et plus). Je suggère de lire la priorité de contrôle des applications à l'aide de groupes de contrôle .
Cela dit, mettez les processus importants mais souvent inactifs dans un groupe avec 95% du CPU alloué et vos autres applications dans un autre avec 5% alloués - vous obtiendrez (presque) toute la puissance pour vos travaux en cas de besoin, tandis que le processus gourmand en énergie n'obtiendra au maximum que 5% à ces moments. Lorsque les surtensions de calcul disparaissent, toutes les performances du processeur seront rejetées sur les processus restants. En tant qu'avantage, si vous créez un groupe de contrôle spécial (avec des exigences de performances minimales) pour des processus comme
sshd
, vous pourrez vous connecter, peu importe ce qui essaie d'obtenir tout le CPU possible - un certain temps CPU sera réservésshd
.la source
cpulimit
ounice
pour modifier le groupe de processus? parce que si cgroup est un appel d'API, je ne suis pas en mesure de recompiler aucune de ces applications pour utiliser cgroupsystemd
, au moins dans certains cas) "volent" l'interface cgroups aux utilisateurs qui doivent utiliser l'interface système d'initialisation (généralement une commande spéciale). Lisez la réponse liée et l'article wikipedia. Vraiment. :)libcgroup
paquet, qui est livré avec des utilitaires pour travailler avec descgrulesengd
groupes de contrôle comprenant un daemon ( ) qui peut réellement trier les processus en groupes en fonction de certaines conditions.Si la priorité du processus (valeur de Nice) est faible, il n'interrompra pas un processus de priorité plus élevée. La raison pour laquelle vous voyez le processus de faible priorité consomme une quantité importante de CPU lorsque le processus de priorité plus élevée est en cours d' exécution est parce que le processus de priorité plus élevé n'est pas que occupé. Attendant probablement sur IO. Utilisez
chrt -p -i 0 $PID
pour exécuter le processus avec une priorité encore plus faible quenice 19 -p $PID
(en supposant que nous parlons de Linux ici).chrt -p -i 0 $PID
place le processus dans le "vrai" planificateur inactif.http://linux.die.net/man/1/chrt
la source
Essayez cet exemple pour exécuter un processus en tant que processus bas.
Si votre travail est sympa tar xvf asets.zip
Utilisation
nice tar xvf assets.zip
Après cela, émettez
haut pour surveiller le processus décompresser avec
ps aux | grep "tar"
Essayez quelque chose de spécifique avec cpulimit
cpulimit -l 50 python 0 9999999999> / dev / null &
la source
-20
est "basse priorité" et--20
est "haute priorité" regardez double tiret pour lanice
commande. et oui, je comprends parfaitement la valeur intéressante, mais ma question est, existe-t-il un moyen de dire au planificateur autre que d'utiliser la valeur agréable-n -20
,-n 20
etc.htop
outop
oups
ou quoi que ce soitPour les futurs arrivants, voici un exemple plein de
nice
avec le stress .stress
:apt-get install stress
nice -20 stress --cpu 2
top
:Cela montre que les deux processeurs sont entièrement occupés.
nice --20 stress --cpu 1
top
Cela montre que le processus de stress à cœur unique obtient son processeur complet, tandis que les processus de priorité inférieure partagent tous les deux le processeur restant
stress
appels ci - dessus et simplement déclencher un seul processus 3stress --cpu 3
donnerait 66% de CPU à chacunla source