web-dev-qa-db-fra.com

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

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?

44
Daniel Cukier

À partir de la ligne de commande (Terminal.app ou autre), utilisez Nice et renice, comme sur d’autres systèmes Unix.

Utilisez Nice lors 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 renice pour changer la priorité d'un processus en cours d'exécution (à partir de la page de manuel renice sur 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 le bit 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 -o dans ce cas, car le processus qui vous intéresse sera presque au sommet.

Remarque: Sans les privilèges de superutilisateur, vous ne pouvez jamais augmenter la priorité d'un processus. Pour les utilisateurs normaux, Nice et renice sont des rues à 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.

45
dmckee

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 afficher en saisissant top sur l'application du 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.

14
pietro Sormanni

Il existe également un certain nombre d’utilitaires graphiques, tels que l’assistant gratuit BeNicer et 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.

4
beiju
renice 20 $(pgrep ImageOptim)

Ou utilisez le nom de votre programme au lieu de ImageOptim

3
William Entriken
  • Si votre processus est une application ou un utilitaire d'application plutôt qu'un processus système et que vous ne voulez pas faire Nice ou renice à chaque démarrage du système, vous pouvez l'essayer pour AppPolice . C'est open source et gratuit. Vous pouvez le télécharger ici .

  • Une autre alternative serait une très belle interface graphique pour le gestionnaire de tâches en ligne de commande appelée htop. Vous pouvez voir tous les processus et ajuster leurs valeurs Nice à l'aide des raccourcis F7 et F8. (Veuillez noter que les valeurs Nice négatives sont plus prioritaires et opposées pour les valeurs positives)

Pour l'installer:

  • Installez homebrew si vous ne l'avez pas encore.
  • Exécutez cette commande brew install htop dans Terminal
  • Maintenant, vous pouvez faire htop pour voir et gérer les processus dans Terminal ou Sudo htop pour couvrir tout le système.
0
JacopKane