web-dev-qa-db-ja.com

"userspace" cpufreqガバナーを使用してCPU周波数を設定することはできません

私のラップトップ(Linuxを実行している)でCPU周波数を変更しようとしていますが、うまくいきません。
詳細は次のとおりです。

# 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 [email protected], 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

最初はカーネルにユーザースペースガバナーを組み込んでいましたが、それをモジュールとしてビルドしてみました(結果は同じです)。上記のコマンドの実行中に読み込まれました(読み込み時にシステムメッセージが見つかりませんでした)。

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

そして、ここに私が周波数を変更するために試したコマンドがあります:

# 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?

何か案は?

22
aditsu

これは、システムが intel_pstate という新しいドライバーを使用しているためです。このドライバーを使用するときに使用できるガバナーは、powersaveperformanceの2つだけです。
userspaceガバナーは、古いacpi-cpufreqドライバーでのみ使用できます(起動時にintel_pstateを無効にすると自動的に使用されます;その後、ガバナー/周波数を設定しますcpupower):

  • 現在のドライバーを無効にします:カーネルブート行にintel_pstate=disableを追加します
  • ブートしてからuserspaceモジュールをロードします:modprobe cpufreq_userspace
  • ガバナーを設定します:cpupower frequency-set --governor userspace
  • 頻度を設定:cpupower --cpu all frequency-set --freq 800MHz
41
don_crissti

答えはあなたの質問にあります:

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

これとカーネルは、ユーザースペースガバナーを有効にしてコンパイルする必要があります。