Изменение частоты процессора
Динамическое масштабирование частоты процессора (также известное как регулирование частоты процессора) представляет собой метод в компьютерной архитектуре, где процессор работает на частоте менее максимальной в целях экономии электроэнергии (src: Wikipedia).
Установите пакет cpufrequtils:
apt-get install cpufrequtils
Драйвер управления частотой процессора
Для корректного управления масштабированием частотой, ОС прежде всего должна знать параметры вашего процессора(ов). Для этого нужно загрузить модуль ядра, который может считывать и управлять параметрами вашего процессора(ов).
Для большинства современных ноутбуков и настольных компьютеров можно использовать драйвер acpi-cpufreq
, но есть ещё такие варианты как p4-clockmod
, powernow-k6
, powernow-k7
, powernow-k8
, и speedstep-centrino
.
Для загрузки драйвера вручную:
Intel
modprobe acpi-cpufreq
Для более старых процессоров Intel, система может выдать:
FATAL: Error inserting acpi_cpufreq ([...]/acpi-cpufreq.ko): No such device
В этой ситуации, замените модуль ядра acpi_cpufreq
на speedstep-centrino
, p4-clockmod
или speedstep-ich
.
Примечание: Учтите, что модуль
speedstep-centrino
устарел, а модульp4-clockmod
поддерживает толькоperformance
иpowersave
регуляторы.
AMD
modprobe powernow-k8
Загрузка при старте системы
Для автоматической загрузки драйвера во время старта системы, добавьте соответствующий драйвер в массив MODULES
в файле /etc/rc.conf
. Например:
MODULES=( acpi-cpufreq fuse iwl3945 )
Как только загружен правильный драйвер cpufreq
, вы можете посмотреть детальную информацию о вашем процессоре(ах), выполнив:
cpufreq-info
Вот пример вывода cpufreq-info
на моём ноутбуке:
cpufrequtils 008: cpufreq-info (C) Dominik Brodowski 2004-2009 Report errors and bugs to cpufreq @ vger.kernel.org, please. 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: 800 MHz - 1.60 GHz available frequency steps: 1.60 GHz, 1.33 GHz, 1.07 GHz, 800 MHz available cpufreq governors: userspace, conservative, powersave, ondemand, performance current policy: frequency should be within 800 MHz and 1.60 GHz. The governor "ondemand" may decide which speed to use within this range. current CPU frequency is 800 MHz (asserted by call to hardware). cpufreq stats: 1.60 GHz:0.51%, 1.33 GHz:0.09%, 1.07 GHz:0.05%, 800 MHz:99.35% (8) analyzing CPU 1: driver: acpi-cpufreq CPUs which run at the same hardware frequency: 1 CPUs which need to have their frequency coordinated by software: 1 maximum transition latency: 10.0 us. hardware limits: 800 MHz - 1.60 GHz available frequency steps: 1.60 GHz, 1.33 GHz, 1.07 GHz, 800 MHz available cpufreq governors: userspace, conservative, powersave, ondemand, performance current policy: frequency should be within 800 MHz and 1.60 GHz. The governor "ondemand" may decide which speed to use within this range. current CPU frequency is 800 MHz (asserted by call to hardware). cpufreq stats: 1.60 GHz:1.99%, 1.33 GHz:0.00%, 1.07 GHz:0.00%, 800 MHz:98.01% (12)
current policy
- ondemand
, означает то, что эта политика загружена и активна.
В большинстве случаев рекомендуется использовать именно ondemand
.
current CPU frequency is XXXX MHz
- если XXXX
ниже максимальной частоты процессора то это означает, что управление частотой активно и работоспособно.
Для просмотра списка доступных регуляторов:
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
Наблюдать за частотой процессора в режиме реального времени можно, выполнив команду:
watch grep \"cpu MHz\" /proc/cpuinfo
Устранение неисправностей
-
Некоторые приложения, например,
ntop
, могут некорректно работать при масштабировании частоты. В случае сntop
может произойти сегментация или Вы можете потерять информацию, так как регуляторondemand
не может достаточно быстро среагировать на повышение нагрузки на процессор и повысить частоту, а текущей частоты не хватит для обработки всех пакетов, пришедших на сетевой интерфейс. -
Некоторые модели процессоров могут не очень хорошо работать на стандартных настройках регулятора
ondemand
(например, видео воспроизводится с рывками или тормозит анимация окон). Это можно решить, не только отключив полностью масштабирование частоты. Также можно увеличить “агрессивность” переключения частоты. Просто снизьте значение переменнойup_threshold
для каждого процессора. См. изменение параметров работы регулятораondemand
. -
Иногда демон задает не максимальную частоту процессора, а частоту немного меньше (2.99МГц вместо 3МГц). В этой ситуации задайте значение максимальной частоты немного больше максимальной. Например, если максимальная частота процессора 3МГц, задайте переменной
max_freq
значение 3.01МГц. -
Некоторые модели BIOS испытывают трудности с масштабированием частот, да и с переключением на повышенные частоты. Правда, это можно обойти. Добавьте строку
processor.ignore_ppc=1
в загрузку ядра или установите значение/sys/module/processor/parameters/ignore_ppc
равное1
. -
Некоторые комбинации драйверов ALSA и звуковых карт могут вызвать заикание звука во время переключения частот регулятором. Пока это можно решить только отключением регулятора масштабирования.
Если эта статья помогла вам, пожалуйста, оставьте комментарий
Спасибо за прочтение!
Arthur is a designer and full stack software engineer. He is the founder of Space X-Chimp and the blog My Cyber Universe. His personal website can be found at arthurgareginyan.com.