Est-il possible de définir la priorité d'un processus dans Mac OS X?

48

J'ai un processus d'arrière-plan fonctionnant à 100% du processeur sur Mac OS X. Toutes les autres applications sont très lentes à cause de cela.

J'aimerais que ce processus ne prenne pas plus de 50% afin que mes applications puissent mieux fonctionner. Comment puis-je faire ceci?

Daniel Cukier
la source

Réponses:

48

À partir de la ligne de commande ( Terminal.appou autre), utilisez niceet renice, comme sur d'autres Unix.

Utiliser nicelors du lancement d'un processus:

nice -n <priority> <command> <arguments to command>

La priorité par défaut est zéro, les valeurs positives sont "plus agréables" (c'est-à-dire moins prioritaires) et les valeurs négatives sont "moins agréables" (priorité plus élevée). On dirait que Mac OS va de +10 à -10.

Utilisez renicepour changer la priorité d'un processus en cours d'exécution (à partir de la renicepage de manuel de 10.5):

renice priority [[-p] pid ...] [[-g] pgrp ...] [[-u] user ...]  
renice -n increment [[-p] pid ...] [[-g] pgrp ...] [[-u] user ...]

La partie qui vous intéresse ici est la partie pid. C'est l'identifiant du processus pour le travail et vous pouvez le trouver en utilisant ps -u <your username>et en recherchant le nom du processus, mais je préfère top -odans ce cas, car le processus qui vous intéresse sera tout en haut.

Remarque: Sans privilèges de superutilisateur, vous ne pouvez jamais augmenter la priorité d'un processus. Pour les utilisateurs normaux, niceet renicesont à sens unique. Et de petits changements de priorité peuvent avoir des effets importants sur le temps d'exécution. Allez-y doucement jusqu'à ce que vous le compreniez.

dmckee
la source
Et comment puis-je faire avec un processus déjà en cours? Cela dure depuis 2 heures et je ne veux pas le recommencer et perdre mes 2 heures de traitement
Daniel Cukier le
15

Vous pouvez utiliser la commande:

renice -n # PID

Où:

  • # est un nombre qui doit être supérieur à 0 (sinon, votre processus sera prioritaire)
  • PID est l'ID de processus que vous pouvez visualiser en tapant topsur l'application Terminal (utilities / terminal.app).

S'il s'agit d'un processus système ou d'un autre processus utilisateur, vous devez taper:

sudo renice -n 10 PID

Il vous demandera votre mot de passe (si vous êtes sudoer). En ce qui concerne le nombre, je recommanderais 10 ou 19 (priorité encore plus basse).

Notez que cela changera la priorité et non l'utilisation du processeur. Si vous n'exécutez pas d'autres processus nécessitant du processeur ou si vous avez plus d'un processeur sur votre Mac (Core 2 Quad Core), le processus peut toujours utiliser 100% du processeur.

pietro Sormanni
la source
6
renice 20 $(pgrep ImageOptim)

Ou utilisez le nom de votre programme au lieu de ImageOptim

William Entriken
la source
1
De plus, utiliser renice -20donne à un processus la priorité la plus élevée possible, par exemple lors de la compilation d'un gros programme comme octave. renice 20donne au processus la priorité la plus basse.
Nyxee
5

Il existe également un certain nombre d’utilitaires graphiques, tels que l’assistant gratuit BeNicer and Process Wizard (mon précédent favori) et la version à 1,99 $ de Freezer , qui est mon nouveau favori. Tout cela fonctionne sur les applications en cours d'exécution.

beiju
la source
3
BeNicer et Process Wizard sont deux applications PowerPC et ne fonctionneront pas sur les versions récentes d'OSX
arolson101
Freezer fonctionne-t-il toujours sur les nouvelles versions de système d'exploitation?
ylluminate
S'il vous plaît vérifier ma réponse pour une autre alternative, AppPolice
JacopKane
2
  • Si votre processus est une application ou un utilitaire d'application plutôt qu'un processus système et que vous ne voulez pas le faire niceou reniceà chaque démarrage du système, vous pouvez l' essayer à AppPolice . C'est open source et gratuit. Vous pouvez le télécharger ici .

  • Une autre alternative serait une très belle interface utilisateur graphique appelée gestionnaire de tâches en ligne de commande htop. Vous pouvez voir tous les processus et ajuster leurs nicevaleurs avec F7et et des F8raccourcis. (Veuillez noter que les nicevaleurs négatives sont plus prioritaires et opposées aux valeurs positives)

Pour l'installer:

  • Installez homebrew si vous ne l'avez pas encore.
  • Exécuter cette commande brew install htopdans le terminal
  • Vous pouvez maintenant htopvoir et gérer les processus dans Terminal ou sudo htopcouvrir tout le système.
JacopKane
la source
0

Vous pouvez définir la valeur de priorité (priorité) du démon de manière permanente à l'aide de la variable du fichier PLIST de l'application. Pour savoir comment le type MAN est inscrit dans une fenêtre de terminal.

SYNERGISTE
la source