Bug 4329 - cpupower service fails to start on the systems with intel_pstate driver
: cpupower service fails to start on the systems with intel_pstate driver
Status: RESOLVED FIXED
Product: Desktop Bugs
Classification: ROSA Desktop
Component: Main Packages
: Fresh
: All Linux
: Normal normal
: 2014 Fresh R4
Assigned To: Eugene Shatokhin
: Private ROSA Bugs
:
Depends on:
Blocks:
  Show dependency treegraph
 
Reported: 2014-08-27 13:33 MSD by Eugene Shatokhin
Modified: 2014-10-28 19:32 MSK (History)
2 users (show)

See Also:
RPM Package: cpupower-3.14.15-1
ISO-related:
Bad POT generating:
Upstream:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Eugene Shatokhin 2014-08-27 13:33:40 MSD
Наблюдалось в 2014.1, может касаться и 2012.1.

"Железо": http://hw.rosalinux.ru/index.php?probe=85a6e2c84a&kind=all

cpupower.service по умолчанию пытается запустить '/usr/bin/cpupower frequency-set -g ondemand', т.е. установить т.н. "ondemand" governor. На системах, где для управления частотой процессора используется драйвер acpi_cpufreq, это работает.

Но это не работает на системах, где используется не acpi_cpufreq, а intel_pstate (этот драйвер у нас, кстати, built-in, т.е. его нельзя выгрузить). Это связано с тем, что у нас intel_pstate поддерживает только след. govenors: powersave, performance. Т.е. "ondemand" не поддерживается, и cpupower выдаёт ошибку при старте.

Стоит разобраться, есть ли ondemand governor или что-то аналогичное (адаптивная автоматическая настройка частоты процессора) для intel_pstate.

Плюс, при установке cpupower стоит проверять список available governors в /sys/devices/system/cpu/cpu<номер_ядра_процессора>/cpufreq/scaling_available_governors. Если там есть ondemand - вписывать в /etc/sysconfig/cpupower его, если нету - выбрать что-то из доступного.
Comment 1 Vladimir Potapov 2014-09-12 10:39:02 MSD
на 2014 у меня эта ошибка наблюдается.
А вот на 2012 - нет

status cpupower.service 
cpupower.service - Configure CPU power related settings
   Loaded: loaded (/lib/systemd/system/cpupower.service; enabled)
   Active: active (exited) since Пт. 2014-09-12 15:32:46 IRKT; 1min 13s ago
  Process: 3947 ExecStart=/usr/bin/cpupower $CPUPOWER_START_OPTS (code=exited, status=0/SUCCESS)
 Main PID: 3947 (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/cpupower.service

сент. 12 15:32:46 FRESH-X64 cpupower[3947]: Setting cpu: 0
сент. 12 15:32:46 FRESH-X64 cpupower[3947]: Setting cpu: 1
сент. 12 15:32:46 FRESH-X64 cpupower[3947]: Setting cpu: 2
сент. 12 15:32:46 FRESH-X64 cpupower[3947]: Setting cpu: 3
сент. 12 15:32:46 FRESH-X64 systemd[1]: Started Configure CPU power related settings.

cpupower frequency-info
analyzing CPU 0:
  driver: acpi-cpufreq
  CPUs which run at the same hardware frequency: 0
  CPUs which need to have their frequency coordinated by software: 0
  maximum transition latency: 10.0 us.
  hardware limits: 1.60 GHz - 3.30 GHz
  available frequency steps: 3.30 GHz, 3.20 GHz, 3.10 GHz, 3.00 GHz, 2.80 GHz, 2.70 GHz, 2.60 GHz, 2.50 GHz, 2.40 GHz, 2.30 GHz, 2.20 GHz, 2.10 GHz, 1.90 GHz, 1.80 GHz, 1.70 GHz, 1.60 GHz
  available cpufreq governors: conservative, userspace, powersave, ondemand, performance
  current policy: frequency should be within 1.60 GHz and 3.30 GHz.
                  The governor "ondemand" may decide which speed to use
                  within this range.
  current CPU frequency is 1.60 GHz (asserted by call to hardware).
  boost state support:
    Supported: no
    Active: no
    25500 MHz max turbo 4 active cores
    25500 MHz max turbo 3 active cores
    25500 MHz max turbo 2 active cores
    25500 MHz max turbo 1 active cores
Comment 2 Vladimir Potapov 2014-09-12 10:40:30 MSD
т.е., получается, в старом ядре один драйвер используется, а в новом уже другой?
Comment 3 Eugene Shatokhin 2014-09-12 13:17:33 MSD
(In reply to comment #2)
> т.е., получается, в старом ядре один драйвер используется, а в новом уже
> другой?

Да, похоже на то. Между ядром 3.10 и 3.14 много всего сделали в драйвере intel_pstate, видимо, потому и включили по умолчанию для тех систем, где железо подходящеею

Кстати, ручное управление частотой CPU с помощью intel_pstate на той машине работает. По умолчанию пределы изменения частоты - от 30% до 100%. Ставлю верхний предел в 50% в соотв. файле в sysfs - ноутбук в тех же сценариях использования от батареи живёт в 1.5 - 2 раза дольше без видимой потери производительности.

# echo 50 > /sys/devices/system/cpu/intel_pstate/max_perf_pct
# echo 20 > /sys/devices/system/cpu/intel_pstate/min_perf_pct
// Т.е. теперь частота может меняться не в пределах 30-100% от максимальной, а в пределах 20-50%.

Отключаю ещё (хотя вроде это и необязательно) использование частот выше максимальной:

# echo 1 > /sys/devices/system/cpu/intel_pstate/no_turbo

Пока использую это всё как workaround, а когда разберусь с более срочными делами, посмотрю, можно ли сделать автоматическую настройку частоты средствами intel_pstate.

Более подробное описание intel_pstate - тут:
https://www.kernel.org/doc/Documentation/cpu-freq/intel-pstate.txt
Comment 4 Eugene Shatokhin 2014-09-12 13:22:59 MSD
В худшем случае можно будет отключить intel_pstate в будущих обновлениях ядра, если на acpi_cpufreq там всё будет работать нормально. Посмотрим.
Comment 5 Eugene Shatokhin 2014-10-10 13:15:37 MSD
(In reply to comment #4)

В общем, поэкспериментировав, я выснил, что intel_pstate не может настраивать частоту CPU не из-за проблем в ядре, а из-за настроек в BIOS. 

А именно - из-за опции "Deep Sleep", как ни странно. Судя по документации HP, она делает следующее: "Turns off power to the chipset during Sleep, resulting in greater battery life."

Values: Off, On, Auto

Было выбрано "Auto", я поставил "Off", загрузил систему - управление частотой CPU заработало автоматически (governor - "powersave").

Т.е. осталось настроить cpupower, что бы он "powersave" ставил для intel_pstate.
Comment 6 Eugene Shatokhin 2014-10-28 19:32:13 MSK
Исправлено в kernel 3.14.22 + cpupower 3.14.22.