Tại sao các bản tải xuống (được tải xuống) từ Mac App Store lại tiêu tốn nhiều CPU như vậy?


52

Tôi đã nhận thấy điều này thường xuyên với các bản tải xuống lớn như cập nhật Xcode và cập nhật OS X và đại loại thế.

Về cơ bản, chúng tôi thấy điều này tuy nhiên mất nhiều thời gian để quá trình tải xuống được tiến hành:

nhập mô tả hình ảnh ở đây

Hôm nay (hiện tại) tôi đang tải Xcode 7.2.1.

Bạn có thể thấy archiveoadd dường như đang chốt toàn bộ lõi và khoảng 30% công việc này được xử lý bởi kernel.

Điều tôi bối rối là "công việc" này là gì? Tại sao nó cần phải làm công việc này? Lượng xử lý có thể có thể thực hiện được, bởi vì giải mã một luồng với tốc độ vài megabyte mỗi giây không đòi hỏi nhiều tài nguyên này. Tôi có thể tải xuống một tệp lớn như thế này bằng cách sử dụng hàng trăm kết nối qua internet và chạy kiểm tra tính toàn vẹn trên đó (với giao thức như bittorrent) và nó sẽ không tiếp cận bất cứ nơi nào gần với những gì xảy ra ở đây với việc sử dụng tài nguyên.


1
Đối với bất kỳ ai không cần cập nhật để tự động tải xuống và chỉ muốn làm cho việc sử dụng CPU này biến mất, hãy truy cập Apple Menu -> System Preferences -> App Store và bỏ chọn tùy chọn "Tải xuống các bản cập nhật mới có sẵn trong nền" (El Capitan ) và sau đó khởi động lại máy tính.
rakslice

Câu trả lời:


30

Gặp vấn đề tương tự ngày hôm nay khi cập nhật XCode: storedownloaddchốt lõi CPU trong 20 phút.

Tôi đã thử đột nhập vào archiveoadd với trình gỡ lỗi và thấy một số dấu vết ngăn xếp thực sự dài và rất nhiều thời gian bên trong Security::CodeSigning.

Tôi nghi ngờ rằng nó đang xác minh đệ quy các chữ ký số của rất nhiều tệp nhỏ từng cái một. Tôi không biết tại sao nó sẽ làm điều đó thay vì xác minh toàn bộ gói khi nó đang được tải xuống. Tôi cũng thấy rất nhiều thao tác chuỗi bên trong Security_CodeSigning::RequirementLexer::RequirementLexer.

storedownloaddthế nào đi nữa , nó quá chậm!


Làm thế nào bạn có thể thấy nội dung theo dõi ngăn xếp? (Điều đó thường không yêu cầu các biểu tượng gỡ lỗi?) Bạn có sử dụng Xcode để gỡ lỗi được lưu trữ không? Dụng cụ? Làm thế nào để bạn làm điều đó?
Steven Lu

@StevenLu Vâng, tôi đã sử dụng Xcode. Tôi không nghĩ rằng tôi có biểu tượng gỡ lỗi. Tên hàm có thể đến từ các thư viện dùng chung khai báo các hàm đó.
Navin

1
Đó là gọn gàng, mặc dù. Tôi nên cố gắng làm điều đó thường xuyên hơn. Cảm ơn
Steven Lu

2
nó đang làm điều đó TRƯỚC KHI quá trình tải xuống bắt đầu ... vì vậy nếu nó kiểm tra việc ký mã, thì nó sẽ thực hiện điều đó tại các tệp cục bộ. có lẽ nó đang kiểm tra tính toàn vẹn của toàn bộ cài đặt xcode cục bộ trước khi tải xuống?
user2707001

1
Bây giờ nó đang làm điều đó cho tôi khi có các bản cập nhật được tải xuống, nhưng nó chưa tải xuống. làm cho mọi thứ biên giới không thể sử dụng. chỉ cần giết nó trong trình giám sát hoạt động và giúp bản dựng của tôi hoàn thành nhanh hơn.
Lassi Kinnunen

11

Việc sử dụng CPU được gây ra bởi cả mã hóa cẩu thả và mã hóa / giải nén. Các kỹ sư đã trở nên rất bất cẩn với CPU của chúng tôi trong thời đại máy tính xách tay lõi tứ với tám lõi ảo.

Ai đó nên theo đuổi Apple xung quanh về việc tối ưu hóa storedownloaddthói quen. Xem xét rằng chúng tôi phải đưa lên với mạng bị hỏng trong hơn một năm cho đến khi Apple thay thế bị phá vỡ bởi thiết kế discoverydvới mDNSresponder.

Những suy nghĩ đen tối hơn có thể gợi ý rằng cửa hàng cũng đang nén dữ liệu để tải lên và gửi nó. Microsoft đã bị bắt gặp làm điều này nhiều lần nhưng tôi chưa thấy trường hợp nào được ghi lại trong trường hợp của Apple.


1
Tôi nghĩ rằng có một điều chúng ta nên xem xét là rằng có lẽ storedownloaddgiải nén dữ liệu gói trong một cách thực sự tính toán chuyên sâu. Tại thời điểm này không có nhiều lý do để nghi ngờ bất cứ điều gì đặc biệt bất chính
Steven Lu

Xin lỗi bạn thực sự đã đề cập đến nó. Vì vậy, tôi có ý nói rằng tôi nghĩ điều hợp lý nhất là điều này có liên quan đến giải nén tập tin.
Steven Lu

1
Steven, thậm chí giải nén không có ý nghĩa trong khoảng thời gian tải xuống dài (giải nén thường xảy ra vào cuối quá trình tải xuống). Chỉ mã hóa có ý nghĩa. Tôi nghĩ đó là một tình huống như Discoveryd, nơi mã chưa bao giờ được tối ưu hóa đúng cách (trích dẫn Ars Technica cho thấy rõ ràng phía sau Apple đang sửa chữa các thói quen OS X cốt lõi như thế nào, thậm chí còn tập trung vào trải nghiệm người dùng hơn là tải xuống cửa hàng - điều không nên là một phần lớn trong bất kỳ trải nghiệm Mac nào của người dùng không thử nghiệm).
Foliovision

Không có nghĩa là họ đã ưu tiên nó hơn các tác vụ người dùng thông thường. Nó chạy làm cho xcode làm cho nó xây dựng chậm hơn nhiều trên các máy Mac chậm hơn. 5 phút chuyển sang chậm 20 phút, không chỉ chậm hơn một chút.
Lassi Kinnunen

8

vừa giết nó trong thiết bị đầu cuối ;-) ... lấy 1,5 MB / giây từ băng thông rộng chậm của tôi

killall storedownloadd

Vì vậy, bạn sẽ không nhận được các bản cập nhật phần mềm ... không có vẻ là một giải pháp cho tôi.
Calimo
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.