Чому Finder працює з таким низьким пріоритетом процесу?


13

Я з цього приводу трохи втрачаю.
У мене великий імпорт діафрагми, і це змушує мою систему сповільнюватися до повного сканування, в основному робить її непридатною ні для чого, навіть для перегляду в Інтернеті. Оскільки це здається трохи неприродним, я трохи часу провів, оглядаючи.

Запуск ps -Alпоказує , що, по- видимому , за замовчуванням Dock, Finderі SystemUIServerвсе , здається, працюють на одній з пріоритетних набагато нижче , ніж для користувача рівня додатків. Хоча користувацькі програми зазвичай мають пріоритет 33, пріоритет Dock, Finder тощо має 53.

Кінцевий результат - будь-яке інтенсивне завдання процесора повністю клобує інтерфейс, і робить систему непридатною до завершення.

У будь-якому випадку, використання renice -20 -p <prid>їх ударів до того самого пріоритету, що й решта користувальницького інтерфейсу користувача, і призводить до того, що не потрібно чекати 1-3 секунди (!), Щоб інтерфейс відповів на щось таке просто, як клацання миші.

Тад сказав, що у мене є два питання:
чи є якась причина, щоб я не міняв пріоритет потоку пошуку, як це?
Чи є спосіб зміни пріоритету стійким, наприклад, таким чином він залишається таким чином після перезавантаження.


9
Зазвичай я виявив, що саме введення вводу / виводу диска, а не завантаження процесора, спричиняє повзання моєї системи. Finder та інші додатки, про які ви згадуєте, ймовірно, чекають на читання / запис, коли, здається, вони не відповідають. У мене насправді немає рішення для цього (крім отримання швидкого диска, як SSD), однак я збираюся розмістити це як коментар замість відповіді.
Кайл Кронін

5
Я б так подумав. Тим НЕ менше, зміна пріоритету потоку робить впливає на поведінку користувальницького інтерфейсу, який змушує мене думати , що або пріоритет потоку впливає також на обробку черги введення - виведення, або це дійсно CPU обмежена.
Підроблене ім’я

1
Наприклад, якщо пріоритет док-станції залишається запасом, для реакції на переміщення миші над ним потрібно 5-10 секунд. З нею вручну стикаються до тих самих 33, що і все інше, він реагує негайно (хоч трохи затишності).
Підроблене ім’я

3
Оновлення: приємна команда впливає на обробку черги процесора та IO: insanelymac.com/forum/lofiversion/index.php/t164156.html
підроблена назва

2
Проблема не в обмеженні простору пам'яті / диска. Я веду процеси, які навмисно беруть усі ресурси, які вони можуть. Належний планувальник взаємних завдань повинен нехай система залишається ідеально реагуючою (або принаймні лише спричиняє незначний удар), незважаючи на це, за умови встановлення пріоритетності. Однак з якоїсь божевільної причини найважливіший аспект інтерфейсу призначений на найменший можливий пріоритет, і тому вся система, в основному, стає непридатною.
Підроблене ім’я

Відповіді:


1

Я не впевнений, що хтось із власників розробників Apple не зможе відповісти на це питання, внутрішні секрети Finder - це їхня область. Якщо ви думаєте, що з користувальницьким інтерфейсом є деякі помітні проблеми із затримкою, ви, можливо, захочете подати звіт про помилку в Apple.

Судячи зі звуку речей (процесів, які навмисно забирають усі ресурси), це дещо кращий випадок управління пам’яттю. Я ще не бачив, як система працює якнайкраще, не маючи десь 10-20% безкоштовних ресурсів, як допоміжний засіб.

Просто цікаво, які є ці процеси ви бігаєте?


Пітон, насамперед. Робити важкі рекурсивні обчислення.
Підроблена назва

Також пакетна обробка зображень
підроблена назва

