Есть ли способ установить приоритет процесса в Mac OS X?

48

У меня есть фоновый процесс, работающий на 100% CPU в Mac OS X. Из-за этого все другие приложения работают очень медленно.

Я бы хотел, чтобы этот процесс занимал не более 50%, чтобы мои приложения могли работать лучше. Как я могу это сделать?

Даниэль Кукье
источник

Ответы:

48

Из командной строки ( Terminal.appили как угодно) используйте niceи renice, как и в других Unix.

Используйте niceпри запуске процесса:

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

Приоритет по умолчанию равен нулю, положительные значения «лучше» (то есть более низкий приоритет), а отрицательные значения «менее красиво» (более высокий приоритет). Похоже, Mac OS работает от +10 до -10.

Используйте reniceдля изменения приоритета уже запущенного процесса (со reniceстраницы руководства на 10.5):

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

Здесь вас интересует часть pid. Это идентификатор процесса для работы, и вы можете найти его, используя ps -u <your username>и ища имя процесса, но я предпочитаю top -oв этом случае, потому что интересующий вас процесс будет ближе к началу.

Примечание. Без привилегий суперпользователя вы никогда не сможете повысить приоритет процесса. Для обычных пользователей niceи reniceулиц с односторонним движением. И небольшие изменения в приоритете могут иметь большое влияние на время работы. Так что успокойся, пока не поймешь.

dmckee
источник
И как я могу сделать с уже запущенным процессом? Он работает в течение 2 часов, и я не хочу запускать его снова и потерять 2 часа обработки
Даниэль Кукье
15

Вы можете использовать команду:

renice -n # PID

Где:

  • # - это число, которое должно быть больше 0 (иначе вы перенесете процесс в более высокий приоритет)
  • PID - это идентификатор процесса, который вы можете просмотреть, набрав topв терминальном приложении (utilities / Terminal.app)

Если это системный процесс или другой пользовательский процесс, вы должны набрать:

sudo renice -n 10 PID

Он попросит вас ввести пароль (если вы sudoer). Что касается числа, я бы порекомендовал 10 или 19 (даже более низкий приоритет).

Обратите внимание, что это изменит приоритет, а не загрузку процессора. Если вы не запускаете другие процессы, требующие ЦП, или у вас более одного ЦП на вашем Mac (Core 2 Quad Core), процесс все равно может использовать 100% ЦП.

Пьетро Сорманни
источник
6
renice 20 $(pgrep ImageOptim)

Или используйте имя вашей программы вместо ImageOptim

Уильям Энтрикен
источник
1
Кроме того, использование renice -20дает процессу наивысший возможный приоритет, например, при компиляции большой программы, такой как октава. renice 20дает процессу самый низкий приоритет.
nyxee
5

Есть также ряд утилит с графическим интерфейсом, таких как бесплатный BeNicer и Process Wizard (мой предыдущий фаворит), и версия Freezer за $ 1,99 , которая является моим новым фаворитом. Все это работает на запущенных приложениях.

beiju
источник
3
BeNicer и Process Wizard являются приложениями PowerPC и не будут работать в последних версиях OSX
arolson101
Freezer все еще работает над новыми выпусками ОС?
Иллюминат
пожалуйста, проверьте мой ответ для другой альтернативы, AppPolice
JacopKane
2
  • Если ваш процесс является приложением или вспомогательной утилитой приложения, а не системным процессом, и вы не хотите делать это niceили reniceпри каждой загрузке системы, вы можете попробовать его в AppPolice . Это с открытым исходным кодом и бесплатно. Вы можете скачать его здесь .

  • Другой альтернативой будет очень приятный графический интерфейс диспетчера задач с командной строкой htop. Вы можете увидеть все процессы и настроить их niceзначения с помощью F7и F8ярлыков. (Обратите внимание, что отрицательные niceзначения являются более приоритетными и противоположными для положительных значений)

Чтобы установить его:

  • Установите homebrew, если у вас его еще нет.
  • Запустите эту команду brew install htopв Терминале
  • Теперь вы можете htopпросматривать и управлять процессами в Терминале или sudo htopохватывать всю систему.
JacopKane
источник
0

Вы можете установить значение nice (приоритет) для демона на постоянной основе, используя переменную в файле PLIST для приложения. Чтобы узнать, как набрать MAN plist в окне терминала.

синергистов
источник