Cpufreq

Материал из ALT Linux Wiki
Перейти к: навигация, поиск

Включение автоматической регулировки частоты процессора в зависимости от нагрузки без использования спецсервисов типа 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?)