Không thể sử dụng không gian người dùng và người điều khiển cpufreq của người dùng và đặt tần số cpu


22

Tôi đang cố gắng thay đổi tần số cpu trên máy tính xách tay của mình (chạy Linux) và không có bất kỳ thành công nào.
Dưới đây là một số chi tiết:

# uname -a
Linux yoga 3.12.21-gentoo-r1 #4 SMP Thu Jul 10 17:32:31 HKT 2014 x86_64 Intel(R) Core(TM) i5-3317U CPU @ 1.70GHz GenuineIntel GNU/Linux

# cpufreq-info
cpufrequtils 008: cpufreq-info (C) Dominik Brodowski 2004-2009
Report errors and bugs to cpufreq@vger.kernel.org, please.
analyzing CPU 0:
  driver: intel_pstate
  CPUs which run at the same hardware frequency: 0
  CPUs which need to have their frequency coordinated by software: 0
  maximum transition latency: 0.97 ms.
  hardware limits: 800 MHz - 2.60 GHz
  available cpufreq governors: performance, powersave
  current policy: frequency should be within 800 MHz and 2.60 GHz.
                  The governor "powersave" may decide which speed to use
                  within this range.
  current CPU frequency is 2.42 GHz (asserted by call to hardware).
(similar information for cpus 1, 2 and 3)

# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
performance powersave

Ban đầu tôi đã có bộ điều chỉnh không gian người dùng được tích hợp vào kernel, nhưng sau đó tôi cũng đã thử xây dựng nó như một mô-đun (có cùng kết quả); nó đã được tải trong khi chạy các lệnh trên (và tôi không thể tìm thấy bất kỳ thông báo hệ thống nào khi tải nó):

# lsmod
Module                  Size  Used by
cpufreq_userspace       1525  0
(some other modules)

Và đây là các lệnh tôi đã cố gắng để thay đổi tần số:

# cpufreq-set -f 800MHz
Error setting new values. Common errors:
- Do you have proper administration rights? (super-user?)
- Is the governor you requested available and modprobed?
- Trying to set an invalid policy?
- Trying to set a specific frequency, but userspace governor is not available,
   for example because of hardware which cannot be set to a specific frequency
   or because the userspace governor isn't loaded?

# cpufreq-set -g userspace  
Error setting new values. Common errors:
- Do you have proper administration rights? (super-user?)
- Is the governor you requested available and modprobed?
- Trying to set an invalid policy?
- Trying to set a specific frequency, but userspace governor is not available,
   for example because of hardware which cannot be set to a specific frequency
   or because the userspace governor isn't loaded?

Có ý kiến ​​gì không?


@don_crissti cảm ơn, heh, tôi đã cố gắng echo 1 > /sys/devices/system/cpu/intel_pstate/no_turbovà đã ngay lập tức hạt nhân hoảng sợ: p Sau đó, tôi khởi động lại với intel_pstate=disablevà bây giờ nó đang sử dụng acpi-cpufreq, nhưng tôi vẫn không thể thiết lập tần số (mặc dù tôi không nhận được thông báo lỗi nữa). Btw, tại sao không làm cho bình luận của bạn một câu trả lời?
aditsu

@don_crissti Tôi không biết về cpupower; nó có một cú pháp hơi khó chịu, nhưng dường như hoạt động tốt hơn cpufreq. Tôi có thể đặt tần số ngay bây giờ :) Cảm ơn rất nhiều và nhớ đăng câu trả lời (trừ khi bạn thực sự không muốn điểm).
aditsu

Câu trả lời:


41

Điều này là do hệ thống của bạn đang sử dụng trình điều khiển mới được gọi intel_pstate. Chỉ có hai thống đốc có sẵn khi sử dụng trình điều khiển này: powersaveperformance.
Bộ điều chỉnh userspacechỉ khả dụng với acpi-cpufreqtrình điều khiển cũ hơn (sẽ được sử dụng tự động nếu bạn tắt intel_pstatekhi khởi động; sau đó bạn đặt bộ điều chỉnh / tần số với cpupower):

  • vô hiệu hóa trình điều khiển hiện tại: thêm intel_pstate=disablevào dòng khởi động kernel của bạn
  • khởi động, sau đó tải userspacemô-đun:modprobe cpufreq_userspace
  • đặt thống đốc: cpupower frequency-set --governor userspace
  • đặt tần số: cpupower --cpu all frequency-set --freq 800MHz

Cảm ơn, btw, bộ tần số dường như làm điều tương tự mà không có--cpu all
aditsu

3
Phải có một số nhược điểm khi sử dụng trình điều khiển cũ. Họ là ai?
kontextify

2
@kontextify Người dùng hạnh phúc hơn, ít có xu hướng tự nguyện làm chuột thí nghiệm để kiểm tra bản phát hành mới.
Mephisto

0

Câu trả lời là trong câu hỏi của bạn:

for core in $(seq 0 "$(($(getconf _NPROCESSORS_ONLN) - 1))"); do
echo {performance|powersave} >/sys/devices/system/cpu/cpu$core/cpufreq/scaling_governor ;
done

Điều đó và kernel phải được biên dịch với kích hoạt không gian thống đốc người dùng.

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.