Linux: Tại sao tần số CPU dao động khi sử dụng bộ điều chỉnh hiệu suất?


8

Tôi đang sử dụng máy Debian 8 amd64 để đo điểm chuẩn. Trong quá trình thử nghiệm, tôi muốn CPU hoạt động ở tần số cố định (tốt nhất là tối đa có thể). Điều này sẽ loại trừ tốc độ xung nhịp của CPU như là một nguồn thay đổi trong kết quả.

Sau khi đọc, có vẻ như điều cần làm là thay đổi bộ điều khiển CPU thành performance, được mô tả ở đây trong tài liệu nhân Linux :

"Hiệu suất" của bộ điều khiển CPUfreq đặt CPU tĩnh ở tần số cao nhất trong các biên của scaling_min_freq và scaling_max_freq.

Đáng buồn thay, chi tiết thêm về scaling_min_freqscaling_max_freqkhông được cung cấp. Hy vọng nó không thành vấn đề, vì tần số CPU được sử dụng là giá trị tối đa của khoảng thời gian.

Vì vậy, tôi đã kích hoạt thống đốc này bằng cách sử dụng cpufreq-set:

$ cat / sys / thiết bị / hệ thống / cpu / cpu * / cpufreq / scaling_gocateor
hiệu suất
hiệu suất
hiệu suất
hiệu suất

Và để có biện pháp tốt, tôi cũng đã tắt chế độ turbo boost trong bios:

$ cat / sys / thiết bị / hệ thống / cpu / intel_pstate / no_turbo
1

Dựa trên mô tả ở trên của bộ điều chỉnh hiệu năng, tôi sẽ không mong đợi sự biến động của tốc độ xung nhịp CPU. Tuy nhiên, nếu tôi liên tục chạy cpufreq-info, tôi thấy tốc độ đồng hồ dao động:

$ cpufreq-thông tin | grep 'CPU hiện tại'
  tần số CPU hiện tại là 4,00 GHz.
  tần số CPU hiện tại là 3,99 GHz.
  tần số CPU hiện tại là 4,00 GHz.
  tần số CPU hiện tại là 4,00 GHz.
$ cpufreq-thông tin | grep 'CPU hiện tại'
  tần số CPU hiện tại là 4,00 GHz.
  tần số CPU hiện tại là 4,00 GHz.
  tần số CPU hiện tại là 4,00 GHz.
  tần số CPU hiện tại là 3,96 GHz.
$ cpufreq-thông tin | grep 'CPU hiện tại'
  tần số CPU hiện tại là 4,00 GHz.
  tần số CPU hiện tại là 4,00 GHz.
  tần số CPU hiện tại là 4,00 GHz.
  tần số CPU hiện tại là 3,94 GHz.
$ cpufreq-thông tin | grep 'CPU hiện tại'
  tần số CPU hiện tại là 4,01 GHz.
  tần số CPU hiện tại là 4,00 GHz.
  tần số CPU hiện tại là 4,00 GHz.
  tần số CPU hiện tại là 3,98 GHz.

Là sự biến động này do phần cứng, BIOS, hạt nhân hoặc một số yếu tố khác? Có cách nào để đặt tần số CPU sao cho nó không dao động không?


Bạn đang sử dụng loại phần cứng máy chủ nào? Các thiết lập hiệu suất CPU và CPU của phần cứng đó là gì?
ewwhite

Đây thực sự là một máy tính để bàn có CPU i7. Tôi đã tải lên dmesg và cpuinfo tại đây: gist.github.com/vext01/73eea539eb041acf784b . Re: cài đặt bios, tôi sẽ cần phải đi đến máy và xem. Có bất kỳ thiết lập cụ thể bạn có trong tâm trí?
Edd Barrett

Đó không phải là biến động "nhiều" so với biến thể pstate bình thường ... :)
rogerdpack

Câu trả lời:


9

