Процесс icdd, потребляющий значительную память в macOS

13

На прошлой неделе или около того процесс icdd запускался время от времени и, когда он это делал, потреблял огромное количество оперативной памяти (более 7 ГБ). Когда это происходит, мой MacBook Pro по существу перестает работать, пока я не могу открыть Activity Monitor и принудительно завершить процесс.

Я приложил скриншот монитора активности, показывающий icdd, использующий более 7 ГБ оперативной памяти и делающий скачок в памяти.

введите описание изображения здесь

Кто-нибудь знает, что это за процесс или как я могу предотвратить возникновение этой проблемы каждые 30 минут или около того?

Zach
источник
1
Вы не первый человек, который имеет эту проблему. Посмотрите, поможет ли этот ответ: superuser.com/questions/748933/…
NoahL
1
icdd связан с Image Capture.app/service. У вас есть какие-либо устройства, такие как сканер, принтер-сканер или камера?
klanomath
Кроме того - если вы выйдете из системы, а затем снова войдете в нее, - как изменится используемый 7.24 (приложение 1.08, проводная 1.75. Сжатый 4.41)? Это может быть простая утечка памяти, которая выходит из системы и очищается. Если не получится, я бы попробовал отключить антивирусный сканер, перезагрузить компьютер и посмотреть, быстро ли растет память.
bmike
Это решение не было применимо к моей проблеме. @klanomath У меня нет внешних устройств, подключенных к моему MacBook.
Зак
@Zach lcdd контролируется агентом запуска. Он содержит клавишу «Включить выход давления», которая по умолчанию отключена. Вы можете временно включить его (= kill lcdd, если давление памяти становится высоким) и проверить результат. Как уже упоминалось в bmike, настоящая причина, вероятно, в утечке памяти ...
klanomath

Ответы:

6

Я работал со старшим техническим консультантом в Apple над этой проблемой более года, а до этого некоторое время работал с другим старшим консультантом. Мы сделали «сбор данных», чтобы отправить его инженерам Apple несколько раз, и несколько раз делали записи экрана, чтобы продемонстрировать, что происходит в Activity Monitor, Image Capture и, в конечном счете, в списке, который icdd поддерживает в / Users / user_name / Library / Application Support / icdd / deviceInfoCache.plist (отображая его в Xcode).

На данный момент, вот моя лучшая оценка того, что происходит:

Процесс icdd (Image Capture Device Database) видит, что сканеры приходят и уходят в загруженной сети. Он пытается сохранить список своих файлов значков в хеш-таблице, которую он также записывает в файл deviceInfoCache.plist, упомянутый выше. Да, это звучит безумно - это ссылки на файлы значков сканеров. Но еще более сумасшедшим является то, что по какой-то причине почти все записи в этом файле указывают на несуществующие файлы .icns. Из нескольких систем, на которые я смотрел, в этом файле было много тысяч записей, но только несколько файлов .icns существовали на одной из машин, и ни одна не существовала на других. Я считаю, что когда этот файл становится большим, icdd тратит много времени, пытаясь проверить наличие записей в файле .plist и изменить файл. Я верю в это по двум причинам. Во-первых, когда я беру свой ноутбук домой, иногда процесс icdd продолжает работать примерно на 100% процессорного времени, но когда я его затем убиваю, он каждый раз возвращается к «нормальному» примерно от 0,0 до 0,1%. Следовательно, я думаю, что иногда я все еще пытаюсь обработать информацию о записях, когда я открываю ее дома. Но когда я убиваю его, находясь в загруженной сети, он часто возвращается почти на 100% сразу. Когда число сканеров, показанных в Захвате изображений, уменьшается (что часто происходит, но по какой-то причине будет периодически расти), icdd в конечном итоге успокоится. И, во-вторых, удаление файла deviceInfoCache.plist приводит к тому, что icdd ведет себя разумно в течение короткого времени - до тех пор, пока количество записей не возрастет снова. Обратите внимание, что icdd хранит копию этих записей в памяти, поэтому, если вы удалите файл из учетной записи пользователя, icdd просто переписывает его немедленно. И, конечно же, вы не можете удалить icdd достаточно долго, чтобы удалить файл, поэтому вам нужно выйти из системы и удалить файл из другой учетной записи администратора через терминал. При повторном входе в icdd файл будет воссоздан, но он будет содержать относительно мало записей и некоторое время будет вести себя хорошо.

Чтобы дать представление о масштабах, инженеры Apple были потрясены, увидев, что у меня было целых 85 сканеров, отображаемых в Image Capture. Однако часто это число устанавливается примерно до 6 в той же системе и в те же периоды времени. Файл deviceInfoCache.plist содержал от 8000 до 12 600 записей в системах, на которые я смотрел, у которых были проблемы с icdd - у меня самая большая, и я считаю, что это перенесено со старой машины, так как у меня были проблемы с icdd с того момента, как я установил свой новый MacBook Pro в 2016-дек. Когда я удалил файл plist, число начальных записей во вновь созданном файле было 44, и в течение нескольких дней использование процессора icdd зависло почти до 0,0%. Тем не менее, после примерно 5 дней в университетском городке, мой plist файл имеет 964 записей, и использование процессора ICDD обычно будет колебаться между 30% и 90% в загруженной сети в университете. Когда я дома, файл plist будет только увеличивать количество записей от 0 до 2 в течение дня. Из 12 600 записей в моем предыдущем файле plist только 2 из них содержат «имя_устройства», остальные содержат «iconPathLocation», все из которых указывают на несуществующие файлы .icns. С текущим списком, все еще есть ровно 2 записи, которые содержат «имя_устройства», а остальные содержат «iconPathLocation», который не существует. все из которых указывают на несуществующие файлы .icns. С текущим списком, все еще есть ровно 2 записи, которые содержат «имя_устройства», а остальные содержат «iconPathLocation», который не существует. все из которых указывают на несуществующие файлы .icns. С текущим списком, все еще есть ровно 2 записи, которые содержат «имя_устройства», а остальные содержат «iconPathLocation», который не существует.

