Утилиты для управления частотой процессора

На своем ноутбуке столкнулся с таким вопросом - "Как продлить автономное время работы по-максимуму?". Всем хорошо известно об уменьшении яркости, о том чтобы не запускать емкие программы и другие способы, но я решил попытаться ограничить самый энергоемкий элемент - процессор. Ноутбук - Lenovo G570 Процессор - B950 2.1Ггц ОС - Debian 7 (Sid) Gnome 3

Установка cpufrequtils

cpufrequtils - консольные утилиты для управления частотой CPU. Для установки введите в терминале нижеприведенную команду от root пользователя (для смены пользователя в консоли, введите su ): root@lenovo:~# apt-get install cpufrequtils Просмотр конфигурации процессора и частот, которые он поддерживает. root@lenovo:~# cpufreq-info Пример вывода команды cpufreq-info : root@lenovo:~# 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 - 2.10 GHz available frequency steps: 2.10 GHz, 2.00 GHz, 1.90 GHz, 1.80 GHz, 1.70 GHz, 1.60 GHz, 1.50 GHz, 1.40 GHz, 1.30 GHz, 1.20 GHz, 1.10 GHz, 1000 MHz, 900 MHz, 800 MHz available cpufreq governors: userspace, conservative, powersave, ondemand, performance current policy: frequency should be within 800 MHz and 2.10 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: 2.10 GHz:31,08%, 2.00 GHz:1,57%, 1.90 GHz:1,61%, 1.80 GHz:1,31%, 1.70 GHz:1,61%, 1.60 GHz:1,79%, 1.50 GHz:2,36%, 1.40 GHz:2,55%, 1.30 GHz:4,57%, 1.20 GHz:6,16%, 1.10 GHz:6,45%, 1000 MHz:2,71%, 900 MHz:1,23%, 800 MHz:35,01% (3754) 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 - 2.10 GHz available frequency steps: 2.10 GHz, 2.00 GHz, 1.90 GHz, 1.80 GHz, 1.70 GHz, 1.60 GHz, 1.50 GHz, 1.40 GHz, 1.30 GHz, 1.20 GHz, 1.10 GHz, 1000 MHz, 900 MHz, 800 MHz available cpufreq governors: userspace, conservative, powersave, ondemand, performance current policy: frequency should be within 800 MHz and 2.10 GHz. The governor "ondemand" may decide which speed to use within this range. current CPU frequency is 2.10 GHz (asserted by call to hardware). cpufreq stats: 2.10 GHz:29,58%, 2.00 GHz:1,04%, 1.90 GHz:0,70%, 1.80 GHz:0,52%, 1.70 GHz:1,21%, 1.60 GHz:0,81%, 1.50 GHz:1,04%, 1.40 GHz:0,64%, 1.30 GHz:0,81%, 1.20 GHz:0,91%, 1.10 GHz:0,88%, 1000 MHz:0,72%, 900 MHz:0,74%, 800 MHz:60,40% (2193)

Настройки

Для управления частотой процессора необходимы root права (для смены пользователя в консоли, введите su ) cpufreq-set Ключи команды cpufreq-set: -d минимальная частота, -u максимальная частота, -f особая частота (в начале переключить в профиль в userspace, также не совмещять с другоми ключами кроме ), -g переключение профиля, -c указание ядра процессора (нумерация начинаеться с 0), -r применяет настройки на все ядра сразу (в ядрах 2.6.29 и более - игнорируется. Версия ядра выводится командой uname -v ). Governors - нечто похожее на профили, которые поддерживает ваш процессор. В моем случае процессор поддерживает следующие профили:
  • userspace - пользовательский профиль для установки собственной частоты работы процессора,
  • conservative - динамический профиль при увеличении нагрузки частота поднимается автоматически,
  • powersave - выставляются минимальные частоты работы процессора для максимальной экономии энегргии,
  • ondemand - динамический профиль при увеличении нагрузки частота поднимается автоматически (рекомендуется автором утилит как оптимальный, засчет более быстрого переключения частот),
  • performance - выставляются максимальные частоты работы процессора для полной произвидительноти.

Примеры

Переключение в профиль powersave, который обеспечивает максимальную экономию энергии: root@lenovo:~# cpufreq-set -g powersave При использовании динамических профилей (conservative, ondemand), порой необходимо задать пределы рабочих частот. Приведенная ниже команда задает максимальную частоту в 1.6Ghz: root@lenovo:~# cpufreq-set -u 1.6Ghz Переключение в статическую частоту на которой процессор будет работать постоянно, напоминаю, что для задания постоянной частоты необходимо переключиться в профиль userspace. Первая команда переключает профиль, вторая устанавливает частоту в 800Mhz : root@lenovo:~# cpufreq-set -g userspace root@lenovo:~# cpufreq-set -f 800Mhz Для задания параметров второго ядра процессора, необходимо использовать -с 1. Пример переводит второе ядро в профиль powersave root@lenovo:~# cpufreq-set -c 1 -g powersave

Документация

Нестоит забывать и про документацию поставляющуюся с самими утилитами. Краткие руководства доступны по следующим командам: cpufreq-info -h cpufreq-set -h Полные руководства: man cpufreq-info man cpufreq-set Официальная документация проекта cpufrequtilits здесь <\ br>

Визуальное расширение для Gnome 3

На сайте расширений для Gnome 3 есть проект визуального уравления профилями что довольно удобно. screenshot_444.png Перейти на сайт extensions.gnome.org <\ br>

Настройка частоты при запуске системы

Все выше описанное позволяет управлять частотой в сеансе работы, но само собой есть желание чтобы системы была оптимизирована сразу после загрузки. Существует два способа:
  • указание режима в файле cpufrequtils;
  • использовать утилиту sysfsutils.
<\ br>

Указание режима в файле cpufrequtils

Создаем и вносим переменную в файл для работы в определенном режиме. В примере прописан режим conservative вместо него прописываете необходимый вам. root@lenovo:~# touch /etc/default/cpufrequtils root@lenovo:~# echo "GOVERNOR=\"conservative\"" > /etc/default/cpufrequtils <\ br>

Установка Sysfs

root@lenovo:~# apt-get install sysfsutils Редактируем /etc/sysfs.conf и прописуем необходимый профиль, частоту. Частота рассчитывается по формуле 2,1ГГц * 1000000 = 2100000 поскольку частота указывается в килогерцах. devices/system/cpu/cpu0/cpufreq/scaling_governor = userspace devices/system/cpu/cpu0/cpufreq/scaling_setspeed = 1200000 devices/system/cpu/cpu1/cpufreq/scaling_governor = userspace devices/system/cpu/cpu1/cpufreq/scaling_setspeed = 1200000 Перезапускаем службу /etc/init.d/sysfsutils start или командой service sysfsutils start