Почему 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
Обновление: команда nice влияет как на обработку ЦП, так и на очередь ввода / вывода: insanelymac.com/forum/lofiversion/index.php/t164156.html
Ложное имя
2
Проблема не в ограничении памяти / дискового пространства. Я запускаю процессы, которые намеренно берут все ресурсы, которые могут. Надлежащий планировщик многозадачности должен позволить системе оставаться идеально отзывчивой (или, по крайней мере, вызывать незначительное снижение производительности), несмотря на это, при условии правильной расстановки приоритетов. Однако по какой-то безумной причине самый важный аспект пользовательского интерфейса настроен на наименьший возможный приоритет, и поэтому вся система в основном становится непригодной для использования.
Фальшивое имя

Ответы:

1

Я не уверен, что кто-либо, кроме собственных разработчиков Apple, сможет ответить на этот вопрос, внутренние секреты Finder - это их сфера. Если вы считаете, что с пользовательским интерфейсом есть заметные проблемы с задержкой, вы можете отправить в Apple отчет об ошибке.

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

Просто интересно, какие есть эти процессы вы бегаете?

Тим
источник
Питон, в первую очередь. Делать тяжелые рекурсивные вычисления.
поддельное имя
Также, пакетная обработка изображений
поддельное имя
Это больше похоже на проблему использования оперативной памяти, чем на процессор. У меня было что-то вроде мерзавца, использующего тонны процессора, не отставая от пользовательского интерфейса, но когда что-то начинает поглощать всю оперативную память, тогда пользовательский интерфейс получает значительный успех. Каково ваше использование оперативной памяти во время этих процессов?
Тим
1

«У меня большой импорт в апертуре, и это приводит к замедлению работы моей системы до полного сканирования»

Тогда Aperture - это (вероятно) программа, которую вы хотите renice, а не другие. Упомянутые вами процессы настроены по отношению к средним пользовательским приложениям, так что пользовательские приложения получают более высокий приоритет и остаются отзывчивыми, поскольку именно они используются пользователями большую часть времени.

Ваш случай является менее распространенным, когда приложение выполняет долгосрочную, интенсивную задачу, и пользователь хочет сделать что-то еще одновременно. По умолчанию приоритет отдается приложениям пользователя, поэтому эти интенсивные задачи получают больше ресурсов и быстрее завершаются.

Для каждого пользователя, который жалуется на то, что другие приложения недостаточно отзывчивы, есть другой пользователь, который жалуется на то, что активное приложение работает недостаточно быстро.

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

Что касается вашего второго вопроса, есть несколько возможных решений для reniceболее автоматического. Например, вы можете создать апплет сценария, который запускает Aperture с более низким приоритетом и использовать его для запуска Aperture. Или вы можете запустить Aperture с помощью сценария оболочки, хранящегося в файле * .command (однако, он откроет терминал и запустит команду в окне терминала, что может оказаться не тем, что вам нужно). Каждый из них немного вовлечен. Если вам нужны примеры, я смогу узнать о них позже.

Крис Пейдж
источник
Фоновые задачи по определению должны иметь более низкий приоритет, чем приоритетные задачи. Самая важная задача переднего плана во всей системе - это графический интерфейс, который в основном представляет собой процесс Finder. Возможно, я смогу исправлять потоки по принципу «процесс за процессом» renice, но реальная проблема - это приоритет поиска.
Фальшивое имя
Например, в Windows 7 с одним из наиболее отзывчивых графических интерфейсов Window-Manager автоматически запускается с приоритетом «Высокий». Теперь это означает, что неправильное поведение этого процесса приведет к отставанию системы, но это также означает, что неправильное поведение в другом месте не будет . У меня были сбои приложений при использовании 100% каждого ядра процессора, а пользовательский интерфейс на окнах по-прежнему чрезвычайно отзывчив.
Фальшивое имя
1
@ Фальшивое имя: Finder не обрабатывает какие-либо аспекты пользовательского интерфейса, кроме своих собственных окон (папки и значки на рабочем столе). (Можно выйти из Finder; он на самом деле пропал, а все остальное все еще работает.) SystemUIServer обрабатывает только элементы правой стороны панели меню и только оверлейные панели (громкость / яркость и т. Д.). Отрисовка окна и события полностью обрабатываются процессами WindowServer.
Кевин Рид
@Fake Name, как пояснение: reniceработает с процессами, а не с потоками.
Крис Пейдж
1

Я задал похожий вопрос - давно, на ServerFault - хотя и не так конкретно, нацеленный на Finder (хотя я нахожу, что Finder также невыносимо медленный). Как навсегда «сдать в аренду» процесс в Mac OS X (или iOS и т. Д.)? Там было собрано не так много информации - о том, как это сделать ... или о том, почему это так.

Я до сих пор часто думаю об этом, и на самом деле есть несколько способов размышлять над «основами», если вы решитесь. Как упомянуто ранее, вы можете совершать различные махинации с оболочкой ... но хорошим местом для таких проступков являются различные /etc/rc*загрузочные подпрограммы ... которые уже находятся там ... устанавливают всевозможные произвольные (определенные Apple) системные параметры для вас. либо отредактируйте их, либо посмотрите, как добавить свои собственные процедуры в процесс загрузки.

Кроме того, если вы действительно хотите, чтобы ваша голова взорвалась ..

sudo sysctl list и это ключ к ящику Пандоры, он же /etc/sysctl.conf

Алекс Грей
источник