Таким образом, краткосрочное решение состоит в том, чтобы удалить файл plist из другой учетной записи администратора через терминал при выходе из вашей учетной записи пользователя. Надеемся, что теперь эта информация предоставляется инженерам Apple от моего старшего советника, и у инженеров Apple будет достаточно информации, чтобы выяснить, почему icdd действует именно так, и решить проблему. Конечно, было бы полезно, если бы вы могли проверить мое краткосрочное решение и продолжить сообщать о том, что вы нашли в Apple.

datatoolbox
источник
Хорошая запись, которая дает некоторое понимание того, как ведет себя icdd. Но для чего это нужно? где отображаются эти значки (по крайней мере, существующие)? За какую функцию отвечает эта icdd? и когда вы удаляете файлы .plist, какую функциональность вы теряете? Кроме того, в моем случае на одном Mac находятся 5 пользователей, и их файлы icdd .plist НЕ согласуются, но это иногда приводит к сбою icdd, а не к сбору мусора и загрузке ЦП.
Мотти Шнеор
@Motti Шнеор deviceInfoCache.plist бы иногда иметь фактическое устройство , указанное в нем, и я думаю , что это целевое назначение. Я думаю, что это была ошибка, из-за которой она отслеживала файлы значков-изображений - большинство из которых не существовало. Это было мое первоначальное предположение, но сейчас я говорю об этом с большей уверенностью, потому что, глядя на мою текущую версию этого списка, он содержит ровно одну запись, предназначенную для реального устройства. Следовательно, я думаю, что Apple исправила это в какой-то версии ОС (подозреваю, в Каталине).
datatoolbox
@Motti Shneor При удалении plist я никогда не замечал каких-либо изменений в функциональности - ОС просто перестраивала файл по мере необходимости, что, по-видимому, не занимает много времени. У каждого пользователя есть свой собственный список для этого, и намеренно - если один пользователь использует сканер, а другой нет, я бы ожидал, что их списки отразят эту разницу. Поэтому я сомневаюсь, что списки разных пользователей будут иметь эффект взаимодействия.
datatoolbox
3

Я занимался этой проблемой некоторое время и проверял везде! Это расстраивает ... Наконец-то я нашел ссылку, по которой могу остановить это глупое безумие. Я не уверен, является ли это источником проблемы, но это могло остановить это. Вот шаги:

1) отключить SIP ( ссылка )

2) введите следующие команды:

CD / Приложения

sudo mv Image \ Capture.app/ Отключить \ Image \ Capture.app/

CD / Система / Библиотека / Образ \ Захват / Поддержка /

sudo mv icdd icdd-отключить

3) перезагрузка

4) включите SIP, если вам важно

Оригинальная ссылка: https://havecamerawilltravel.com/photographer/prevent-photos-app-mac-osx

Надеюсь, это поможет.

Mr.Boy
источник
0

Я тоже боролся с этой проблемой. Не найдя ответов онлайн и не желая связываться с терминалом, я позвонил в службу поддержки Apple. Первоначально они думали, что мой HD был поврежден (это было - это было исправлено, но не решило проблему). Проблема сохранилась после увеличения моей оперативной памяти. В ответ на интернет-комментарий о поиске сетевого сканера я заметил, что ICDD может сойти с ума только при включенном Wi-Fi. Если я отключусь от Wi-Fi и выйду из ICDD, он не будет перезагружаться и подниматься в ОЗУ или ЦП (пока Wi-Fi не будет включен).

Я снова позвонил в службу поддержки Apple, которая, похоже, устранила проблему, сбросив SMC и NVRAM. Теперь ICDD работает на низком уровне (10-20 МБ), а не потребляет более 10 ГБ ОЗУ. Для этого я добавил ссылки ниже, но я бы порекомендовал обратиться в службу поддержки Apple для решения вашей конкретной проблемы.

Их объяснение того, почему это происходит, было связано с тем, что моя оперативная память была забита или заполнена кешами в Интернете и т. Д. Почему это только что стало очевидным и связано ли это с Сьеррой, я не могу сказать.

Я надеюсь, что это помогает некоторым людям!

Сбросить SMC: https://support.apple.com/en-us/ht201295

Сброс NVRAM: https://support.apple.com/en-us/ht204063

10-15 минут исправить.

Мои характеристики:

  • начало 2011 года 13 "MacBook Pro
  • 500 ГБ Samsung SSD (обновлено ~ 1,5 года назад)
  • 8 ГБ ОЗУ (обновлено около 1 месяца назад)
  • macOS Sierra 10.12.3 (до
  • Parallels 10 с Windows 10 для программного обеспечения SAS
Gary
источник
0

Хотя приведенные выше ответы дают лучшие технические данные, я хотел бы добавить общее примечание.

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

Обычно сброс таких частей программного обеспечения в их исходное состояние (скажем, путем удаления кэшей и установки файлов, списков .plists или даже сброса их пользовательских настроек по умолчанию) на некоторое время облегчил бы проблему.

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

И, конечно же, открытие новых записей RADR для Apple может в конечном итоге привлечь их внимание к неисправной подсистеме.

Мотти Шнеор
источник