Cpufreq: различия между версиями
м (/* Включение автоматической регулировки частоты процессора в зависимости от нагрузки без использования спецсервисов типа cpuspeed, powernowd, etc) |
|||
(не показано 9 промежуточных версий 3 участников) | |||
Строка 37: | Строка 37: | ||
По моим наблюдениям если в {{path|/etc/sysfs.conf}} после этих строк не поставить перевод строки то как минимум к последнему CPU политика не будет применяться. | По моим наблюдениям если в {{path|/etc/sysfs.conf}} после этих строк не поставить перевод строки то как минимум к последнему CPU политика не будет применяться. | ||
===resume after suspend=== | |||
[http://forum.altlinux.org/index.php/topic,12229.msg154855.html#msg154855 Говорят], sysfs не запускается при выходе из suspend. Поэтому надо позаботиться об установке этих параметров отдельно. | |||
===Выставить нужный план работы и ограничение верхней частоты=== | |||
В ситуации, когда у нас, например, старый ноутбук и он при большой нагрузке сильно греется, поможет рецепт - при загрузке ALT Linux выставить нужный планировщик и ограничить частоту CPU сверху. | |||
Рецепт для cpufrequtils (создаем и правим файл: /etc/rc.d/rc.local): | |||
#!/bin/bash | |||
for i in 0 1 2 3; do cpufreq-set -c $i -g powersave -u 1.80Ghz -d 800Mhz; done | |||
В новых версиях cpufrequtils заменен на cpupower. В этом случае содержимое rc.local следующее: | |||
#!/bin/bash | |||
cpupower frequency-set -g ondemand -u 1.80Ghz -d 800Mhz | |||
Проверка, что все выставилось нормально командами: cpufreq-info или cpupower frequency-info. | |||
==Проверка частоты== | |||
Когда мы настраиваем регулировку частоты, интересно проверять, какая сейчас на самом деле частота. | |||
Это умеют показывать всякие аплеты для power management для графических сред. | |||
А как проверить частоту из командной строки, без графики? | |||
Можно смотреть вот куда[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 | |||
== Ссылки == | == Ссылки == | ||
Строка 43: | Строка 86: | ||
* 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 | ||
== См. также== | ==См. также. Другие близкие и нерешённые задачи== | ||
* [[:en:How to keep the GPU (and CPU) cooler]] | ===Регулировка мощности по температуре, а не по загрузке (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]] | [[Категория:Power Management]] |
Текущая версия от 08:50, 31 октября 2024
Включение автоматической регулировки частоты процессора в зависимости от нагрузки без использования спецсервисов типа 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. Поэтому надо позаботиться об установке этих параметров отдельно.
Выставить нужный план работы и ограничение верхней частоты
В ситуации, когда у нас, например, старый ноутбук и он при большой нагрузке сильно греется, поможет рецепт - при загрузке ALT Linux выставить нужный планировщик и ограничить частоту CPU сверху.
Рецепт для cpufrequtils (создаем и правим файл: /etc/rc.d/rc.local):
#!/bin/bash for i in 0 1 2 3; do cpufreq-set -c $i -g powersave -u 1.80Ghz -d 800Mhz; done
В новых версиях cpufrequtils заменен на cpupower. В этом случае содержимое rc.local следующее:
#!/bin/bash cpupower frequency-set -g ondemand -u 1.80Ghz -d 800Mhz
Проверка, что все выставилось нормально командами: cpufreq-info или cpupower frequency-info.
Проверка частоты
Когда мы настраиваем регулировку частоты, интересно проверять, какая сейчас на самом деле частота.
Это умеют показывать всякие аплеты для 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?)