Mengapa unduhan (tersimpan unduhan) dari Mac App Store mengkonsumsi banyak CPU?

52

Saya telah memperhatikan hal ini sering dengan unduhan besar seperti pembaruan Xcode dan pembaruan OS X dan hal semacam itu.

Pada dasarnya kami melihat ini untuk berapa banyak waktu yang diperlukan untuk mengunduh untuk melanjutkan:

masukkan deskripsi gambar di sini

Hari ini (saat ini) saya mengunduh Xcode 7.2.1.

Anda dapat melihat tersimpan unduhan tampaknya mematok seluruh inti, dan sekitar 30% dari pekerjaan ini ditangani oleh kernel.

Yang membuat saya bingung adalah apa "pekerjaan" ini? Mengapa perlu melakukan pekerjaan ini? Berapa jumlah pemrosesan yang mungkin dilakukan, karena mendekripsi aliran pada beberapa megabyte per detik tidak memerlukan sumber daya sebanyak ini. Saya bisa mengunduh file besar seperti ini menggunakan ratusan koneksi melalui internet dan menjalankan pemeriksaan integritas di atasnya (dengan protokol seperti bittorrent) dan tidak akan mendekati apa pun yang dekat dengan apa yang terjadi di sini dengan penggunaan sumber daya.

Steven Lu
sumber
1
Bagi siapa pun yang tidak memerlukan pembaruan untuk mengunduh secara otomatis dan hanya ingin membuat penggunaan CPU ini hilang, buka Apple Menu -> System Preferences -> App Store dan hapus centang opsi "Unduh pembaruan yang baru tersedia di latar belakang" (El Capitan ) lalu nyalakan kembali komputer.
rakslice

Jawaban:

30

Mengalami masalah yang sama hari ini ketika memperbarui XCode: storedownloaddmematok inti CPU selama 20 menit.

Saya mencoba membobol tersimpan unduhan dengan debugger dan melihat beberapa jejak tumpukan yang sangat panjang dan banyak waktu yang dihabiskan di dalam Security::CodeSigning.

Saya menduga bahwa itu secara rekursif memverifikasi tanda tangan digital dari banyak file kecil satu-per-satu. Saya tidak tahu mengapa itu akan melakukan itu daripada memverifikasi seluruh paket saat sedang diunduh. Saya juga melihat banyak manipulasi string di dalamnya Security_CodeSigning::RequirementLexer::RequirementLexer.

Apa pun yang storedownloaddterjadi, itu terlalu lambat!

Navin
sumber
Bagaimana Anda bisa melihat konten jejak tumpukan? (Bukankah itu umumnya memerlukan simbol debug?) Apakah Anda menggunakan Xcode untuk men-debug unduhan tersimpan? Instrumen? Bagaimana kamu melakukannya?
Steven Lu
@ SevenLu Ya, saya menggunakan Xcode. Saya rasa saya tidak memiliki simbol debug. Nama fungsi mungkin berasal dari pustaka bersama yang menyatakan fungsi tersebut.
Navin
1
Tapi itu rapi. Saya harus mencoba melakukannya lebih sering. Terima kasih
Steven Lu
2
ia melakukan hal itu SEBELUM unduhan dimulai ... jadi jika ia memeriksa penandatanganan kode, ia melakukannya pada file lokal. mungkin sedang memeriksa integritas dari seluruh instalasi xcode lokal sebelum mengunduh?
user2707001
1
itu melakukannya untuk saya sekarang ketika ada pembaruan untuk diunduh, tetapi belum mengunduhnya. membuat semua garis batas tidak dapat digunakan. baru saja membunuhnya di monitor aktivitas dan membangun saya untuk hari itu dilakukan lebih cepat.
Lassi Kinnunen
11

Penggunaan CPU disebabkan oleh pengkodean yang ceroboh dan enkripsi / dekompresi. Insinyur menjadi sangat ceroboh dengan CPU kami di zaman notebook quad core dengan delapan core virtual.

Seseorang harus mengejar Apple tentang mengoptimalkan storedownloaddrutinitas. Mengingat bahwa kita harus memasang dengan jaringan yang rusak selama lebih dari setahun sampai Apple menggantikan rusak oleh desain discoveryddengan mDNSresponder.

Pikiran yang lebih gelap mungkin menyarankan bahwa toko juga mengompresi data untuk diunggah dan mengirimkannya. Microsoft sering tertangkap basah melakukan hal ini tetapi saya belum melihat kasus yang terdokumentasi dalam kasus Apple.

Foliovision
sumber
1
Saya pikir satu hal yang harus kita pertimbangkan adalah bahwa mungkin storedownloaddadalah mengompresi data paket dengan cara yang benar-benar intensif secara komputasi. Tidak ada banyak alasan pada saat ini untuk mencurigai sesuatu yang sangat jahat
Steven Lu
Maaf Anda benar-benar menyebutkannya. jadi saya bermaksud mengatakan bahwa saya pikir hal yang paling masuk akal adalah bahwa ini ada hubungannya dengan dekompresi file.
Steven Lu
1
Steven, bahkan dekompresi tidak masuk akal selama periode pengunduhan yang lama (dekompresi biasanya terjadi pada akhir pengunduhan). Hanya enkripsi yang masuk akal. Saya pikir ini adalah situasi seperti discoveryd di mana kode tidak pernah dioptimalkan dengan benar (kutipan Ars Technica dengan jelas menunjukkan betapa di balik Apple dalam memperbaiki rutinitas inti OS X, bahkan yang jauh lebih sentral dari pengalaman pengguna daripada mengunduh di toko - yang seharusnya tidak jadilah bagian besar dari total pengalaman pengguna Mac yang bukan pengguna tester).
Foliovision
Tidak masuk akal bahwa mereka memberikan prioritas lebih dari tugas pengguna normal. Menjalankannya membuat xcode membuatnya lebih lambat pada mac yang lebih lambat. 5 menit berubah menjadi 20 menit lambat, tidak hanya sedikit lebih lambat.
Lassi Kinnunen
8

baru saja membunuhnya di terminal ;-) ... mengambil 1,5MB / s dari broadband lambat saya

killall storedownloadd
Thomas Webb
sumber
Jadi Anda tidak akan mendapatkan pembaruan perangkat lunak ... tidak terdengar seperti solusi bagi saya.
Calimo