Nhiệm vụ chuyên sâu CPU đa luồng điều chỉnh cách CPU trước khi giới hạn nhiệt độ


21

Tôi đã viết một tác vụ luồng rất chuyên sâu cho CPU, hoạt động như mong đợi trên lõi tứ MacBook Pro 2012 của tôi. Tôi xoay nó lỏng lẻo với 20 luồng và nhiệt độ lên tới khoảng 100 ° C như được đo bằng Intel Power Utility với điều chỉnh tối thiểu.

Mang cùng một tệp chương trình và dữ liệu về MacBook Pro 13 "2016 của tôi với một máy lõi kép và khởi động nó, tôi hy vọng rằng nó cũng sẽ giữ tốc độ 3,3-3,4 GHz cho đến khi nhiệt độ đạt gần mốc 100 ° C. Lệnh trên cho thấy nhiệm vụ ở mức 350% (mỗi lõi 2 luồng), nhưng tần số CPU bị cắt xuống còn 1,6-1-8 GHz với nhiệt độ chỉ ở 60 ° C hoặc hơn với các quạt chết lặng. Nếu tôi bắt đầu 4 tách rời Các tác vụ CPU đơn luồng, máy hoạt động như mong đợi với tốc độ 3,3-3,4 GHz cho đến khi chạm tới 100 ° C và quạt bị hỏng. Câu hỏi đặt ra là tại sao CPU của tôi bị điều chỉnh?

Cả hai máy đều được cập nhật và chạy cùng một phiên bản gcc. Nếu tôi thậm chí lấy nhị phân từ máy làm việc và đưa nó vào máy Mac 2016, thì nó cũng có vấn đề tương tự.

Nếu tôi chạy 3 hoặc 4 luồng CPU đơn để máy hoạt động hết tốc độ, sau đó khởi động chương trình luồng, nó cũng làm chậm tần số.

Cả hai máy đều có RAM 16 GB.

Chỉnh sửa

Sau khi chơi xung quanh với mã, tôi nghi ngờ rằng nó đang bị điều chỉnh khi một tác vụ tạo quá nhiều luồng. Trong chương trình này, tôi lấy từng bản ghi tôi đọc và tạo một chủ đề cho nó. Tôi chỉ để 20 chủ đề đi cùng một lúc để không có lúc nào có hơn 21 chủ đề, nhưng có 14.400.000 hồ sơ được xử lý trong vòng 30 phút hoặc mỗi hồ sơ sẽ được xử lý bởi một luồng riêng biệt.

Tôi đã tạo ra một chương trình pthread tầm thường, hút thời gian CPU và thiết lập 10 trong số chúng đang chạy. Máy tính xách tay có vấn đề chạy và làm nóng đến 95C mà không gặp vấn đề gì.

Tôi đoán tôi sẽ viết lại mã của mình để sử dụng lại cùng một chủ đề thay vì phá hủy chúng và khởi động lại chúng.

Cập nhật 5/13/17

Sau vài giờ làm việc, bây giờ nó chỉ tạo ra n chủ đề và chỉ sử dụng lại chúng, điều đó không giúp ích gì. Khác với nhiệt độ CPU, điều gì sẽ khiến máy này giảm tốc?


1
Tôi thích câu hỏi này! Làm thế nào về việc chạy một nhiệm vụ đa luồng cụ thể khác nhau? Tôi khuyên bạn nên chạy một cái gì đó như tác vụ ffmpeg (trên video 1080p hoặc 4K, để đảm bảo nó sử dụng tất cả các tài nguyên CPU có sẵn) và xem liệu nó có giảm bớt không. Điều này có thể thu hẹp vấn đề xuống một trong hai: chương trình của bạn trong máy đó hoặc tất cả các chương trình đa luồng trên máy đó
NoahL

1
Nếu tôi chạy điểm chuẩn Cinebench R15, nó sử dụng các tác vụ theo luồng và chạy như mong đợi, nhiệt độ lên tới khoảng 100C và các quạt sẽ xuất hiện. Intel Power Utility cho thấy tần số CPU vẫn ở mức gần 3,3Ghz. Vì vậy, nó không giống như một vấn đề phần cứng. Tất cả các mã chỉ là mã C không có gì lạ mắt bằng cách sử dụng p_threads và khóa Mutex tối thiểu. Chương trình này chủ yếu là xử lý chuỗi DNA với một luồng kéo theo thứ gì đó như 16 gig dữ liệu và chuyển nó đến n luồng riêng lẻ để xử lý số lượng lớn.
markatlnk

