Скрытые фоновые приложения могут замедлять работу вашего Mac. Вот как исправить это потенциальное влияние на производительность вашего Mac.
В любой компьютерной системе на базе UNIX, включая macOS, операционная система запускает множество фоновых процессов для автоматического выполнения определенных задач. В macOS они обычно делятся на две категории: демоны и агенты.
Демон — это безликая фоновая задача, которая постоянно выполняется для выполнения некоторых задач. В macOS есть несколько распространенных демонов: launchd для запуска других процессов, учетных записей (управляет учетными записями пользователей), cloudd — для запуска служб iCloud, bluetoothd — для служб BlueTooth и многие другие.
Подобно демонам, это агенты, фоновые приложения, которым разрешено взаимодействовать с приложениями переднего плана и иногда представлять небольшие пользовательские интерфейсы. Один из таких примеров — securityd, так как вы видите этот агент в действии каждый раз, когда ваш Mac запрашивает пароль администратора.
Вы можете просмотреть большинство процессов, включая демоны и агенты, запущенные на вашем Mac, открыв приложение Activity Monitor macOS, расположенное в папке «Утилиты» на вашем загрузочном диске. Вы также можете просмотреть сведения о запущенных процессах в Терминале, набрав top
и нажав Возвращаться.
Большинство системных демонов и агентов Apple были усовершенствованы за эти годы. После десятилетий разработки они работают плавно и безупречно, так что вы почти никогда не замечаете их работы.
Но также существуют сторонние демоны и агенты. Если они плохо написаны, они могут плохо работать, потреблять процессорное время, вызывать чрезмерный доступ к диску и иным образом замедлять работу вашего Mac.
Места
В настоящее время в macOS демоны и агенты находятся в двух папках внутри папки /Library: LaunchAgents и LaunchDaemons.
На самом деле исполняемые исполняемые файлы демона и агента не находятся в этих папках — вместо этого файлы .plist или списка свойств находятся в обоих местах. Файлы .plist — это XML-файлы, содержащие пары ключ-значение, где каждый ключ представляет собой имя с соответствующим значением.
В папке библиотеки вашего пользователя также есть вторая папка LaunchAgents. Вы можете открывать и просматривать файлы .plist в большинстве текстовых редакторов или в собственной IDE Apple, Xcode.
Каждый файл .plist содержит описание каждого демона или агента, а также дополнительные данные, сообщающие системе, когда и как его запускать. Одно поле в каждом .plist называется «ProgramArguments», которое представляет собой массив элементов, включая пути в файловой системе, где фактически находятся исполняемые файлы, которые нужно запустить.
Например, в файле XQuartz org.xquartz.startx.plist в папке /Library/LaunchAgents массив ProgramArguments содержит четыре текстовых элемента, три из которых содержат пути к другим частям файловой системы:
- /opt/X11/libexec/launchd_startx
- /opt/X11/бин/startx
- /opt/X11/бин/Xquartz
Каждый из этих трех путей указывает на двоичные файлы, которые будут запускаться системой в разное время, и все они находятся в невидимой папке /opt, установленной XQuartz во время установки. Некоторые файлы .plist также могут содержать информацию о запуске для каждого демона или агента, например, с каким интервалом их запускать и как долго.
Дополнительные поля в .plist в этом примере включают параметр сокета UNIX, ключ «ServiceIPC» и ключ «EnableTransactions».
«IPC» — это сокращение от Interprocess Communication. Думайте о IPC (или в терминологии Apple, XPC) как о канале, соединяющем два процесса на вашем Mac, по которому проходит связь.
Когда ваш Mac запускается, macOS просматривает папки LaunchAgents и LaunchDaemons, читая все файлы .plist. Он также делает заметки о том, что нужно запустить, где эти элементы находятся на диске, с каким интервалом их запускать и как долго их можно запускать.
Когда наступает указанное время, бинарники по указанным путям запускаются и запускаются. Некоторые демоны и агенты работают постоянно, а некоторые — только периодически.
Автоматические средства обновления — хороший пример демонов, которые запускаются время от времени, а затем завершают работу после завершения своих задач обновления.
Плохо написанные демоны
Если демон или агент плохо написаны, они могут быть неэффективными и работать медленно, снижая общую производительность системы. Если код демона слишком медленный, или выполнение некоторых задач занимает слишком много времени, или если он потребляет слишком много процессорного времени, это может замедлить работу системы.
Если одновременно запускается много таких плохо написанных демонов и агентов, вы почувствуете заметное замедление общей производительности системы.
Также в папке библиотеки вашего Mac есть еще одна папка под названием «PrivilegedHelperTools». Эти двоичные файлы также запускаются через файлы .plist, хранящиеся в LaunchAgents и LaunchDaemons.
Привилегированный вспомогательный инструмент — это одноразовый исполняемый двоичный файл, который запускается ненадолго и только потому, что он должен повысить уровень своих привилегий в системе, выполнить безопасную задачу, а затем выйти.
Некоторые задачи в macOS требуют доступа суперпользователя и, таким образом, могут представлять угрозу безопасности, если их постоянно выполнять. Следовательно, вспомогательные инструменты уменьшают любую поверхность атаки, работая только на короткое время.
Логика заключается в том, что если задача выполняется не от имени суперпользователя, ее сложнее использовать в качестве вектора атаки со стороны вредоносного программного обеспечения.
Удаление медленных демонов и агентов
Как уже упоминалось, если на вашем Mac одновременно запущено слишком много демонов и агентов или если один или несколько из них плохо написаны, это может замедлить работу вашего Mac. Чтобы восстановить нормальную производительность в этих случаях, вам необходимо определить, какие демоны или агенты вызывают проблемы с производительностью, а затем отключить их файлы .plist и перезагрузить Mac.
Например, известно, что некоторые агенты, которые устанавливаются как часть некоторых сторонних игровых движков, работают медленно или замедляют работу системы. В этих случаях вы можете переместить их файлы .plist в сторону, а затем перезапустить, что предотвратит их запуск.
Обратите внимание, что нет необходимости полностью удалять проблемное программное обеспечение — требуется только переместить соответствующие файлы. plist из папок LaunchAgents и LaunchDaemons во всех установленных местах и перезапустите. Позже, если вы захотите снова использовать программное обеспечение, вы можете переместить файлы .plist на место или переустановить программное обеспечение и снова перезапустить его, чтобы восстановить функциональность.
Чтобы увидеть, какие демоны и агенты используют больше всего системных ресурсов, вы можете запустить монитор активности Apple и проверить столбцы «% ЦП» и «Потоки». Они дают представление о том, какие процессы больше всего нагружают процессоры вашего Mac.
Вы также можете проверить использование памяти, энергии, диска и сети с помощью Activity Monitor.
После того, как вы определили, какие фоновые процессы потребляют ресурсы вашей системы, вы можете вернуться к папкам LaunchAgents и LaunchDaemons и перетащить соответствующие файлы .plist из этих папок. Вам нужно будет упорядочить и отслеживать файлы .plist, чтобы знать, куда переместить их обратно, когда вы захотите восстановить функциональность.
Чтобы переместить файлы .plist из установленных папок, вам нужно будет ввести пароль администратора, когда Finder предложит вам. Не забудьте перезагрузить Mac.
Еще один возможный вариант — изменить содержимое каждого файла .plist, если оно содержит интервалы и время запуска. Например, вы можете попробовать увеличить интервал запуска в каждом файле .plist, чтобы каждый демон запускался реже.
Но будьте предельно осторожны при внесении этих изменений, так как это может изменить функциональность установленного программного обеспечения.
Демоны и агенты, предназначенные для непрерывной работы, делают это по определенной причине — обычно для предоставления какой-либо фоновой службы или службы активному приложению. Их отключение приведет к потере функциональности, если они не работают, когда приложение ожидает их.
Меньше – больше
Как правило, вы хотите запускать в своей системе как можно меньше демонов и агентов. Даже если все они хорошо написаны, каждая добавленная часть немного нагружает систему и процессоры.
Если у вас одновременно запущено несколько десятков демонов и агентов, все это складывается и начинает замедлять работу вашего Mac.
После установки нового программного пакета вы можете проверить папки LaunchAgents и LaunchDaemons, чтобы узнать, что было установлено и нужны они вам или нет.
Если вас интересует подробное представление на уровне разработчика о том, как демоны и агенты работают в macOS, ознакомьтесь с Мак Демонология Владимира Вашуркина доступно в APRESS books.
Вы также можете получить подробное техническое обсуждение того, как Apple Услуги XPC работать на своей веб-странице разработчика.