Perché i download (storedownloadd) dal Mac App Store consumano così tanta CPU?

48

L'ho notato spesso con download di grandi dimensioni come aggiornamenti Xcode e aggiornamenti OS X e cose del genere.

Fondamentalmente vediamo questo per quanto tempo ci vuole perché il download proceda:

Oggi(attualmente)stoscaricandoXcode7.2.1.

Puoivederechestoredownloaddsembrapegginguninterocoreecircail30%diquestolavoroègestitodalkernel.

Ciòdicuisonoperplessoèchecos'èquesto"lavoro"? Perché ha bisogno di fare questo lavoro? Che quantità di elaborazione potrebbe fare, perché decrittografare un flusso a pochi megabyte al secondo non richiede molte risorse. Potrei scaricare un file di grandi dimensioni come questo usando centinaia di connessioni su Internet e facendo controlli di integrità su di esso (con un protocollo come bittorrent) e non si avvicinerebbe a nulla di ciò che sta accadendo qui con l'uso delle risorse.

    
posta Steven Lu 03.02.2016 - 19:42
fonte

3 risposte

28

Si è rannicchiato nello stesso problema oggi durante l'aggiornamento di XCode: storedownloadd pegs un core della CPU per 20 minuti.

Ho provato a entrare in storedownloadd con un debugger e ho visto alcune tracce di stack davvero lunghe e un sacco di tempo trascorso all'interno di Security::CodeSigning .

Sospetto che stia verificando ricorsivamente le firme digitali di molti piccoli file uno per uno. Non ho idea del perché lo farebbe invece di verificare l'intero pacchetto mentre viene scaricato. Vedo anche molte manipolazioni di stringhe all'interno di Security_CodeSigning::RequirementLexer::RequirementLexer .

Qualunque cosa sia storedownloadd , è troppo dannatamente lento!

    
risposta data 13.04.2016 - 11:03
fonte
11

L'utilizzo della CPU è causato sia dalla codifica che dalla crittografia / decompressione. Gli ingegneri sono diventati molto negligenti con la nostra CPU nell'era dei notebook quad core con otto core virtuali.

Qualcuno dovrebbe inseguire Apple sull'ottimizzazione della routine storedownloadd . Considerando che abbiamo dovuto sopportare reti interrotte per oltre un anno fino a quando Apple non ha sostituito il design rotto discoveryd con mDNSresponder .

I pensieri più scuri potrebbero suggerire che il negozio sta anche comprimendo i dati per il caricamento e l'invio. Microsoft era preso in giro facendo questo molte volte ma non ho visto un caso documentato nel caso di Apple.

    
risposta data 16.03.2016 - 00:35
fonte
7

l'ho appena ucciso nel terminale ;-) ... prendendo 1,5 MB / s dalla mia banda larga lenta

killall storedownloadd
    
risposta data 14.09.2016 - 12:05
fonte

Leggi altre domande sui tag