1
Có vẻ như các chương trình khác có thể đạt đến mức trần mà bạn đang hướng tới? Nếu vấn đề là từ mã đặc biệt của bạn, chúng tôi có thể cần thêm thông tin về mã đó. Mặc dù, dữ liệu của bạn được xử lý ở đâu? Đối ngoại? Báo cáo kernel_task có bao nhiêu công việc? Cảm biến nhiệt độ khác?
LаngLаngС

1
CPU của bạn có 8 lõi logic, không phải 4, vì vậy 4 luồng sẽ hiển thị 50% tổng mức sử dụng CPU. Tôi tự hỏi nếu điều đó ảnh hưởng đến ước tính tải hệ thống của bạn.
sudo

Tôi không biết nếu bạn muốn trải qua rắc rối, nhưng bạn có thể thử gỡ lỗi ở cấp kernel bằng kernel gỡ lỗi. Bạn có thể lấy nó nếu bạn nhấp vào tải xuống nhiều hơn trên trang web apple dev.
dùng3052786

Câu trả lời:


1

Đây có thể là một khoảng thời gian dài, nhưng có lẽ sự khác biệt về hiệu năng lõi đơn và / hoặc hiệu năng bộ đệm giữa các gói cpu 2012 và 2016 đủ lớn để các lõi bị thiếu dữ liệu và giảm tốc cho đến khi chúng có thể hoạt động trở lại?

Tôi đoán như vậy bởi vì bạn chỉ ra đủ các quy trình đơn luồng có thể chạy tốc độ tối đa trên tất cả các lõi và một chương trình đa luồng đơn giản có thể chạy tốc độ tối đa trên tất cả các lõi.

Điều đó khiến tôi nghĩ rằng có một cái gì đó trong thiết kế chương trình của khối lượng công việc thực của bạn so với khối lượng công việc đa luồng thử nghiệm không cho phép CPU hoạt động mọi lúc


0

Phần mở rộng kernel / System / L Library / Extensions / AppACACIPIPl platform.kext kiểm soát rất nhiều biện pháp bảo vệ nhiệt độ và CPU. Rõ ràng, nó đã được biên dịch trên hệ thống của bạn, nhưng nó có thể có sẵn trên https://opensource.apple.com (Tôi không thể tìm thấy nó, nhưng tôi chỉ xem nhanh). Tôi sẽ không ngạc nhiên nếu Apple có các cài đặt rất thận trọng về khả năng của CPU.


3
AFAIK Apple kexts không phải là nguồn mở. (Kỳ lạ?) Tài nguyên tốt nhất cho thông tin về điều này là cộng đồng Hackintoshing vì nhu cầu tiêm trình điều khiển.
JMY1000

Không có gì lạ cả! Các tinkerers đưa ra lời khuyên tốt nhất bởi vì họ biết nhiều hơn những gì họ nên làm. Đối với các cài đặt CPU bảo thủ, hãy nhớ rằng MBP có tản nhiệt tuyệt vời cho hiệu năng bùng nổ, nhưng không quá tuyệt vời cho các chu kỳ duy trì. Rất có khả năng vấn đề này là do Apple muốn ngăn chặn trước việc giữ cho đôi chân của bạn không bị nấu chín. Tôi đã nghe nói về một vài vụ kiện về điều đó với 2012MBP.
dùng1901982

0

Bất cứ khi nào os nhận ra các luồng là không thể đoán trước và mất kiểm soát, nó sẽ giảm tốc độ để duy trì sự ổn định của phần cứng và hệ thống, mô hình 2012 hoạt động khác đi và có thể bị khóa trong trường hợp xấu nhất. Đã xảy ra với tôi với kiểm soát chủ đề được thực hiện kém, lỗi của tôi. Chỉ không chạy nhiều chủ đề trên một lõi kép.


-2

Đã xảy ra với tôi với kiểm soát chủ đề được thực hiện kém, lỗi của tôi. Chỉ cần không chạy quá nhiều luồng trên CPU lõi kép.

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.