Ich arbeite seit über einem Jahr mit einem leitenden technischen Berater bei Apple an diesem Thema und habe zuvor einige Zeit mit einem anderen leitenden Berater zusammengearbeitet. Wir haben mehrfach "Datenerfassung" durchgeführt, um sie an Apple Engineers zu senden, und mehrmals Bildschirmaufzeichnungen durchgeführt, um zu demonstrieren, was in Activity Monitor, Image Capture und letztendlich in einer Liste, die icdd unter / Users / user_name verwaltet, vor sich geht / Library / Application Support / icdd / deviceInfoCache.plist (durch Anzeige in Xcode).
An dieser Stelle ist hier meine beste Schätzung dessen, was passiert:
Beim icdd-Prozess (Image Capture Device Database) kommen und gehen Scanner in einem ausgelasteten Netzwerk. Es wird versucht, eine Liste ihrer Symboldateien in einer Hash-Tabelle zu speichern, die auch in die oben erwähnte Datei deviceInfoCache.plist geschrieben wird. Ja - das klingt verrückt - es werden Verweise auf die Symboldateien der Scanner beibehalten. Aber noch verrückter ist, dass aus irgendeinem Grund fast alle Einträge in dieser Datei auf .icns-Dateien verweisen, die nicht existieren. Von mehreren Systemen, die ich mir angesehen habe, gab es viele tausend Einträge in der Datei, aber nur einige der ICNS-Dateien waren auf einem der Computer vorhanden, und keiner war auf den anderen vorhanden. Ich glaube, wenn diese Datei groß wird, verbringt icdd viel Zeit damit, die Existenz von Einträgen in der .plist-Datei zu überprüfen und die Datei zu ändern. Ich glaube das aus zwei Gründen. Erstens, wenn ich meinen Laptop mit nach Hause nehme, Der icdd-Prozess läuft manchmal mit ungefähr 100% einer CPU weiter, aber wenn ich ihn dann töte, kehrt er jedes Mal zum "normalen" ungefähr 0,0 bis 0,1% zurück. Daher denke ich, dass es manchmal immer noch versucht, Informationen über die Einträge zu verarbeiten, wenn ich sie zu Hause öffne. Aber wenn ich es im geschäftigen Netzwerk töte, kommt es oft sofort zu fast 100% zurück. Wenn die Anzahl der in Image Capture angezeigten Scanner abnimmt (was häufig der Fall ist, aber aus irgendeinem Grund regelmäßig ansteigt), wird sich icdd schließlich beruhigen. Und zweitens führt das Löschen der Datei deviceInfoCache.plist dazu, dass sich icdd für kurze Zeit angemessen verhält - bis sich die Anzahl der Einträge wieder erhöht. Beachten Sie, dass icdd eine Kopie dieser Einträge im Speicher verwaltet. Wenn Sie die Datei also aus dem Benutzerkonto löschen, schreibt icdd sie sofort neu. Und natürlich, Sie können icdd nicht lange genug beenden, um die Datei zu löschen. Sie müssen sich daher abmelden und die Datei über das Terminal von einem anderen Administratorkonto löschen. icdd erstellt die Datei neu, wenn Sie sich wieder anmelden, hat jedoch relativ wenige Einträge und verhält sich eine Weile gut.
Apple Engineers war schockiert, als ich sah, dass in Image Capture bis zu 85 Scanner angezeigt wurden. Oft wird sich diese Zahl jedoch auf demselben System und in denselben Zeiträumen auf etwa 6 einstellen. Die Datei deviceInfoCache.plist hatte zwischen 8.000 und 12.600 Einträge auf den Systemen, die ich mir angesehen habe und bei denen icdd-Probleme aufgetreten sind - meine ist die größere, und ich glaube, dies wurde von einem älteren Computer übertragen, da ich icdd-Probleme hatte Seit ich mein neues MacBook Pro im Dezember 2016 eingerichtet habe. Als ich die plist-Datei löschte, betrug die Anzahl der ersten Einträge in der neu erstellten Datei 44, und einige Tage lang lag die ICDD-CPU-Auslastung nahe bei 0,0%. Nach ungefähr 5 Tagen auf dem Campus hat meine Plist-Datei jedoch 964 Entires, und die CPU-Auslastung von icdd springt routinemäßig zwischen 30% und 90% im ausgelasteten Netzwerk der Universität. Wenn ich zu Hause bin, erhöht die Plist-Datei die Anzahl der Einträge im Laufe eines Tages nur um 0 bis 2. Von den 12.600 Einträgen in meiner vorherigen Plist-Datei enthalten nur 2 einen "Gerätenamen", der Rest einen "iconPathLocation", die alle auf nicht vorhandene ICNS-Dateien verweisen. Mit der aktuellen Liste gibt es noch genau 2 Einträge, die einen "Gerätenamen" enthalten, und der Rest enthält einen "iconPathLocation", der nicht vorhanden ist. Alle diese Punkte verweisen auf nicht vorhandene ICNS-Dateien. Mit der aktuellen Liste gibt es noch genau 2 Einträge, die einen "Gerätenamen" enthalten, und der Rest enthält einen "iconPathLocation", der nicht vorhanden ist. Alle diese Punkte verweisen auf nicht vorhandene ICNS-Dateien. Mit der aktuellen Liste gibt es noch genau 2 Einträge, die einen "Gerätenamen" enthalten, und der Rest enthält einen "iconPathLocation", der nicht vorhanden ist.
Die kurzfristige Lösung besteht also darin, die Plist-Datei über ein Terminal von einem anderen Administratorkonto zu löschen, während Sie von Ihrem Benutzerkonto abgemeldet sind. Mit diesen Informationen, die Apple Engineers jetzt von meinem Senior Advisor zur Verfügung gestellt werden, verfügen Apple Engineers hoffentlich über genügend Informationen, um herauszufinden, warum icdd so handelt, und um das Problem zu beheben. Natürlich wäre es wahrscheinlich hilfreich, wenn Sie meine kurzfristige Lösung überprüfen und Apple weiterhin mitteilen könnten, was Sie gefunden haben.