Це звучить більше як проблема використання оперативної пам'яті, ніж проблема процесора. У мене було щось на кшталт git, що використовує тонни процесора, не затримуючи користувальницький інтерфейс, але коли щось починає з'їдати всю оперативну пам’ять, то користувальницький інтерфейс приймає великий удар. Яке використання оперативної пам’яті під час цих процесів?
Тим

1

"У мене великий імпорт діафрагми, і це змушує мою систему сповільнюватися до повного сканування"

Тоді діафрагма - це, мабуть, програма, яку ви хочете renice, а не інші. Ви згадані вами процеси налаштовані відносно середніх програм користувачів, так що користувацькі програми отримують більш високий пріоритет і залишаються чуйними, оскільки саме вони користуються більшою частиною часу.

Ваш випадок є менш поширеним, коли програма виконує довготривале, інтенсивне завдання, і користувач хоче одночасно зробити щось інше. За замовчуванням користувальницькі програми отримують пріоритет, щоб ці інтенсивні завдання швидше отримували більше ресурсів та виконувались.

Для кожного користувача, який скаржиться на те, що інші додатки не реагують на достатню реакцію, є ще один користувач, який скаржиться на те, що активна програма не працює досить швидко.

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

Що стосується вашого другого питання, то існує кілька можливих рішень для того, щоб зробити reniceбільш автоматичним. Наприклад, ви можете створити аплет сценарію, який запускає діафрагму з нижчим пріоритетом і використовувати його для запуску діафрагми. Або ви можете запустити діафрагму за допомогою скрипта оболонки, що зберігається у файлі * .command (однак, це відкриє Terminal і запустить команду у вікні терміналу, що може бути не тим, що ви хочете). Кожен із них трохи задіяний. Якщо ви хочете приклади, я можу побачити їх подання пізніше.


Фонові завдання, за визначенням , повинні мати нижчий пріоритет, ніж завдання переднього плану. Найбільш важливою завданням на першому плані у всій системі є GUI, який в значній мірі процес Finder. Я, можливо, зможу виправляти потоки на кожному reniceетапі, але актуальною проблемою є пріоритет пошуку.
Підроблене ім’я

Наприклад, у Windows 7, який має один із найбільш чуйних графічних інтерфейсів, Window-Manager автоматично працює з пріоритетом "Високий". Тепер це означає, що неправильна поведінка цього процесу призведе до відставання системи, але це також означає, що недобросовісна поведінка в іншому місці не буде . У мене були збої програм із використанням 100% кожного ядра процесора, а користувальницький інтерфейс у Windows все ще залишається надзвичайно чуйним.
Підроблене ім’я

1
@Fake Name: Finder не обробляє будь-який аспект інтерфейсу, крім власних вікон (папки та піктограми робочого столу). (Можна вийти з Finder; він фактично відсутній, а все інше все ще працює.) SystemUIServer обробляє лише панелі меню праворуч з пунктами меню та накладками "рамки" (гучність / яскравість тощо). Відображення вікна та події повністю обробляються процесами WindowServer.
Кевін Рейд

@Fake Name, як уточнення: reniceпрацює на процесах, а не на потоках .
Кріс Пейдж

1

Я поставив подібне запитання - давно, на ServerFault - хоча і не настільки зосереджено на Finder (хоча я дійсно вважаю Finder нестерпно повільним). Як назавжди "відновити" процес на Mac OS X (або iOS тощо)? Там не багато інформації було зібрано - як про хороший спосіб зробити це… або про те, чому це таке ..

Я все ще думаю про це часто, і насправді є кілька способів роздумувати з "основами", якщо ви так зважилися. Як вже згадувалося раніше, ви можете робити різні шматочки для оболонок .. але хорошим місцем для таких проступків є різні /etc/rc*процедури завантаження .., які вже є там .. встановлення всіляких довільних (визначених яблуком) системних параметрів для вас. або відредагуйте їх, або шукайте, як додати власні процедури до процесу завантаження.

також, якщо ви дійсно хочете, щоб ваша голова вибухнула ..

sudo sysctl list і це ключ до скриньки пандори, ака /etc/sysctl.conf

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