Невозможно использовать «пользовательское пространство» для процессора и установить частоту процессора

22

Я пытаюсь изменить частоту процессора на моем ноутбуке (под управлением Linux), но безуспешно.
Вот некоторые детали:

# 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

Сначала в ядро ​​был встроен регулятор пространства пользователя, но затем я также попытался построить его как модуль (с теми же результатами); он был загружен во время выполнения вышеуказанных команд (и я не смог найти никаких системных сообщений при загрузке):

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

Любые идеи?

aditsu
источник
@don_crissti спасибо, хе, я попытался echo 1 > /sys/devices/system/cpu/intel_pstate/no_turboи получил мгновенную панику ядра: p Затем я перезагрузился с intel_pstate=disableи теперь использую acpi-cpufreq, но я все еще не могу установить частоту (хотя я больше не получаю сообщения об ошибках). Кстати, почему бы не сделать ваш комментарий ответом?
aditsu
@don_crissti Я не знал о cpupower; он имеет несколько неприятный синтаксис, но, кажется, работает лучше, чем cpufreq. Теперь я могу установить частоту :) Большое спасибо и не забудьте опубликовать ответ (если вы действительно не хотите очки).
aditsu

Ответы:

41

Это потому, что ваша система использует новый драйвер с именем intel_pstate. При использовании этого драйвера доступны только два регулятора: powersaveи performance. Губернатор доступен только со старым драйвером (который будет автоматически использоваться при отключении во время загрузки, вы затем установите регулятор / частоты с ):
userspaceacpi-cpufreqintel_pstatecpupower

  • отключите текущий драйвер: добавьте intel_pstate=disableв строку загрузки вашего ядра
  • загрузитесь, затем загрузите userspaceмодуль:modprobe cpufreq_userspace
  • установить губернатора: cpupower frequency-set --governor userspace
  • установить частоту: cpupower --cpu all frequency-set --freq 800MHz
don_crissti
источник
Спасибо, между прочим, установка частоты, кажется, делает то же самое без--cpu all
aditsu
3
Должны быть некоторые недостатки использования старого драйвера. Кто они такие?
kontextify
2
@kontextify Более счастливые пользователи, менее склонные добровольно выступать в роли лабораторных крыс для тестирования нового выпуска.
Мефисто
0

Ответ на ваш вопрос:

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

Это и ядро ​​должно быть скомпилировано с включенным регулятором пространства пользователя.

Яун Мауро Фернандес
источник