Неможливо використовувати керуючий процесор cpufreq "простору користувача" та встановити частоту процесора


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?

Будь-які ідеї?


@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

Дякую, btw, встановлення частоти, здається, робить те ж саме і без--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

Це і ядро ​​потрібно компілювати з увімкненим губернатором простору користувачів.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.