Чи є спосіб встановити пріоритет процесу в Mac OS X?


48

У мене фоновий процес працює на 100% ЦП на Mac OS X. Через це всі інші програми дуже повільні.

Я хотів би встановити цей процес на не більше 50%, щоб мої програми могли працювати краще. Як я можу це зробити?

Відповіді:


48

У командному рядку ( Terminal.appабо будь-якому іншому ) використовуйте niceта renice, як і в інших Unixes.

Використовувати niceпри запуску процесу:

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

Пріоритет за замовчуванням дорівнює нулю, позитивні значення "приємніші" (тобто нижчий пріоритет), а негативні - "менш приємні" (більший пріоритет). Схоже, Mac OS працює від +10 до -10.

Використовуйте reniceдля зміни пріоритету вже запущеного процесу (зі reniceсторінки man на 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це дороги в одну сторону. А невеликі зміни пріоритету можуть мати великий вплив на час роботи. Тому йдіть легко з цього питання, поки не зрозумієте цього.


І як мені вчинити з уже запущеним процесом? Він працює протягом 2 годин, і я не хочу запускати його знову і
втрачаю

15

Ви можете використовувати команду:

renice -n # PID

Де:

  • # - це число, яке повинно перевищувати 0 (інакше ви перемістите ваш процес з більш високим пріоритетом)
  • PID - ідентифікатор процесу, який ви можете переглянути, ввівши topдодаток терміналу (утиліти / terminal.app)

Якщо це системний процес або інший користувацький процес, слід ввести:

sudo renice -n 10 PID

Він запитає ваш пароль (якщо ви судо). Щодо кількості, я б рекомендував 10 або 19 (навіть нижчий пріоритет).

Зауважте, що це змінить пріоритет, а не використання процесора. Якщо ви не працюєте з іншими процесами, для яких потрібен процесор, або у вас більше одного процесора на вашому Mac (Core 2 Quad Core), процес все ще може використовувати 100% процесора.


6
renice 20 $(pgrep ImageOptim)

Або використовуйте назву вашої програми замість ImageOptim


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

5

Є також ряд GUI утиліти, як вільний BeNicer і Process Wizard (мій попередній улюблений), і версія на $ 1,99 в морозильній камері , що мій новий фаворит. Усі вони працюють над запущеними програмами.


3
BeNicer і Process Wizard - це програми PowerPC, і вони не працюватимуть на останніх версіях OSX
arolson101

Чи все ще Freezer працює над новими версіями ОС?
іллюмінат

будь ласка, перевірте мою відповідь на іншу альтернативу, AppPolice
JacopKane

2
  • Якщо ваш процес - це утиліта для допоміжних програм чи додатків, а не системний процес, і ви не хочете робити цього niceчи reniceпід час кожного завантаження системи, ви можете дати йому знімок AppPolice . Це відкритий і безкоштовний код. Завантажити його можна тут .

  • Ще однією альтернативою буде дуже приємний інтерфейс GUI, який називається менеджером завдань командного рядка htop. Ви можете бачити всі процеси та налаштовувати їхні niceзначення за допомогою клавіш F7та F8ярликів. (Зверніть увагу, що негативні niceзначення є більш пріоритетними та протилежними позитивним значенням)

Щоб встановити його:

  • Встановіть домашню мову, якщо у вас її ще немає.
  • Запустіть цю команду brew install htopв терміналі
  • Тепер ви можете htopпереглядати і керувати процесами в Терміналі або sudo htopохопити всю систему.

0

Ви можете встановити приємне значення (пріоритет) для демона назавжди, використовуючи змінну у файлі PLIST для програми. Щоб дізнатись, як ввести вікно MAN у вікно терміналу.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.