Gibt es eine Möglichkeit, die Priorität eines Prozesses in Mac OS X festzulegen?


48

Ich habe einen Hintergrundprozess mit 100% CPU unter Mac OS X. Alle anderen Anwendungen sind deswegen sehr langsam.

Ich möchte diesen Prozess so einstellen, dass er nicht mehr als 50% beträgt, damit meine Anwendungen besser ausgeführt werden können. Wie kann ich das machen?

Antworten:


48

Terminal.appVerwenden Sie über die Befehlszeile ( oder was auch immer) niceund renice, genau wie bei anderen Unixen.

Verwenden Sie nicebeim Starten eines Prozesses:

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

Die Standardpriorität ist Null, positive Werte sind "schöner" (dh niedrigere Priorität) und negative Werte sind "weniger schön" (höhere Priorität). Es sieht so aus, als würde Mac OS von +10 bis -10 laufen.

Verwenden Sie renicediese Option , um die Priorität eines bereits ausgeführten Prozesses zu ändern (in der reniceManpage von 10.5):

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

Der Teil, an dem Sie interessiert sind, ist der Teil pid. Dies ist die Prozess-ID für den Job, und Sie können sie finden, indem Sie ps -u <your username>den Prozessnamen verwenden und nach ihm suchen. top -oIn diesem Fall bevorzuge ich , da der Prozess, an dem Sie interessiert sind, ganz oben steht.

Hinweis: Ohne Superuser-Berechtigungen können Sie die Priorität eines Prozesses niemals erhöhen. Für normale Benutzer niceund reniceEinbahnstraßen. Und kleine Änderungen der Priorität können große Auswirkungen auf die Laufzeit haben. Machen Sie es sich einfach, bis Sie es verstanden haben.


Und wie kann ich mit einem bereits laufenden Prozess umgehen? Es läuft für 2 Stunden und ich möchte es nicht wieder starten und meine 2 Stunden der Verarbeitung verlieren
Daniel Cukier

15

Sie können den Befehl verwenden:

renice -n # PID

Wo:

  • # ist eine Zahl, die größer als 0 sein sollte (andernfalls verschieben Sie Ihren Prozess auf eine höhere Priorität)
  • PID ist die Prozess-ID, die Sie durch Eingabe topin der Terminal-App (Dienstprogramme / terminal.app) anzeigen können.

Wenn es sich um einen Systemprozess oder einen anderen Benutzerprozess handelt, müssen Sie Folgendes eingeben:

sudo renice -n 10 PID

Sie werden nach Ihrem Passwort gefragt (wenn Sie Sudoer sind). Für die Nummer würde ich 10 oder 19 empfehlen (noch niedrigere Priorität).

Beachten Sie, dass dies die Priorität und nicht die CPU-Auslastung ändert. Wenn Sie keine anderen Prozesse ausführen, die CPU erfordern, oder wenn Sie mehr als eine CPU auf Ihrem Mac haben (Core 2 Quad Core), verwendet der Prozess möglicherweise immer noch 100% der CPU.


6
renice 20 $(pgrep ImageOptim)

Oder verwenden Sie den Namen Ihres Programms anstelle von ImageOptim


1
Zusätzlich gibt using renice -20einem Prozess die höchstmögliche Priorität, zum Beispiel beim Kompilieren eines großen Programms wie Octave. renice 20gibt einem Prozess die niedrigste Priorität.
Nyxee

5

Es gibt auch eine Reihe von GUI-Dienstprogrammen, wie den kostenlosen BeNicer and Process Wizard (mein vorheriger Favorit) und die 1,99-Dollar-Version von Freezer , die mein neuer Favorit ist. Diese funktionieren alle beim Ausführen von Anwendungen.


3
BeNicer und Process Wizard sind beide PowerPC-Apps und können unter den neuesten Versionen von OSX
arolson101

Arbeitet Freezer immer noch an neueren Betriebssystemversionen?
Erleuchten Sie

Bitte überprüfen Sie meine Antwort für eine andere Alternative, AppPolice
JacopKane

2
  • Wenn Ihr Prozess eher eine App oder ein Hilfsprogramm als ein Systemprozess ist und Sie dies nicht möchten niceoder renicebei jedem Systemstart, können Sie AppPolice einen Versuch geben . Es ist Open Source und kostenlos. Sie können es hier herunterladen .

  • Eine andere Alternative wäre eine sehr nette Kommandozeilen-Task-Manager-GUI namens htop. Sie können alle Prozesse sehen und ihre niceWerte mit F7und und F8Verknüpfungen einstellen. (Bitte beachten Sie, dass negative niceWerte eine höhere Priorität haben und positive Werte entgegengesetzt sind.)

So installieren Sie es:

  • Installieren Sie Homebrew, wenn Sie es noch nicht haben.
  • Führen Sie diesen Befehl brew install htopim Terminal aus
  • Jetzt können Sie htopProzesse im Terminal anzeigen und verwalten oder sudo htopdas gesamte System abdecken.

0

Über die Variable in der PLIST-Datei für die App können Sie den Nice-Wert (Priorität) für den Daemon dauerhaft festlegen. Um herauszufinden, wie Sie MAN plist in ein Terminalfenster eingeben.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.