На заметку: PowerTOP и потребление энергии

Предисловие

Совсем недавно, на днях, было замечено некоторое изменение в составе пакетов дистрибутива Calculate, разработчики добавили в коробку полезную утилиту PowerTOP… взявшись за руки, скажем дружно - отдельное спасибо за заботу, из чего видно, как один из примеров, команда Calculate работает не просто втюхивая в дистрибутив приложения - авось сгодится, а подбирают важные компоненты в общий пакет дистрибутива. В профиле по умолчанию как и полагается пакет бинарный, что особенно важно, так как он в большей степени полезен именно ноутбукам с малой мощностью.

О программе

PowerTOP является инструментом Linux, который находит программные компоненты, которые вынуждают Ваш ноутбук потреблять больше энергии, чем это необходимо, в то время как он находится в режиме ожидания.

PowerTOP собирает информацию из различных источников ядра и отображает результат работы системы в одном окне так, что Вы можете видеть, насколько хорошо Ваша система работает, и какие компоненты наиболее проблемные.

PowerTOP включает в себя следующие четыре основные цели:

  • Показать, насколько хорошо Ваша система использует различные аппаратные функции энергосбережения.
  • Подсказать, программные компоненты, которые препятствуют оптимальному использованию своих сбережений мощности оборудования.
  • Справка Linux разработчикам тестировать свои приложения и достижения оптимального поведения.
  • Предоставить Вам предложения по настройке для достижения низкого энергопотребления.

Рекомендации

Для работы PowerTOP в Calculate, требуется включить дополнительные параметры в ядро, программа только вошла в состав пакетов дистрибутива, еще не все работает из коробки, о чем и уведомляет сама программа при запуске и даже рекомендует, что именно нужно включить в ядро, и чего собственно не скрывают разработчики честно признаваясь в irc.freenode.net на канале #calculate-ru []{.канала .нашего .реклама .скрытая .пошла .строкой, .бегущей} ;), что программа еще не тестировалась как следует, полагаю это вопрос времени.

Какие параметры нам нужно включить в ядро?! Здесь я не поленюсь и немного перечислю то, что рекомендует сама программа. []{.долго .больно .уж .ядро .компилировать .атоме .на .как .ядро,так .в .опции .нужные .включат .разработчики .что .жду, .очень}

powertop1.1.jpg

Что бы программа могла показать нам детальную статистику:

Kernel hacking  --->
    [*] Kernel debugging 
    [*] Collect kernel timers statistics

Современные процессоры позволяют изменять частоту процессора в зависимости от нагрузки,позволяя экономить энергию. Ядро поддерживает несколько схем изменения частоты процессора, используя cpufreq-info из пакета sys-power/cpufrequtils, входит в состав пакетов Calculate, можно узнать какие поддерживаются.

cpufreq-info | grep governors
available cpufreq governors: userspace, powersave, ondemand, conservative, performance

PowerTOP рекомендует ondemand, можно выполнить совет PowerTOP - echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor, а можно установить значение governors используя cpufreq-set из пакета о котором говорилось выше - sys-power/cpufrequtils, например: cpufreq-set -c X -g ondemand, где X номер процессора. Но тогда после перезагрузки системы, значение сбросится на то, что установлено в ядро. По этому нам надо изменить значение в конфигурации ядра, что бы каждый раз не делать в ручную.

Меняем значение governor в конфигурации ядра на ondemand.

Power management and ACPI options  --->
    CPU Frequency scaling  --->
        Default CPUFreq governor (ondemand)  --->

Здесь описаны не все опции которые требуется включить в ядро, автор торопился написать заметку и не все проверил так как компилирование ядра на процессоре intel atom дело долгое а времени на все мало… пусть это будет домашним заданием для тех кого заинтересовала заметка и кому будет интересно использование данной программы.

Введение

powertop2.2.jpg

C - информация о состоянии

