2017-06-28 1 views
1

Je suis en train d'exécuter un processus particulier qui utilise tout le temps processeur à l'aide agréable:commande « agréable » ne fonctionne pas sur macOS

sudo nice -n 20 someProcess 

Malheureusement, cela ne change rien. Dans Activity Monitor, il reste 99% du CPU.

Je me méfiais que cela pourrait être dû au fait qu'il n'y avait pas grand-chose, il était parfaitement en mesure d'utiliser beaucoup de temps, donc j'ai essayé stress tests avec:

oui>/dev/null & oui>/dev/null & oui>/dev/null & oui>/dev/null &

Même avec une belle -n 20, le processus en question utilisé 99% de la CPU, poussant les quatre "oui" passe de 99% à environ 60% chacun. Je dois noter que j'ai également essayé d'utiliser "nice" avec un processus "yes" de la même façon, et j'ai trouvé que cela ne faisait aucune différence ... que le processus "yes" utilisait autant de temps processeur que tous les autres.

Que se passe-t-il? Est-ce que "gentil" est cassé? Cela a été fait sur macOS 10.12.5.

+0

Quel est ce processus mystérieux? –

+0

Est-ce important, puisque j'ai été capable de reproduire la même chose avec "oui"? Je pense que l'utilisation de «gentil» avec «oui» l'amènerait à utiliser moins de temps processeur que d'autres instances de «oui», mais cela ne semble pas être le cas. –

+0

Il y a des rapports sur SO de processus macOS spécifiques utilisant tout le CPU - chacun avec une solution différente, donc j'ai pensé que ça pourrait être un de ceux-là, mais si ce n'est pas quelque chose que vous souhaitez partager, c'est bien. –

Répondre

1

La réponse est "Vous vous attendez à ce que Nice fasse quelque chose qu'il ne fait pas".

Ce n'est pas comme ça que fonctionne Nice. Tout Nice est de changer la «priorité» d'un processus. Cela signifie que s'il y a deux processus qui ont besoin de CPU, celui qui a été 'nice'd est mis dans la deuxième position plutôt que d'exécuter simplement les processus de manière FIFO. Les paramètres sont tous sur la détermination de ce que le système devrait planifier pour le processeur dans quel ordre. Donc, si rien d'autre ne demande de CPU, alors votre processus 'nice'd l'obtient. Cela signifie que même si TOUS les processus avaient été 'bien', le CPU pourrait encore tourner à 100%.

Si vous voulez qu'un processus ne pousse pas le CPU à 100%, il doit avoir un mécanisme intégré pour l'empêcher de demander continuellement que ses commandes soient exécutées. Dort et interrompt l'attente de l'entrée de l'utilisateur, etc.