Я немного растерялся по этому поводу.
Я выполняю большой импорт в апертуре, и это приводит к тому, что моя система замедляется до полного сканирования, в основном делая его непригодным для использования ни с чем, даже с просмотром веб-страниц. Поскольку это кажется немного неестественным, я провел немного времени, осматриваясь.
Запуск ps -Al
показывает, что, по-видимому, по умолчанию Dock
, Finder
и SystemUIServer
все они работают с приоритетом, намного меньшим, чем у пользовательских приложений. В то время как пользовательские приложения обычно имеют приоритет 33, Dock, Finder и т. Д. Имеют приоритет 53.
Конечным результатом является то, что ЛЮБОЙ процессор интенсивно загружает пользовательский интерфейс и делает систему непригодной для использования до ее завершения.
В любом случае, использование renice -20 -p <prid>
повышает их до того же приоритета, что и остальная часть пользовательского интерфейса пользователя, и приводит к тому, что нет необходимости ждать 1-3 секунды (!) Для того, чтобы пользовательский интерфейс реагировал на что-то такое же простое, как щелчок мышью.
Тэд сказал, у меня есть два вопроса:
есть ли причина, по которой я не должен изменять приоритет потока искателя, как это?
Есть ли способ сделать изменение приоритета постоянным, например, чтобы оно оставалось таким после перезагрузки.
источник
Ответы:
Я не уверен, что кто-либо, кроме собственных разработчиков Apple, сможет ответить на этот вопрос, внутренние секреты Finder - это их сфера. Если вы считаете, что с пользовательским интерфейсом есть заметные проблемы с задержкой, вы можете отправить в Apple отчет об ошибке.
Судя по звуку вещей (процессам, преднамеренно занимающим все ресурсы), это немного более подходящий случай для управления памятью. Я еще не видел, чтобы система работала наилучшим образом без использования ресурсов на 10-20% в качестве буферизующего средства.
Просто интересно, какие есть эти процессы вы бегаете?
источник
«У меня большой импорт в апертуре, и это приводит к замедлению работы моей системы до полного сканирования»
Тогда Aperture - это (вероятно) программа, которую вы хотите
renice
, а не другие. Упомянутые вами процессы настроены по отношению к средним пользовательским приложениям, так что пользовательские приложения получают более высокий приоритет и остаются отзывчивыми, поскольку именно они используются пользователями большую часть времени.Ваш случай является менее распространенным, когда приложение выполняет долгосрочную, интенсивную задачу, и пользователь хочет сделать что-то еще одновременно. По умолчанию приоритет отдается приложениям пользователя, поэтому эти интенсивные задачи получают больше ресурсов и быстрее завершаются.
Для каждого пользователя, который жалуется на то, что другие приложения недостаточно отзывчивы, есть другой пользователь, который жалуется на то, что активное приложение работает недостаточно быстро.
Если вы выполняете длинную, ресурсоемкую задачу и знаете, что хотите, чтобы она имела более низкий приоритет, чтобы вы могли использовать другие процессы, когда задача завершается - и вы не возражаете, если интенсивная задача занимает больше времени - вам следует снизить приоритет процесс запуска интенсивной задачи.
Что касается вашего второго вопроса, есть несколько возможных решений для
renice
более автоматического. Например, вы можете создать апплет сценария, который запускает Aperture с более низким приоритетом и использовать его для запуска Aperture. Или вы можете запустить Aperture с помощью сценария оболочки, хранящегося в файле * .command (однако, он откроет терминал и запустит команду в окне терминала, что может оказаться не тем, что вам нужно). Каждый из них немного вовлечен. Если вам нужны примеры, я смогу узнать о них позже.источник
renice
, но реальная проблема - это приоритет поиска.renice
работает с процессами, а не с потоками.Я задал похожий вопрос - давно, на ServerFault - хотя и не так конкретно, нацеленный на Finder (хотя я нахожу, что Finder также невыносимо медленный). Как навсегда «сдать в аренду» процесс в Mac OS X (или iOS и т. Д.)? Там было собрано не так много информации - о том, как это сделать ... или о том, почему это так.
Я до сих пор часто думаю об этом, и на самом деле есть несколько способов размышлять над «основами», если вы решитесь. Как упомянуто ранее, вы можете совершать различные махинации с оболочкой ... но хорошим местом для таких проступков являются различные
/etc/rc*
загрузочные подпрограммы ... которые уже находятся там ... устанавливают всевозможные произвольные (определенные Apple) системные параметры для вас. либо отредактируйте их, либо посмотрите, как добавить свои собственные процедуры в процесс загрузки.Кроме того, если вы действительно хотите, чтобы ваша голова взорвалась ..
sudo sysctl list
и это ключ к ящику Пандоры, он же/etc/sysctl.conf
источник