Skip to main content

Были разные сообщения о том, что фоновый процесс mediaanalysisd вызывал чрезмерную загрузку ЦП в macOS при сканировании фотографий. Вот что это такое, что он делает и как его остановить.

В течение прошлого года в Интернете бурлили дискуссии о том, анализирует ли Apple в тишине библиотеки фотографий пользователей, чтобы отправить их в правоохранительные органы. Независимое тестирование без тени сомнения подтвердило, что это не так.

Но из различных источников сообщалось о высокой загрузке ЦП при медиаанализе. Эта фоновая обработка может нагрузить процессоры Mac и замедлить работу вашего компьютера в разной степени. Даже при отсутствии каких-либо молчаливых отчетов Apple, mediaanalysisd просто сканирует библиотеки фотографий для целей ИИ, таких как распознавание лиц и индексация Spotlight.

В любом случае вы можете отключить mediaanalysisd, чтобы предотвратить чрезмерное использование ЦП.

Для этого вам сначала нужно отключить защиту целостности системы macOS (SIP).

Как отключить защиту целостности системы в macOS

Чтобы отключить SIP в macOS, следуйте инструкциям на странице SIP Apple.

Apple предупреждает, что отключение защиты целостности системы следует выполнять только временно, и после этого ее следует повторно активировать как можно скорее. Компания также заявляет, что может сделать ваш компьютер «уязвимым для вредоносного кода».

Отключение SIP включает перезагрузку Mac в режиме восстановления и ввод в Терминале:

Вам также может понадобиться или не понадобиться разблокировать сам каталог LaunchAgents, изменив права доступа к каталогу. Просто не забудьте вернуть права доступа к тому состоянию, в котором они были, когда закончите. Для этого вы можете использовать стороннюю утилиту, такую ​​как BatchMod:

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

Затем удалите /System/Library/LaunchAgents/com.apple.mediaanalysisd.plist в Терминале, набрав:

sudo rm -R /System/Library/LaunchAgents/com.apple.mediaanalysisd.plist

com.apple.mediaanalysisd.plist от Apple — это файл загрузчика демона Launch Services, который сообщает macOS, где найти двоичный файл mediaanalysisd и как его запустить. После удаления com.apple.mediaanalysisd.plist macOS больше не будет запускать его при запуске или с перерывами.

Если macOS автоматически регенерирует файл .plist, вам нужно будет отредактировать файл напрямую, чтобы установить для параметра com.apple.mediaanalysisd.photos значение NO. Значение по умолчанию — ДА.

Имейте в виду, что редактирование этого файла может изменить поведение вашего Mac или даже сделать некоторые части нефункциональными, поэтому делайте это на свой страх и риск.

Вы также можете попробовать изменить значение com.apple.mediaanalysisd.realtime с YES на NO. Фактически, вы можете попробовать отключить все настройки MachServices, кроме двух настроек Homekit. Но опять же, в настоящее время неясно, что делает каждый из них.

Но опять же, имейте в виду, что изменение этих настроек отключит некоторые функции macOS, а именно индексирование Spotlight и выделение текста в фотографиях и предварительном просмотре.

Вы также можете поиграть с настройкой EnableTransactions, хотя пока неясно, указывает ли это значение демону использовать сетевые транзакции или нет.

Plist-файлы Apple — это просто XML-файлы. Итак, если вы знаете XML, вы можете использовать любой текстовый редактор или использовать инструмент разработки Apple Xcode для их изменения.

При редактировании файлов .plist в Xcode вы получаете встроенный редактор, который преобразует XML в таблицу редактируемых полей с типами данных и предустановками для некоторых типов в центральном столбце:

.plist также дает нам представление о том, где на диске в macOS находится настоящий двоичный файл демона. В поле «ProgramArguments»: в «Item 0» мы видим значение:

/System/Library/PrivateFrameworks/MediaAnalysis.framework/Versions/A/mediaanalysisd

Таким образом, сам бинарный файл mediaanalysisd находится внутри пакета MediaAnalysis.framework. Непонятно, к чему приведет отключение этого пакета, но делайте это на свой страх и риск, поскольку мы не определили влияние удаления этого фреймворка из системы.

Заглянем в .plist LaunchEvents

Изучив словарь LaunchEvents->com.apple.xpc.activity в файле .plist, мы видим еще несколько интересных элементов. На самом деле этот словарь содержит пять пунктов анализа фотографий:

com.apple.mediaanalysisd.photosanalysis com.apple.mediaanalysisd.photos.visualsearch com.apple.mediaanalysisd.photos.face com.apple.mediaanalysisd.photos.maintenance com.apple.mediaanalysisd.photos.ocr

XPC (иногда называемый IPC) — это технология межпроцессного взаимодействия Apple, с помощью которой приложения могут взаимодействовать друг с другом через службы XPC, в том числе по сети.

Очевидно, что задача com.apple.mediaanalysisd.photos.ocr используется для преобразования слов на изображениях в текст как для выделения, так и для Spotlight.

Но в полной мере то, что делают com.apple.mediaanalysisd.photosanalysis и com.apple.mediaanalysisd.photos.maintenance, до сих пор неизвестно.

Поле «ExpectedDuration» каждого элемента com.apple.xpc.activity — это время выполнения задачи в секундах. Таким образом, «3600» будет 60 минут — один час.

Также интересны поля «Приоритет» и «Интенсивность ЦП». Неясно, как установка для поля CPUIntensive значения NO повлияет на производительность системы, и документации Apple по этому вопросу очень мало.

Поле «Интервал» — это время между запусками процессов, также в секундах. В случае com.apple.mediaanalysisd.photosanalysis это значение равно 7200, что означает 120 минут.

Поле Interval для службы com.apple.mediaanalysisd.photos.maintenance по умолчанию установлено на 86400, что означает, что она запускается один раз каждые 24 часа.

Есть также поля, указывающие, повторяется ли задача, выполняется ли она во время заставок и во время PowerNap.

Заключительные мысли и дополнительная информация

Большая часть архитектуры демонов macOS управляется фоновым демоном под названием launchd, который управляет запуском, запуском и завершением работы демонов. Вы можете узнать больше о launchd в Терминале, используя справочную страницу:

man launchd и нажав Return.

Есть еще одна команда терминала, launchctl, которая взаимодействует с launchd для управления демонами и фоновыми процессами. У него также есть справочная страница для использования и дополнительной информации.

В Терминале вы также можете просмотреть все запущенные процессы (приложения и демоны) на вашем Mac, введя команду top:

Более простой и понятный способ — использовать приложение Apple /Applications/Utilities/Activity Monitor. Введя «медиа» в поле поиска, вы увидите использование mediaanalysisd:

Если вы дважды щелкните имя процесса в Мониторе активности, вы получите окно с более подробной информацией о процессе:

На вкладке «Открытые файлы и порты» мы также можем увидеть немного больше о том, где mediaanalysisd взаимодействует с файловой системой. Мы также видим, что он использует несколько других фреймворков Apple:

CoreNLP.framework DataDetectorsCore.framework Lexicon.framework MetalPerformanceShaders.framework

Из этого журнала мы также узнаем, что в системе есть еще один загадочный демон Apple: analyticsd. Существует man-страница analyticsd, но в ней мало информации и просто говорится, что она используется для «диагностики».