Điểm:-1

Làm cách nào để CPU của tôi chạy ở tốc độ tối đa bằng cách phá vỡ quy mô CPU?

lá cờ sa

Tôi đang chạy CentOS 7 (7.9.2009) (kernel 3.10.0-1160.49.1.el7.x86_64) trên một máy tính xách tay khá cũ (Lenove T61) với CPU lõi kép (CPU Intel(R) Core(TM)2 Duo T7300 @ 2.00GHz). Trình điều khiển để mở rộng quy mô CPU là acpi-cpufreq và khi bật hiệu suất thống đốc, tôi có thể để CPU chạy ở tốc độ CPU tối đa như được liệt kê trong /sys/thiết bị/hệ thống/cpu/cpufreq/chính sách0/cpuinfo_max_freq, và quan sát điều này bằng cách thực hiện:

$ grep -i mhz /proc/cpuinfo 
cpuMhz : 2001.000
cpuMhz : 2001.000

và nó ổn định ở tốc độ này. Tôi có thể xác minh điều này bằng cách thực hiện:

$ mèo /sys/thiết bị/hệ thống/cpu/cpu0/cpufreq/scaling_cur_freq
2001000
$ sudo mèo /sys/thiết bị/hệ thống/cpu/cpu0/cpufreq/cpuinfo_cur_freq 
2001000

Tôi đang cố gắng chạy ở tần suất không đổi cho chương trình thời gian thực đếm số chu kỳ xung nhịp của CPU để tính thời gian. Tôi đã biên dịch một nhân tùy chỉnh (5.10.83-rt58) để hỗ trợ một phần cứng không được hỗ trợ trong nhân CentOS mặc định (3.10.0). Thay đổi quy mô CPU thường làm cho tần số xung nhịp thay đổi, nhưng tôi nhận thấy rằng tôi có thể đạt được tần số ổn định bằng cách đặt tất cả các giá trị trong /sys/devices/system/cpu/cpu*/cpuidle/state*/disable đến 1. Khi tôi kiểm tra tần số:

$ grep -i mhz /proc/cpuinfo 
cpuMhz: 1995.106
cpuMhz: 1995.106

nó không hoàn toàn ở 2001MHz như đã thấy với nhân 3.10.0. Lệnh sau xác minh điều này:

$ mèo /sys/thiết bị/hệ thống/cpu/cpu0/cpufreq/scaling_cur_freq
1995106

Nhưng đầu ra của:

$ sudo mèo /sys/thiết bị/hệ thống/cpu/cpu0/cpufreq/cpuinfo_cur_freq
2001000

khác. Câu hỏi của tôi là có ai biết tại sao CPU của tôi không chạy ở tần số tối đa (2001MHz) mà lại thấp hơn ~6MHz không? Có điều gì thay đổi mạnh mẽ về tỷ lệ cpu giữa kernel 3.10 và 5.10 không?

Paul Gear avatar
lá cờ cn
Câu hỏi này tốt hơn nên hỏi trên [Super User](https://superuser.com/).
Điểm:1
lá cờ cn

Tôi đang cố gắng chạy với tần suất không đổi cho một chương trình thời gian thực đếm số chu kỳ xung nhịp của CPU để tính thời gian.

Cách tiếp cận này có vấn đề, vì CPU mở rộng hiệu suất hiện đại sẽ không chạy ở một tần số. Số chu kỳ chính xác của chúng phụ thuộc vào điều kiện nhiệt độ. Có thể ổ cắm của bạn bị lỗi nhẹ. Và hạt nhân tùy chỉnh của bạn có thể có sự khác biệt tùy ý so với Red Hat, vì vậy có thể nó (hoặc vi mã) chọc CPU theo những cách khác nhau.

Sử dụng các API hẹn giờ được cung cấp. Linux thời gian thực vạch ra một ứng dụng tuần hoàn cơ bản. Lưu ý việc sử dụng clock_nanosleep() với CLOCK_MONOTONIC.

Tham chiếu lập trình thời gian của ESR là một lịch sử đàng hoàng về lý do tại sao có vài chục chức năng thời gian.


Để điều chỉnh bộ điều chỉnh CPU và các điều chỉnh khác vì lý do độ trễ và nguồn điện, hãy xem điều chỉnh. Ví dụ: hồ sơ hiệu suất độ trễ.

Mitch avatar
lá cờ sa
Cảm ơn vì câu trả lời, rất sâu sắc, nhưng "các CPU mở rộng hiệu suất hiện đại sẽ không chạy ở một tần số" là không đúng, tôi có thể khiến CPU của mình chạy ở mức 2001 MHz không đổi bằng kernel 3.10. Tôi có các máy khác chạy CentOS7 (CPU Intel Core I5) và tôi có thể lấy kernel 3.10 để chạy CPU với tần suất không đổi. Tôi cảm thấy có thể có một cờ hạt nhân hoặc thứ gì đó cho việc này mà tôi không biết vì tôi không phải là chuyên gia về hạt nhân.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.