C - состояния - рабочие режимы ЦП. Чем выше C - число состояния, меньше питания используется ЦП; однако дольше займет времени, чтобы вернуть ЦП к выполняющимся инструкциям.
C0 является особенным - в C0, ЦП фактически выполняет инструкции, как видно на первом скриншоте. Во всех других C - состояниях ЦП неактивен и не выполняет инструкции.

Чтобы получить приличную экономию электроэнергии во время бездействия, ЦП должен быть в C3 или C4 большую часть времени. Кроме того, чем дольше среднее время в этих C - состояниях, тем больше электроэнергии сэкономлено. Идеально, Ваш ЦП тратит по крайней мере 95 % своего времени в C4 для среднего числа 50 или больше миллисекунд.

Пробуждение в секунду

“Wakeups-from-idle per second” красная линия на втором скриншоте - еще один показатель того, как хорошо Ваш ноутбук работает с точки зрения получения экономии энергии: чем меньше число, тем лучше.

Потребляемая мощность

Если Ваш ноутбук работает от батареи, PowerTOP использует ACPI для сбора информации о том, как много энергии Вы используете. Кроме того, PowerTOP вычисляет оценку, сколько часов работы от батареи у Вас осталось.
Примечание: Если Вы не работает от батареи, эта информация не будет доступна.

Программа в дереве portage:

sys-power/powertop

Команда для запуска программы:

powertop

Вот и вся заметка, далее каждый сам за себя, следуем указаниям программы, используем нужное Вам,применяем как умеем, всем удачи.

ilya Osadchenko писал(а):

Звук hda-intel:
echo 1 > /sys/module/snd_hda_intel/parameters/power_save

этот параметр можно изменить так же в ядре, ноль изменить на 1:

CONFIG_SND_HDA_POWER_SAVE_DEFAULT=0

P.S все изменения в sys, типа echo значение > файл, будут сброшены после перезагрузки системы… может кто дополнит, как правильней сделать, что бы значение не сбрасывалось после перезагрузки системы, помимо жесткой замены параметров в ядре… полагаю это сильно улучшит характер заметки и сделает решение более элегантным, заранее всем кто принимает участие, спасибо…

Сразу советую убедиться(/usr/src/.config), что включенны опции:

CONFIG_DEBUG_KERNEL=y
CONFIG_PM_ADVANCED_DEBUG=y
CONFIG_NO_HZ=y
CONFIG_HIGH_RES_TIMERS=y
CONFIG_HPET_TIMER=y
CONFIG_CPU_FREQ_GOV_ONDEMAND=y
CONFIG_USB_SUSPEND=y
CONFIG_SND_HDA_POWER_SAVE=y
CONFIG_TIMER_STATS=y

дабы не пересобирать ядро дважды, powertop порекомендует эти же опции. Этого достаточно что бы серьезно сократить потребление.
У меня asus eeepc 1005ha. atom270, hdd, hda-intel.
Энергосбережения hdd:

hdparm -B 1 -S 12 /dev/sdX включаем агрессивное энергосбережение.

Уменьшаем частоту обращения ядра к диску, позволяем позже кэшировать(20секунд):

echo 2000 > /proc/sys/vm/dirty_writeback_centisecs

laptop mode:

echo 5 > /proc/sys/vm/laptop_mode

Звук hda-intel:

echo 1 > /sys/module/snd_hda_intel/parameters/power_save
echo 1 > /dev/dsp

Видео i915:

echo 1 > /sys/module/i915/parameters/power_save

Если железо другое, можно поизучать /sys/, параметр power_save 1 on, 0 off.
Ну и продолжение следует. Выкладываем тут свои способы продлить время автономной работы. Информации и способов много, можно подсобрать для удобства.

Смотри в сторону /etc/sysctl.conf

Михаил Гагауз писал(а):

Смотри в сторону /etc/sysctl.conf

Михаил спасибо за дополнение…