Cpufreq
Включение автоматической регулировки частоты процессора в зависимости от нагрузки без использования спецсервисов типа 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
Ссылки
- http://lists.altlinux.org/pipermail/community/2010-August/665835.html
- http://www.thinkwiki.org/wiki/How_to_make_use_of_Dynamic_Frequency_Scaling
См. также. Другие близкие и нерешённые задачи
Регулировка мощности по температуре, а не по загрузке (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?)