Чому завантаження (storedownloadd) з магазину додатків Mac споживають стільки процесора?


52

Я часто помічав це при великих завантаженнях, таких як оновлення Xcode та оновлення OS X, і подібні речі.

В основному ми бачимо це протягом стільки часу, скільки потрібно для завантаження:

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

Сьогодні я завантажую Xcode 7.2.1.

Ви можете бачити, що сторедотаундед, схоже, прив’язує все ядро, і близько 30% цієї роботи обробляється ядром.

Що я спантеличений, це що це за «робота»? Чому потрібно робити цю роботу? Яка обробка може це зробити, тому що для розшифровки потоку в кілька мегабайт в секунду не потрібно таких великих ресурсів. Я міг би завантажувати такий великий файл, використовуючи сотні підключень через Інтернет і виконуючи перевірки цілісності на ньому (з таким протоколом, як бітторент), і він би не наближався ніде близько до того, що відбувається тут з використанням ресурсів.


1
Для тих, кому не потрібні оновлення для автоматичного завантаження та просто хочуть припинити використання цього процесора, перейдіть у меню Apple -> Налаштування системи -> App Store та зніміть прапорець "Завантажити нещодавно доступні оновлення у фоновому режимі" (El Capitan ) та перезавантажте комп'ютер.
rakslice

Відповіді:


30

Зустрілися з тією ж проблемою і сьогодні, коли оновлюється XCode: storedownloaddприв’язує ядро ​​процесора протягом 20 хвилин.

Я спробував прорватися на налагоджувальний пристрій за допомогою налагоджувача і побачив кілька справді довгих слідів стека та багато часу, проведеного всередині Security::CodeSigning.

Я підозрюю, що рекурсивно перевіряє цифрові підписи багатьох крихітних файлів один за одним. Я поняття не маю, чому це зробить замість того, щоб перевірити весь пакет під час його завантаження. Я також бачу багато стрижкових маніпуляцій всередині Security_CodeSigning::RequirementLexer::RequirementLexer.

Що б storedownloaddце не було, це занадто чортово повільно!


Як вам вдалося побачити вміст сліду стека? (Чи зазвичай це не вимагає символів налагодження?) Чи використовували ви Xcode для налагодження storedownloadd? Інструменти? Як ти це робиш?
Стівен Лу

@StevenLu Так, я використовував Xcode. Я не думаю, що у мене є символи налагодження. Назви функцій, ймовірно, походять із спільних бібліотек, які декларують ці функції.
Навін

1
Це охайно, хоча. Я повинен намагатися робити це частіше. Спасибі
Стівен Лу

2
це робиться перед тим, як розпочнеться завантаження ... тож якщо він перевіряє підписання коду, це робить це у локальних файлах. можливо, це перевірка цілісності всієї локальної установки xcode перед завантаженням?
user2707001

1
це для мене зараз, коли є оновлення, які потрібно завантажити, але вони ще не завантажують їх. робить все кордони непридатними. просто вбив його в моніторі активності, і я швидше розробив цей день.
Лассі Кіннунен

11

Використання процесора спричинено як неохайним кодуванням, так і шифруванням / декомпресією. Інженери стали дуже недбалими з нашим процесором у вік чотирьохядерних ноутбуків з вісьмома віртуальними ядрами.

Хтось повинен переслідувати Apple навколо оптимізації storedownloaddрозпорядку. З огляду на , що ми повинні були миритися з розбитою мережі протягом року , поки Apple не замінили зламаний дизайн discoverydз mDNSresponder.

Темніші думки можуть підказати, що магазин також стискає дані для завантаження та надсилання. Microsoft багато разів спіймала це, але я не бачив документально підтвердженого випадку у справі Apple.


1
Я думаю, що одне, що ми повинні враховувати, - це те, що, можливо, storedownloaddце не стискає дані пакета справді обчислювально. На сьогоднішній день не так вже й багато підстав підозрювати щось особливо гнусне
Стівен Лу

Вибачте, що ви насправді це згадали. тому я маю на увазі сказати, що я вважаю, що найбільш правдоподібним є те, що це має щось спільне з декомпресією файлів.
Стівен Лу

1
Стівен, навіть декомпресія не має сенсу протягом тривалого завантаження (декомпресія зазвичай відбувається в кінці завантаження). Тільки шифрування має сенс. Я думаю, що це така ситуація, як відкриття, коли код ніколи не був належним чином оптимізований (цитування Ars Technica чітко показує, як позаду Apple стоїть у фіксації основної підпрограми OS X, навіть хто є набагато центральнішим у користувальницькому досвіді, ніж завантаження в магазині - що не повинно бути такою великою частиною загального досвіду користувачів Mac, який не тестує).
Foliovision

Немає сенсу, що вони надавали йому пріоритет перед звичайними завданнями користувача. Це працює змушує xcode робити це набагато повільніше будувати на повільніших Mac. 5 хвилин повороту до 20 хвилин повільно, а не лише трохи повільніше.
Лассі Кіннунен

8

просто вбили його в терміналі ;-) ... взявши 1,5 Мб / с з моєї повільної широкосмугової мережі

killall storedownloadd

Таким чином, ви не отримаєте оновлення програмного забезпечення ... не здається рішенням для мене.
Калімо
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.