Por que os downloads (storedownloadd) da Mac App Store consomem tanta CPU?


52

Eu notei isso frequentemente com downloads grandes, como atualizações do Xcode e atualizações do OS X e esse tipo de coisa.

Basicamente, vemos isso por quanto tempo leva para o download prosseguir:

insira a descrição da imagem aqui

Hoje (atualmente) estou baixando o Xcode 7.2.1.

Você pode ver o storagedownloadd parece estar atrelando a um núcleo inteiro, e cerca de 30% deste trabalho é tratado pelo kernel.

O que me deixa intrigado é o que é esse "trabalho"? Por que ele precisa fazer esse trabalho? Qual a quantidade de processamento que ele poderia estar fazendo, porque descriptografar um fluxo a poucos megabytes por segundo não requer tantos recursos. Eu poderia estar baixando um arquivo grande como esse usando centenas de conexões pela Internet e executando verificações de integridade (com um protocolo como o bittorrent) e ele não chegaria nem perto do que está acontecendo aqui com o uso de recursos.


11
Para quem não precisa de atualizações para baixar automaticamente e quer apenas diminuir o uso da CPU, vá para Apple Menu -> Preferências do sistema -> App Store e desmarque a opção "Baixar as novas atualizações disponíveis em segundo plano" (El Capitan ) e, em seguida, reinicie o computador.
— rakslice

Respostas:


30

Hoje ocorreu o mesmo problema ao atualizar o XCode: storedownloaddatribui um núcleo de CPU por 20 minutos.

Tentei invadir o arquivo armazenadosdownloadd com um depurador e vi alguns rastreamentos de pilha muito longos e muito tempo gasto lá dentro Security::CodeSigning.

Suspeito que esteja verificando recursivamente as assinaturas digitais de muitos arquivos minúsculos, um por um. Não faço ideia por que isso faria isso em vez de verificar o pacote inteiro enquanto ele está sendo baixado. Eu também vejo muita manipulação de cordas por dentro Security_CodeSigning::RequirementLexer::RequirementLexer.

O storedownloaddque quer que seja , é muito lento!


Como você conseguiu ver o conteúdo do rastreamento de pilha? (Isso geralmente não requer símbolos de depuração?) Você usou o Xcode para depurar o arquivo armazenadosdownloadd? Instrumentos? Como você faz isso?
— Steven Lu

@StevenLu Sim, eu usei o Xcode. Eu não acho que tenho símbolos de depuração. Os nomes das funções provavelmente vieram das bibliotecas compartilhadas que declaram essas funções.
— Navin

11
Isso é legal, no entanto. Eu deveria tentar fazer isso com mais frequência. Obrigado
— Steven Lu

2
está fazendo isso ANTES do início do download ... por isso, se verificar a assinatura do código, ele fará isso nos arquivos locais. talvez esteja verificando a integridade de toda a instalação local do xcode antes do download?
— user2707001

11
está fazendo isso por mim agora quando há atualizações para serem baixadas, mas ainda não as está baixando. torna tudo limítrofe inutilizável. acabei de matá-lo no monitor de atividades e concluí minhas compilações para o dia mais rapidamente.
— Lassi Kinnunen

11

O uso da CPU é causado tanto pela codificação superficial quanto pela criptografia / descompactação. Os engenheiros tornaram-se muito descuidados com nossa CPU na era dos notebooks quad core com oito núcleos virtuais.

Alguém deve perseguir a Apple para otimizar a storedownloaddrotina. Considerando que nós tivemos que colocar-se com a rede quebrada por mais um ano até que a Apple substituiu o quebrado por design discoverydcom mDNSresponder.

Pensamentos mais sombrios podem sugerir que a loja também está compactando dados para upload e envio. A Microsoft foi flagrada fazendo isso muitas vezes, mas não vi um caso documentado no caso da Apple.


11
Eu acho que uma coisa que devemos considerar é que talvez storedownloaddesteja descompactando os dados do pacote de uma maneira realmente computacional. Não há muito motivo, neste momento, nada suspeito particularmente nefasto
— Steven Lu

Desculpe, você realmente mencionou. então quero dizer que acho que a coisa mais plausível é que isso tem algo a ver com descompactação de arquivos.
— Steven Lu

11
Steven, mesmo a descompressão não faz sentido durante o período de um download longo (a descompressão geralmente ocorre no final de um download). Somente criptografia faz sentido. Eu acho que é uma situação como o discoveryd, em que o código nunca foi otimizado adequadamente (a citação da Ars Technica mostra claramente como a Apple está por trás da correção de rotinas principais do OS X, até a mais importante para a experiência do usuário do que o download da loja - o que não deveria fazer parte da experiência total de Mac de qualquer usuário que não seja testador).
— Foliovision 16/03/19

Não faz sentido que eles tenham priorizado as tarefas normais do usuário. A execução faz com que o xcode construa muito mais lentamente nos macs mais lentos. 5 minutos passando para 20 minutos devagar, não apenas um pouco mais lento.
— Lassi Kinnunen

8

acabei de matar no terminal ;-) ... tirando 1.5MB / s da minha banda larga lenta

killall storedownloadd

Então você não receberá as atualizações de software ... não me parece uma solução.
— Calimo
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.