Sau một số thử nghiệm, tôi nghĩ rằng tôi có thể trả lời câu hỏi của riêng tôi.

Như đã đề cập trong chủ đề này , trên một số phần cứng của Intel, có hai cách để quản lý tần số CPU:

  • Sử dụng pstate.
  • Sử dụng ACPI thường xuyên.

Khi pstate được sử dụng, BIOS có một số tiếng nói về tốc độ xung nhịp và dường như đây là nguồn gốc của sự dao động.

Bạn có thể buộc tắt pstate bằng cách nối thêm intel_pstate=disablevào các đối số kernel (chỉnh sửa /etc/default/grubvà thêm đối số vào GRUB_CMDLINE_LINUX_DEFAULT. Cuối cùng chạy sudo update-grub).

Sau khi làm điều này, đầu ra của giao cpufreq-infodiện trông khác đi nhiều và tôi cũng nhận thấy rằng một bộ các bộ điều khiển CPU khác sẽ có sẵn (ví dụ: ondemandhiện có sẵn).

Quan trọng nhất, sau khi cài đặt bộ điều chỉnh thành performance, tốc độ đồng hồ hiện đã được cố định (trong trường hợp của tôi là 4,00GHz).

Bạn có thể nhìn vào /sys/devices/system/cpu/cpu*/cpufreq/scaling_driverđể xác định xem pstate hoặc ACPI đang được sử dụng để mở rộng CPU. Những tập tin này có thể giả định các giá trị acpi-cpufreqhoặc intel_pstate.


Một mẹo khác: sử dụng ọlsmod, để liệt kê các mô-đun được nạp bởi kernel, danh sách đen mọi mô-đun liên quan đến tỷ lệ CPU / p-state / c-state / bất cứ điều gì và khởi động lại máy. Tìm kiếm "mô-đun hạt nhân danh sách đen".
Rufo El Magufo


4

Đối với các bộ xử lý Intel hiện đại, tần số được kiểm soát bởi chính bộ xử lý và trạng thái P tiếp xúc với phần mềm có liên quan đến mức hiệu suất. Ý tưởng rằng tần số có thể được đặt thành một tần số duy nhất là viễn tưởng cho bộ xử lý Intel Core . Ngay cả khi trình điều khiển chia tỷ lệ chọn một trạng thái P duy nhất, tần số thực mà bộ xử lý sẽ chạy được chọn bởi chính bộ xử lý. [1]

[1] https://www.kernel.org/doc/Documentation/cpu-freq/intel-pstate.txt


Hấp dẫn. Vì vậy, điều này vẫn áp dụng khi tôi chuyển intel_pstate=disableđến kernel? Tôi có đang gọi `" chế độ kế thừa "khi tôi làm điều đó không?
Edd Barrett

1) không chắc chắn. cần tham khảo ý kiến ​​với Intel Architectures Software Developer's Manual.2) có. Tái bút Bạn cũng có thể muốn chơi vớix86_energy_perf_policy
SaveTheRbtz

Cảm ơn ý kiến ​​của bạn. Vì tôi vẫn không chắc chắn, nên bây giờ tôi bỏ ngỏ câu hỏi. Có lẽ ai đó sẽ làm sáng tỏ tình hình sau này.
Edd Barrett

-1

Tôi đã đọc chủ đề này bởi vì tôi quá mong muốn đặt tần số cố định cho cpu của mình vì quạt không hoạt động nữa (tất nhiên những điều đó xảy ra khi bạn ở nước ngoài ở một hòn đảo bị mất để giải trí lặn!) vì vậy quan điểm của tôi là thiết lập nhiều hơn tần số thấp nhất (800Mhz). đến .... 800Mhz. Nó hoạt động và giải quyết vấn đề quá nhiệt mà tôi đã gặp phải .. (tần số hiện là 799Mhz và không di chuyển cho phép cpu duy trì ở mức khoảng 50 ° C!)

PS: tôi cũng tắt chế độ turbo (3,1Ghz)

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.