Pourquoi les téléchargements (stockés en téléchargement) du Mac App Store consomment-ils autant de ressources processeur?

52

Je l’ai souvent remarqué avec des téléchargements volumineux tels que les mises à jour Xcode et OS X, etc.

Fondamentalement, nous voyons cela peu importe le temps nécessaire au téléchargement:

entrez la description de l'image ici

Aujourd'hui (actuellement) je télécharge Xcode 7.2.1.

Vous pouvez constater que stockésdés semble appartenir à un noyau entier et que 30% environ de ce travail est traité par le noyau.

Ce qui me rend perplexe, c'est quel est ce "travail"? Pourquoi a-t-il besoin de faire ce travail? Quelle quantité de traitement pourrait-il éventuellement effectuer, car le décryptage d'un flux à quelques mégaoctets par seconde ne nécessite pas autant de ressources. Je pourrais télécharger un fichier volumineux comme celui-ci en utilisant des centaines de connexions sur Internet et en effectuant des contrôles d'intégrité (avec un protocole comme bittorrent) et cela ne se rapprocherait pas de ce qui se passe ici avec l'utilisation des ressources.

Steven Lu
la source
1
Pour ceux qui n'ont pas besoin de mises à jour à télécharger automatiquement et veulent juste faire disparaître cette utilisation du processeur, allez dans Menu Apple -> Préférences Système -> App Store et décochez l'option "Télécharger les nouvelles mises à jour disponibles en arrière-plan" (El Capitan ) puis redémarrez l'ordinateur.
Rakslice

Réponses:

30

Nous avons rencontré le même problème aujourd'hui lors de la mise à jour de XCode: storedownloaddun noyau de processeur est bloqué pendant 20 minutes.

J'ai essayé de pénétrer dansstockedownloadd avec un débogueur et j'ai vu des traces de pile très longues et beaucoup de temps passé à l'intérieur Security::CodeSigning.

Je soupçonne qu'il vérifie de manière récursive les signatures numériques de nombreux fichiers minuscules, l'un après l'autre. Je ne sais pas pourquoi il ferait cela au lieu de vérifier l'ensemble du paquet au fur et à mesure de son téléchargement. Je vois aussi beaucoup de manipulations de chaînes à l'intérieur Security_CodeSigning::RequirementLexer::RequirementLexer.

Quoi storedownloaddqu'il en soit , c'est trop lent!

Navin
la source
Comment avez-vous pu voir le contenu de la trace de pile? (Cela ne nécessite-t-il généralement pas des symboles de débogage?) Avez-vous utilisé Xcode pour déboguer stockédownloadd? Instruments? Comment tu fais ça?
Steven Lu
@StevenLu Ouais, j'ai utilisé Xcode. Je ne pense pas avoir de symboles de débogage. Les noms de fonction proviennent probablement des bibliothèques partagées qui déclarent ces fonctions.
Navin
1
C'est chouette, cependant. Je devrais essayer de le faire plus souvent. Merci
Steven Lu
2
c'est ce qu'il fait AVANT que le téléchargement commence ... donc s'il vérifie la signature du code, il le fait dans les fichiers locaux. Peut-être vérifie-t-il l'intégrité de toute l'installation de xcode locale avant le téléchargement?
user2707001 le
1
c'est fait pour moi maintenant quand il y a des mises à jour à télécharger, mais cela ne les télécharge pas encore. rend tout inutilisable borderline. je viens de le tuer dans le moniteur d'activité et j'ai fait mes constructions pour la journée plus rapidement.
Lassi Kinnunen
11

L'utilisation du processeur est due à la fois au codage bâclé et au cryptage / décompression. Les ingénieurs sont devenus très négligents avec notre processeur à l'ère des ordinateurs portables quad core à huit cœurs virtuels.

Quelqu'un devrait chasser Apple pour optimiser la storedownloaddroutine. Considérant que nous avons dû supporter un réseau défectueux pendant plus d'un an jusqu'à ce qu'Apple remplace le concept défectueux discoverydpar mDNSresponder.

Des pensées plus sombres pourraient suggérer que le magasin compresse également les données pour les télécharger et les envoyer. Microsoft a été surpris à le faire plusieurs fois, mais je n'ai pas vu de cas documenté dans le cas d'Apple.

Foliovision
la source
1
Je pense une chose que nous devrions considérer est que peut - être storedownloaddest la décompression des données de paquet d'une manière très intensive informatiquement. Il n'y a pas beaucoup de raisons à l'heure actuelle de soupçonner quelque chose de particulièrement pervers
Steven Lu
Désolé, vous en avez réellement parlé. donc je veux dire que je pense que la chose la plus plausible est que cela a quelque chose à voir avec la décompression de fichier.
Steven Lu
1
Steven, même la décompression n'a pas de sens sur la période d'un téléchargement long (la décompression a généralement lieu à la fin du téléchargement). Seul le cryptage a du sens. Je pense que c’est une situation semblable à celle où le code n’a jamais été optimisé correctement (la citation Ars Technica montre clairement à quel point Apple est en train de réparer les routines OS X de base, même pour les utilisateurs, bien plus central que le téléchargement en magasin - ce qui ne devrait pas être le cas. faire partie intégrante de l'expérience Mac totale de tout utilisateur non testeur).
Foliovision
Cela n'a aucun sens qu'ils lui aient donné la priorité sur les tâches utilisateur normales. En cours d'exécution, xcode se construit beaucoup plus lentement sur les macs les plus lents. 5 minutes tournant à 20 minutes lentes, pas juste un peu plus lent.
Lassi Kinnunen
8

vient de le tuer dans le terminal ;-) ... prenant 1,5 Mo / s de mon haut débit lent

killall storedownloadd
Thomas Webb
la source
Donc, vous n'obtiendrez pas les mises à jour logicielles ... cela ne me semble pas être une solution.
Calimo