Cpufreq: различия между версиями

Материал из ALT Linux Wiki
(создал по просьбе Михаила Шигорина)
 
Нет описания правки
 
(не показано 14 промежуточных версий 4 участников)
Строка 2: Строка 2:


Чтобы включить автоматическую регулировку частоты процессора
Чтобы включить автоматическую регулировку частоты процессора
надо поместить в /etc/modues следующую строку:
надо поместить в /etc/modules следующую строку:


  cpufreq_ondemand
  cpufreq_ondemand


Так же туда надо прописать подходящий модуль для вашего процессора. В
Так же туда надо прописать подходящий модуль для вашего процессора. Например,
моём случае это такие:


* для AMD Athlon 64 X2:
* для AMD Athlon 64 X2:
Строка 17: Строка 16:
Остальные варианты можно посмотреть [http://www.thinkwiki.org/wiki/How_to_make_use_of_Dynamic_Frequency_Scaling тут].
Остальные варианты можно посмотреть [http://www.thinkwiki.org/wiki/How_to_make_use_of_Dynamic_Frequency_Scaling тут].


На моём EeePC 1000H с Intel Atom пришлось ещё прописать в
Если всё сделано правильно, то после перезагрузки профиль ondemand должен присутствовать в числе возможных:
/etc/sysfs.conf следующие строки:
 
# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
ondemand userspace performance
 
Он же должен быть текущим используемым профилем:
 
# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
ondemand
 
Если же всё равно используется профиль performance:
 
# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
performance
 
и частота процессора всегда максимальна в не зависимости от нагрузки, то необходимо прописать в {{path|/etc/sysfs.conf}} (необходимо предварительно установить {{pkg|sysfsutils}}) следующие строки (пример для процессора с двумя ядрами):


  devices/system/cpu/cpu0/cpufreq/scaling_governor = ondemand
  devices/system/cpu/cpu0/cpufreq/scaling_governor = ondemand
  devices/system/cpu/cpu1/cpufreq/scaling_governor = ondemand
  devices/system/cpu/cpu1/cpufreq/scaling_governor = ondemand


Иначе по умолчанию использовался профиль perfomance, и частота
По моим наблюдениям если в {{path|/etc/sysfs.conf}} после этих строк не поставить перевод строки то как минимум к последнему CPU политика не будет применяться.
процессора всегда была максимальной.
 
===resume after suspend===
[http://forum.altlinux.org/index.php/topic,12229.msg154855.html#msg154855 Говорят], sysfs не запускается при выходе из suspend. Поэтому надо позаботиться об установке этих параметров отдельно.
 
==Проверка частоты==
Когда мы настраиваем регулировку частоты, интересно проверять, какая сейчас на самом деле частота.
 
Это умеют показывать всякие аплеты для power management для графических сред.
 
А как проверить частоту из командной строки, без графики?


На стационарном компе с AMD Athlon 64 X2 правки /etc/sysfs.conf не
Можно смотреть вот куда[http://forum.altlinux.org/index.php/topic,12229.msg152564.html?PHPSESSID=i1l2n59c7egv1a535lfj9cpur1#msg152564]:
потребовалось.
 
  # cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq
  1200000
  # cat /sys/devices/system/cpu/cpu1/cpufreq/cpuinfo_cur_freq
  1200000
  # cat /sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state
  2600000 162981
  2000000 2943
  1600000 1833
  1200000 506219
 
Или[https://wiki.archlinux.org/index.php/CPU_Frequency_Scaling#Scaling_governors]:
 
  $ watch grep \"cpu MHz\" /proc/cpuinfo


== Ссылки ==
== Ссылки ==
Строка 34: Строка 69:
* http://www.thinkwiki.org/wiki/How_to_make_use_of_Dynamic_Frequency_Scaling
* http://www.thinkwiki.org/wiki/How_to_make_use_of_Dynamic_Frequency_Scaling


[[Категория:HOWTO]]
==См. также. Другие близкие и нерешённые задачи==
===Регулировка мощности по температуре, а не по загрузке (TODO)===
* [[:en:How to keep the GPU (and CPU) cooler]] -- Среди прочего, там высказывается интерес к механизму управления мощностью центрального процессора, который бы регулировался текущей температурой, а не загрузкой (как в случае с обычными governors). Такой механизм работает в nouveau для GPU NVidia. Например, мне удобен режим ondemand, но также передо мной стоит задача не дать нагреться выше некой температуры. Я бы хотел указывать температуру, при нагревании до которой сбрасывается мощность. Всё время сидеть на powersave не хочется, конечно. (Если вам известно о таком механизме, опишите пожалуйста! Было бы полезно уметь это делать. Have a look at this, via [http://forum.altlinux.org/index.php/topic,30120.msg213519.html#msg213519]: "[https://wiki.archlinux.org/index.php/CPU_Frequency_Scaling Additional control for modern Intel CPUs is available with the Linux Thermal Daemon (available as thermald in the AUR), which proactively controls thermal using P-states, T-states, and the Intel power clamp driver.]" And what about AMD?)
 
{{Category navigation|title=HOWTO|category=HOWTO|sortkey={{SUBPAGENAME}}}}
[[Категория:Power Management]]

Текущая версия от 11:45, 19 июля 2015

Включение автоматической регулировки частоты процессора в зависимости от нагрузки без использования спецсервисов типа cpuspeed, powernowd, etc.

Чтобы включить автоматическую регулировку частоты процессора надо поместить в /etc/modules следующую строку:

cpufreq_ondemand

Так же туда надо прописать подходящий модуль для вашего процессора. Например,

  • для AMD Athlon 64 X2:
powernow_k8
  • для Intel Atom N270:
acpi_cpufreq

Остальные варианты можно посмотреть тут.

Если всё сделано правильно, то после перезагрузки профиль ondemand должен присутствовать в числе возможных:

# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
ondemand userspace performance

Он же должен быть текущим используемым профилем:

# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
ondemand

Если же всё равно используется профиль performance:

# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
performance

и частота процессора всегда максимальна в не зависимости от нагрузки, то необходимо прописать в /etc/sysfs.conf (необходимо предварительно установить sysfsutils) следующие строки (пример для процессора с двумя ядрами):

devices/system/cpu/cpu0/cpufreq/scaling_governor = ondemand
devices/system/cpu/cpu1/cpufreq/scaling_governor = ondemand

По моим наблюдениям если в /etc/sysfs.conf после этих строк не поставить перевод строки то как минимум к последнему CPU политика не будет применяться.

resume after suspend

Говорят, sysfs не запускается при выходе из suspend. Поэтому надо позаботиться об установке этих параметров отдельно.

Проверка частоты

Когда мы настраиваем регулировку частоты, интересно проверять, какая сейчас на самом деле частота.

Это умеют показывать всякие аплеты для power management для графических сред.

А как проверить частоту из командной строки, без графики?

Можно смотреть вот куда[1]:

 # cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq
 1200000
 # cat /sys/devices/system/cpu/cpu1/cpufreq/cpuinfo_cur_freq
 1200000
 # cat /sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state
 2600000 162981
 2000000 2943
 1600000 1833
 1200000 506219

Или[2]:

 $ watch grep \"cpu MHz\" /proc/cpuinfo

Ссылки

См. также. Другие близкие и нерешённые задачи

Регулировка мощности по температуре, а не по загрузке (TODO)

  • en:How to keep the GPU (and CPU) cooler -- Среди прочего, там высказывается интерес к механизму управления мощностью центрального процессора, который бы регулировался текущей температурой, а не загрузкой (как в случае с обычными governors). Такой механизм работает в nouveau для GPU NVidia. Например, мне удобен режим ondemand, но также передо мной стоит задача не дать нагреться выше некой температуры. Я бы хотел указывать температуру, при нагревании до которой сбрасывается мощность. Всё время сидеть на powersave не хочется, конечно. (Если вам известно о таком механизме, опишите пожалуйста! Было бы полезно уметь это делать. Have a look at this, via [3]: "Additional control for modern Intel CPUs is available with the Linux Thermal Daemon (available as thermald in the AUR), which proactively controls thermal using P-states, T-states, and the Intel power clamp driver." And what about AMD?)