55 votos

¿Por qué las descargas (storedownloadd) de la Mac App Store consumen tanta CPU?

Me he dado cuenta de esto a menudo con grandes descargas como actualizaciones de Xcode y actualizaciones de OS X y ese tipo de cosas.

Básicamente vemos esto durante el tiempo que tarda la descarga:

enter image description here

Hoy (actualmente) estoy descargando Xcode 7.2.1.

Se puede ver que storedownloadd parece estar pegando un núcleo entero, y alrededor del 30% de este trabajo es manejado por el kernel.

Lo que me desconcierta es ¿qué es ese "trabajo"? ¿Por qué tiene que hacer este trabajo? ¿Qué cantidad de procesamiento podría estar haciendo, porque descifrar un flujo a unos pocos megabytes por segundo no requiere tantos recursos? Yo podría estar descargando un archivo grande como este usando cientos de conexiones a través de Internet y ejecutando comprobaciones de integridad en él (con un protocolo como bittorrent) y no se acercaría ni de lejos a lo que está ocurriendo aquí con el uso de recursos.

1 votos

Para quien no necesite que las actualizaciones se descarguen automáticamente y sólo quiera hacer desaparecer este uso de la CPU, vaya al Menú Apple -> Preferencias del Sistema -> App Store y desmarque la opción "Descargar las nuevas actualizaciones disponibles en segundo plano" (El Capitán) y luego reinicie el ordenador.

33voto

Navin Puntos 146

Me encontré con el mismo problema hoy al actualizar XCode: storedownloadd fija un núcleo de la CPU durante 20 minutos.

Intenté entrar en storedownloadd con un depurador y vi algunos rastros de pila realmente largos y un montón de tiempo invertido dentro de Security::CodeSigning .

Sospecho que está verificando recursivamente las firmas digitales de un montón de pequeños archivos uno por uno. No tengo ni idea de por qué haría eso en lugar de verificar todo el paquete mientras se descarga. También veo un montón de manipulación de cadenas dentro de Security_CodeSigning::RequirementLexer::RequirementLexer .

Lo que sea storedownloadd sí lo hace, es demasiado lento.

0 votos

¿Cómo has podido ver el contenido del stack trace? (¿No requiere eso generalmente símbolos de depuración?) ¿Usaste Xcode para depurar storedownloadd? ¿Instrumentos? ¿Cómo se hace eso?

0 votos

@StevenLu Sí, he utilizado Xcode. Creo que no tengo símbolos de depuración. Los nombres de las funciones probablemente vinieron de las bibliotecas compartidas que declaran esas funciones.

1 votos

Sin embargo, eso es genial. Debería intentar hacerlo más a menudo. Gracias

11voto

Foliovision Puntos 31

El uso de la CPU se debe tanto a la codificación descuidada como al cifrado/descompresión. Los ingenieros se han vuelto muy descuidados con nuestra CPU en la era de los portátiles de cuatro núcleos con ocho núcleos virtuales.

Alguien debería perseguir a Apple para que optimice el storedownloadd de rutina. Teniendo en cuenta que tuvimos que soportar red rota desde hace más de un año hasta que Apple reemplazó el roto por el diseño discoveryd con mDNSresponder .

Pensamientos más oscuros podrían sugerir que la tienda también está comprimiendo los datos para cargarlos y enviarlos. Microsoft fue atrapado haciendo esto muchas veces pero no he visto un caso documentado en el caso de Apple.

1 votos

Creo que una cosa que debemos considerar es que tal vez storedownloadd es descomprimiendo paquete de datos de una manera realmente intensiva en términos computacionales. No hay muchas razones en este momento para sospechar algo particularmente nefasto

0 votos

Lo siento, de hecho lo mencionaste. por lo que quiero decir que creo que lo más plausible es que esto tenga algo que ver con la descompresión de archivos.

1 votos

Steven, incluso la descompresión no tiene sentido durante el periodo de una descarga larga (la descompresión suele producirse al final de la descarga). Sólo la codificación tiene sentido. Creo que es una situación como la de discoveryd en la que el código nunca se ha optimizado adecuadamente (la cita de Ars Technica muestra claramente lo atrasado que está Apple en la fijación de las rutinas básicas de OS X, incluso una mucho más central para la experiencia del usuario que la descarga de la tienda - que no debería ser una parte tan grande de la experiencia total de cualquier usuario de Mac que no sea probador).

8voto

Romuald Brunet Puntos 101

Lo acabo de matar en el terminal ;-) ...tomando 1.5MB/s de mi lenta banda ancha

killall storedownloadd

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X