55 votes

Pourquoi les téléchargements (storedownloadd) depuis le Mac App Store consomment-ils autant de CPU ?

J'ai souvent remarqué ce phénomène avec les gros téléchargements tels que les mises à jour de Xcode, les mises à jour d'OS X et ce genre de choses.

En fait, cela correspond au temps qu'il faut pour que le téléchargement se déroule :

enter image description here

Aujourd'hui (actuellement), je suis en train de télécharger Xcode 7.2.1.

Vous pouvez voir que storedownloadd semble chevaucher un noyau entier, et qu'environ 30% de ce travail est géré par le noyau.

Ce qui me laisse perplexe, c'est la nature de ce "travail". Pourquoi doit-il faire ce travail ? Quelle quantité de traitement peut-il 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 de ce type en utilisant des centaines de connexions sur Internet et en effectuant des contrôles d'intégrité (avec un protocole comme bittorrent), et l'utilisation des ressources serait loin de ressembler à ce qui se passe ici.

1 votes

Pour tous ceux qui n'ont pas besoin que les mises à jour soient téléchargées automatiquement et qui souhaitent simplement faire disparaître cette utilisation du processeur, allez dans le 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.

33voto

Navin Points 438

J'ai rencontré le même problème aujourd'hui lors de la mise à jour de XCode : storedownloadd bloque un cœur de CPU pendant 20 minutes.

J'ai essayé de pénétrer dans storedownloadd 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 récursivement les signatures numériques d'un grand nombre de petits fichiers, un par un. Je ne sais pas pourquoi il fait cela au lieu de vérifier l'ensemble du paquet au moment du téléchargement. Je vois aussi beaucoup de manipulations de chaînes de caractères dans Security_CodeSigning::RequirementLexer::RequirementLexer .

Quoi que storedownloadd fait, il est trop lent, bon sang !

0 votes

Comment avez-vous pu voir le contenu de la trace de la pile ? (Cela ne nécessite-t-il pas généralement des symboles de débogage ?) Avez-vous utilisé Xcode pour déboguer storedownloadd ? Les instruments ? Comment faites-vous cela ?

0 votes

@StevenLu Oui, j'ai utilisé Xcode. Je ne pense pas avoir de symboles de débogage. Les noms des fonctions proviennent probablement des bibliothèques partagées qui déclarent ces fonctions.

1 votes

C'est chouette, cependant. Je devrais essayer de faire ça plus souvent. Merci

11voto

Foliovision Points 933

L'utilisation du CPU est due à la fois à un codage peu soigné et au cryptage/décompression. Les ingénieurs sont devenus très négligents avec notre CPU à l'ère des ordinateurs portables à quatre cœurs avec huit cœurs virtuels.

Quelqu'un devrait courir après Apple pour qu'elle optimise l'interface de l'application storedownloadd routine. Considérant que nous avons dû supporter réseau en panne depuis plus d'un an jusqu'à ce qu'Apple remplace l'appareil cassé par un design discoveryd avec 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é pris à faire cela de nombreuses fois mais je n'ai pas vu de cas documenté dans le cas d'Apple.

1 votes

Je pense qu'une chose que nous devrions considérer est que peut-être storedownloadd est décompresser d'emballer des données de manière très intensive sur le plan informatique. Il n'y a pas beaucoup de raisons à ce stade de suspecter quelque chose de particulièrement infâme.

0 votes

Désolé, vous l'avez effectivement mentionné. Je voulais donc dire que je pense que la chose la plus plausible est que cela a quelque chose à voir avec la décompression des fichiers.

1 votes

Steven, même la décompression n'a pas de sens sur la période d'un long téléchargement (la décompression se produit généralement à la fin d'un téléchargement). Seul le cryptage a un sens. Je pense que c'est une situation comme discoveryd où le code n'a jamais été correctement optimisé (la citation d'Ars Technica montre clairement à quel point Apple est en retard dans la correction des routines de base d'OS X, même celles qui sont beaucoup plus centrales pour l'expérience utilisateur que le téléchargement en magasin - qui ne devrait pas être une si grande partie de l'expérience Mac totale d'un utilisateur non testeur).

8voto

Thomas Webb Points 81

Je viens de le tuer dans le terminal ;-) ...en prenant 1.5MB/s de ma bande passante lente.

killall storedownloadd

2 votes

Donc vous ne recevrez pas les mises à jour du logiciel... ça ne me semble pas être une solution.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X