Czy jest jakiś sposób, aby ustawić priorytet procesu w Mac OS X?

46

Mam proces działający w tle na 100% procesorze w systemie Mac OS X. Wszystkie inne aplikacje są z tego powodu bardzo wolne.

Chciałbym ustawić ten proces na nie więcej niż 50%, aby moje aplikacje mogły działać lepiej. Jak mogę to zrobić?

Daniel Cukier
źródło

Odpowiedzi:

47

Z wiersza poleceń ( Terminal.applub cokolwiek) użyj nicei renice, podobnie jak w innych uniksach.

Użyj nicepodczas uruchamiania procesu:

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

Domyślny priorytet to zero, wartości dodatnie są „ładniejsze” (czyli o niższym priorytecie), a wartości ujemne - „mniej ładne” (o wyższym priorytecie). Wygląda na to, że Mac OS działa od +10 do -10.

Użyj, reniceaby zmienić priorytet już uruchomionego procesu (ze strony podręcznika renicena 10.5):

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

To, co cię tutaj interesuje, to pidtrochę. To jest identyfikator procesu dla zadania i możesz go znaleźć za pomocą ps -u <your username>i szukając nazwy procesu, ale ja wolę top -ow tym przypadku, ponieważ proces, który Cię interesuje, będzie na górze.

Uwaga: Bez uprawnień administratora nie można nigdy zwiększyć priorytetu procesu. Dla zwykłych użytkowników nicei renicesą ulicami jednokierunkowymi. Małe zmiany priorytetu mogą mieć duży wpływ na czas działania. Więc spokojnie, dopóki tego nie zrozumiesz.

dmckee
źródło
Jak mogę zrobić z już uruchomionym procesem? Działa przez 2 godziny i nie chcę go ponownie uruchamiać i tracę 2 godziny przetwarzania
Daniel Cukier
15

Możesz użyć polecenia:

renice -n # PID

Gdzie:

  • # to liczba, która powinna być większa niż 0 (w przeciwnym razie przeniesiesz proces na wyższy priorytet)
  • PID to identyfikator procesu, który można wyświetlić, pisząc topw aplikacji terminalowej (utilities / terminal.app)

Jeśli jest to proces systemowy lub inny proces użytkownika, wpisz:

sudo renice -n 10 PID

Poprosi Cię o podanie hasła (jeśli jesteś sudoer). Jeśli chodzi o liczbę, poleciłbym 10 lub 19 (nawet niższy priorytet).

Zauważ, że to zmieni priorytet, a nie użycie procesora. Jeśli nie uruchamiasz innych procesów, które wymagają procesora lub masz więcej niż jeden procesor na komputerze Mac (czterordzeniowy rdzeń 2), proces może nadal zużywać 100% procesora.

pietro Sormanni
źródło
5
renice 20 $(pgrep ImageOptim)

Lub użyj nazwy swojego programu zamiast ImageOptim

William Entriken
źródło
1
Ponadto użycie renice -20daje procesowi najwyższy możliwy priorytet, na przykład podczas kompilacji dużego programu, takiego jak oktawa. renice 20nadaje procesowi najniższy priorytet.
nyxee,
5

Istnieje również szereg narzędzi GUI, takich jak bezpłatny BeNicer i Process Wizard (mój poprzedni ulubiony) oraz wersja Freezer za 1,99 USD , która jest moim nowym ulubionym. Wszystko to działa na uruchomionych aplikacjach.

beiju
źródło
3
BeNicer i Process Wizard to aplikacje PowerPC i nie działają na najnowszych wersjach OSX
arolson101
Czy Freezer nadal działa na nowszych wersjach systemu operacyjnego?
iluminuj
proszę sprawdzić moją odpowiedź na inną alternatywę, AppPolice
JacopKane,
1
  • Jeśli twój proces jest narzędziem aplikacji lub pomocnika aplikacji, a nie procesem systemowym i nie chcesz tego robić nicelub reniceprzy każdym uruchomieniu systemu, możesz spróbować w AppPolice . Jest open source i bezpłatny. Możesz go pobrać tutaj .

  • Inną alternatywą byłoby bardzo przyjemne GUI menedżera zadań z linii poleceń htop. Możesz zobaczyć wszystkie procesy i dostroić ich nicewartości za pomocą F7i F8skrótów. (Należy pamiętać, że nicewartości ujemne są bardziej priorytetowe, a przeciwne dla wartości dodatnich)

Aby zainstalować:

  • Zainstaluj homebrew, jeśli jeszcze go nie masz.
  • Uruchom to polecenie brew install htopw terminalu
  • Teraz możesz zrobić, htopaby zobaczyć i zarządzać procesami w Terminalu lub sudo htopobjąć cały system.
JacopKane
źródło
0

Możesz ustawić niezłą wartość (priorytet) dla demona na stałe, używając zmiennej w pliku PLIST dla aplikacji. Aby dowiedzieć się, jak wpisz MAN plist w oknie terminala.

SYNERGIST
źródło