Управление питанием/Руководство

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Power management/Guide and the translation is 79% complete.
Outdated translations are marked like this.


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

Article status
This article has some todo items:
  • Add instructions for kernel configuration of remaining CPU frequency drivers

Введение

О данном документе

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

В этом документе прежде всего сосредоточимся на пакете laptop-mode-tools, так как в нем предлагается полный набор функций. Все же, мы также обратимся и к другим инструментам, предлагающим более детальный подход к индивидуальным настройкам. В этом случае необходимо отключить некоторые функции пакета laptop-mode-tools, так чтобы два инструмента не сражались за доступ к одному и тому же ресурсу.

Описание laptop_mode

Настройка laptop_mode — это настройка конфигурации ядра, которая оптимизирует запросы ввода-вывода, позволяя дискам останавливать вращение должным образом (и не просыпаться сразу же после поставленных в очередь операций).

О пакете laptop-mode-tools

Пакет Laptop Mode Tools — это пакет программ (app-laptop/laptop-mode-tools), позволяющий оптимизировать функции сохранения заряда батареи. Он позволяет управлять настройкой laptop_mode в ядре Linux, но при этом имеет дополнительные функции, которые позволяют настроить другие параметры системы, связанные с питанием.

Конфигурация ядра Linux

Минимальная настройка ядра

В дереве Portage имеются разные пакеты с исходным кодом ядра. Мы рекомендуем использовать sys-kernel/gentoo-sources, но если необходима расширенная поддержка гибернации, то может подойти sys-kernel/tuxonice-sources. Для включения подходящих функций управления питанием в ядре Linux, включите следующие настройки:

To enable proper power management features in the Linux kernel, enable the following settings:

ЯДРО Минимальная настройка ядра для управления питанием
'"`UNIQ--pre-00000004-QINU`"'

Не забудьте включить драйвер управления частотой центрального процессора (CPU frequency scaling driver). Для процессоров SandyBridge или выше userspace, ondemand и conservative не нужны; performance должен быть выбран по умолчанию, а Intel P state control должен быть выбран вместо ACPI Processor P-States driver. [1]

In this case, the userspace, ondemand, and conservative governors are unnecessary. The performance governor should be selected as the default. [2]

ЯДРО Kernel setup for Intel Sandy Bridge and newer processors
Power management and ACPI options --->
  -*- Device power management core functionality
  [*] ACPI (Advanced Configuration and Power Interface) Support --->
    <*> AC Adapter
    <*> Battery
    -*- Button
    -*- Video
    <*> Fan
    <*> Processor
    <*> Thermal Zone
  
  [*] CPU Frequency scaling --->
        Default CPUFreq governor (performance)  --->
    -*- 'performance' governor
    <*> Intel P state control

Enabling additional drivers

For Intel processors used in laptops since 2011 you may want to enable additional advanced features - Thermal and powercap sysfs.

Thermal sysfs driver

ЯДРО Generic Thermal sysfs driver
Device Drivers --->
  -*- Generic Thermal sysfs driver --->
    (0)   Emergency poweroff delay in milli-seconds                                                                              
    [*]   Expose thermal sensors as hwmon device                                                                                
    -*-   Enable writable trip points                                                                                          
          Default Thermal governor (step_wise)  --->                                                                           
    [*]   Fair-share thermal governor                                                                                           
    -*-   Step_wise thermal governor                                                                                            
    -*-   Bang Bang thermal governor                                                                                            
    -*-   User_space thermal governor                                                                                           
    [ ]   Thermal emulation mode support
    [*]   Power allocator thermal governor   
    <M>   Intel PowerClamp idle injection driver
    <M>   X86 package temperature thermal driver
    < >   Intel SoCs DTS thermal driver                                                                                          
          ACPI INT340X thermal drivers  --->                                                                                     
             <M> ACPI INT340X thermal drivers
    <M>   Intel PCH Thermal Reporting Driver

powercap sysfs driver

Additionally, you can enable Running Average Power Limit – RAPL technology. Both PowerTOP and turbostat utilities are aware of RAPL. For RAPL enablement use:

ЯДРО Generic powercap sysfs driver
Device Drivers --->
  [*] Generic powercap sysfs driver --->
    <M>   Intel RAPL Support

To make use of Intel's Linux thermal daemon you first need to emerge sys-power/thermald and enable it via:

root #rc-config add thermald

or

root #systemctl enable thermald
Заметка
dptfxtract from Intel may be used to auto generate a thermald.conf.xml for the system.

Для более подробного описания смотрите статью Управление питанием/Процессор#Ядро.

Соберите и установите новое ядро (если это необходимо) и перезагрузитесь.

Использование пакета Laptop Mode Tools

Установка

Установка пакета Laptop mode tools не должна вызывать никаких вопросов и легко выполняется с помощью команды:

root #emerge --ask app-laptop/laptop-mode-tools

Однако, в этом пакете имеются дополнительные, необязательные настройки, включаемые через USE-флаги. Поэтому давайте сначала рассмотрим поддерживаемые USE-флаги, и что они означают для пакета.

USE-флаг Описание Применяется когда...
acpi Зависит от sys-power/acpid, так, чтобы изменения системы фиксировались и функции сохранения энергии автоматически включались/отключались. ноутбук не является слишком старым (примерно 2003 года и позже)
apm Зависит от sys-apps/apmd, так, чтобы изменения системы фиксировались и функции сохранения заряда автоматически включались/отключались. ноутбук очень старый
bluetooth Зависит от net-wireless/bluez, что позволяет laptop-mode-tools управлять настройками bluetooth (включая и отключая данный сервис, основываясь на состоянии батареи.) ноутбук (и ядро) поддерживают bluetooth
scsi Зависит от sys-apps/sdparm, что позволяет laptop-mode-tools управлять параметрами диска SCSI (а не SATA). ноутбук использует SCSI-диски

Заметим, что существуют два противоречащих друг другу USE-флага: acpi и apm. Итак, в чем же дело?

  • USE-флаг apm включает поддержку Advanced Power Management, более старого (до 2000-го года) стандарта системных функций управления питанием.
  • USE-флаг acpi включает поддержку Advanced Configuration and Power Interface, преемника APM. Все современные ноутбуки поддерживают ACPI.

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

Итак, после настройки USE-флагов, установите пакет laptop-mode-tools:

root #emerge --ask laptop-mode-tools

Конфигурация

Установка в систему пакета laptop-mode-tools не включает необходимые функции управления питанием автоматически. Чтобы настроить пакет, сначала взгляните на файл /etc/laptop-mode/laptop-mode.conf. Это основной файл конфигурации пакета, и он довольно хорошо прокомментирован.

Но это не единственный файл конфигурации. Пакет laptop-mode-tools поддерживает расширения (или модули), имеющие их собственные файлы конфигурации. Эти файлы расположены в каталоге /etc/laptop-mode/conf.d и названы так же, как и модули, которые они представляют (например, intel-sata-powermgmt.conf).

Далее, одной из важных настроек в каждом файле конфигурации является то, должен ли пакет laptop-mode-tools управлять отдельными параметрами или нет. Это важно при совмещении laptop-mode-tools с другими сервисами сохранения энергии, такими как cpufreqd. В этом примере требуется установить CONTROL_CPU_FREQUENCY=0:

ФАЙЛ /etc/laptop-mode/conf.d/cpufreq.conf
CONTROL_CPU_FREQUENCY=0

Следующие несколько разделов помогут пользователю с настройкой пакета laptop-mode-tools в соответствии с нуждами. По завершении запустите сервис laptop_mode и убедитесь, что он запускается во время загрузке системы.

В случае OpenRC:

root #rc-service laptop_mode start
root #rc-update add laptop_mode default

В случае systemd:

root #systemctl laptop-mode.service enable --now

Как работает laptop-mode-tools

После запуска сервиса laptop_mode, программа проверяет в каком состоянии находится система. Состояния определены следующим образом:

  • Battery, активно когда система работает от батареи; файлами конфигурации используется префикс BATT_ для настроек, связанных с этим состоянием;
  • AC, активно когда система работает от сети переменного тока; файлами конфигурации используется префикс AC_ для настроек, связанных с этим состоянием;
  • Laptop Mode, активно когда включен laptop mode; файлы конфигурации используют префикс LM_ для настроек, связанных с этим состоянием;
  • No Laptop Mode, активно когда laptop mode отключен; файлы конфигурации используют префикс NOLM_ для настроек, связанных с этим состоянием.

Префиксы AC/BATT_ и LM/NOLM_ могут быть совмещены так, чтобы получился префикс AC_LM_.

После запуска сервиса laptop_mode, режимы переключаются в зависимости от возникающих событий (и, конечно же, в зависимости от настроек конфигурации). Например, параметр ENABLE_LAPTOP_MODE_ON_BATTERY=1 заставит laptop mode tools переключаться в режим laptop mode при истечении заряда батареи. В этом случае используются настройки, начинающиеся с LM_, LM_BATT_, BATT_LM_ и BATT_.

Чтобы настройки не конфликтовали друг с другом, не разрешается иметь частично совпадающие настройки. В следующем примере первая группа настроек (для CPU_MAXFREQ) является верной, но вторая (для CPU_GOVERNOR) — нет.

КОД Частично совпадающие настройки
## Правильный набор настроек
BATT_CPU_MAXFREQ=fastest
LM_AC_CPU_MAXFREQ=fastest
NOLM_AC_CPU_MAXFREQ=fastest
  
## Неправильный набор
BATT_CPU_MINFREQ=fastest
LM_AC_CPU_MINFREQ=fastest
# Следующее включает AC и BATT, но параметр BATT уже определен
NOLM_CPU_MINFREQ=fastest

Настройка управления частотой CPU

Поддержка управления частотой центрального процессора в пакете laptop mode tools позволяет переключение частот. Поддерживается настройка регулятора частоты процессора (CPU frequency governor), минимальная и максимальная частоты. Используемым файлом конфигурации является /etc/laptop-mode/conf.d/cpufreq.conf .

Регулятор частоты процессора (CPU frequency governor) — это политика уровня ядра, которая определяет как ядро выбирает частоту центрального процессора. Ранее мы уже выбрали регуляторы, которые хотим использовать, в конфигурации ядра. Давайте это просуммируем:

  • performance всегда подбирает наибольшую частоту
  • powersave всегда подбирает наименьшую частоту
  • userspace не выбирает ничего, но позволяет пользователю решить (или любому пользовательскому процессу, который решит за пользователя)
  • ondemand повышает частоту центрального процессора до наивысшей, при доступной нагрузке
  • conservative постепенно повышает частоту центрального процессора, при доступной нагрузке

При переключении между питанием от сети (AC) или батареей, или laptop mode, выбирается подходящий регулятор (наряду с минимальной и максимальной частотами)

Настройка яркости дисплея

С помощью файла /etc/laptop-mode/conf.d/lcd-brightness.conf можно заставить пакет laptop mode tools управлять яркостью ЖК-дисплея.

В данный момент для установки значений яркости используется файл /proc/acpi/video/VID/LCD/brightness (bug 499544). Недавние версии ядер больше это не предусматривают - вместо этого необходимо настроить /sys/class/backlight/acpi_video0/brightness.

Значения, которые можно использовать, лежат в пределах от 0 до значения в /sys/class/backlight/acpi_video0/max_brightness, с нулем в качестве наименьшего значения яркости.

Настройка других сервисов

Интересной особенностью пакета laptop-mode-tools является поддержка перезагрузки отдельных сервисов (таких как системный журнал) после переключения файла конфигурации. Это настраивается через /etc/laptop-mode/conf.d/configuration-file-control.conf.

Если это включено, приложение laptop_mode переключает файлы конфигурации упомянутых сервисов на такой же файл, но с суффиксом -nolm-ac, -lm-ac или -batt. Затем оно подает сигнал или перезагружает соответствующие сервисы, чтобы они могли использовать новый файл конфигурации.

Использование cpufreqd

Предупреждение
Пакет sys-power/cpufreqd был объявлен устаревшим и был удален из дерева Portage.

Пакет sys-power/ncpufreqd все еще можно использовать для 2.6.x kernels.

Установка

Приложение cpufreqd позволяет пользователю управлять частотой процессора с помощью более модульного подхода, чем тот, который поддерживает laptop-mode-tools. Но перед тем как мы погрузимся в установку cpufreqd, давайте сперва рассмотрим поддерживаемые им USE-флаги.

USE-флаг Описание Применяется когда...
acpi Включает поддержку ACPI, позволяя cpufreqd получать уведомления об отдельных событиях, а также управлять питанием через интерфейс ACPI ноутбук не очень стар (~ 2003-го года и позже)
apm Включает поддержку APM, позволяя cpufreqd получать уведомления об отдельных событиях, а также управлять питанием через интерфейс APM ноутбук очень старый
lm_sensors Включает поддержку аппаратных датчиков Linux (через sys-apps/lm_sensors), позволяя переключать профили в зависимости от результатов аппаратных датчиков используются расширенные события через lm_sensors
nforce2 Включает поддержку Nforce, позволяя cpufreqd изменять тактовую частоту NForce FSB (Front Side Bus) и частоту графической платы используется графическая плата NVidia, основанная на чипсете NForce
nvidia Включает поддержку настройки графической платы NVidia (через интерфейс NVidia nvclock), позволяя cpufreqd изменять частоту графической платы видеокарт NVidia используется графическая плата NVidia
pmu Включает плагин модуля управления питанием (Power Management Unit plugin) cpufreqd. Это позволяет программному обеспечению опрашивать интерфейс снабжения питанием ядра Linux (Linux kernel Power Supply), получая более подробную информацию о заряде батареи. ноутбук не поддерживает ACPI или APM

USE-флаги acpi, apm и pmu накладываются друг на друга, поэтому необходимо включить только один из них. Если ноутбук довольно современный, acpi является лучшим выбором. Если это не так, apm предлагает все, что необходимо. Когда даже APM не поддерживается, можете попробовать pmu.

После того как USE-флаги настроены, настало время установить cpufreqd.

root #emerge --ask cpufreqd

Конфигурация

Состояние системы контролируется приложением cpufreqd с помощью нескольких плагинов. Основываясь на отклике, получаемом от этих плагинов, настраивается политика, используемая для регулирования частоты CPU.

cpufreqd может быть настроен редактированием /etc/cpufreqd.conf. Этот файл содержит три разных раздела:

  1. В разделе [General]...[/General] хранятся основные настройки.
  2. Разделом [Profile]...[/Profile] определяются политики, на которые может переключаться cpufreqd. Этот раздел очень схож с информацией, использованной ранее при настройке частоты процессора вручную с использованием cpufreq-set.
  3. Раздел [Rule]...[/Rule] - это рабочая лошадка демона cpufreqd, определяющая когда демон решает переключиться на другой профиль.

Взглянем на пример правила.

ФАЙЛ /etc/cpufreqd.confПример правила cpufreqd
[...]
  
[Profile]
name=On Demand High
minfreq=40%
maxfreq=100%
policy=ondemand
[/Profile]
  
[Rule]
name=AC Off - High Power
ac=off
battery_interval=70-100
profile=On Demand High
[/Rule]
  
[...]

В примере выше, cpufreqd переключает систему на профиль On Demand High (также показанный в предыдущем отрывке). Этот профиль использует регулятор ondemand с минимальной частотой в 40 % (другими словами, процессор с частотой 2 ГГц будет иметь в соответствии с этой политикой минимальную частоту 800 МГц).

Приложение cpufreqd предлагает более модульный подход к управлению частотой CPU. Но частоту CPU можно настроить в соответствии с различными другими доступными показателями. Конфигурация по умолчанию предлагает образец правила: для просмотра кино требуется максимальная производительность (пока температура CPU не станет очень высокой).

После настройки cpufreqd нужно его запустить (и убедиться, что сервис загружается автоматически). Убедитесь, что регулирование частоты CPU другими инструментами (такими как laptop-mode-tools) отключена!

root #rc-update add cpufreqd default
root #/etc/init.d/cpufreqd start

Смотрите также

Ссылки

  • Laptop Mode Tools Homepage и About laptop mode.
  • PowerTOP, интерактивное приложение поможет пользователям узнать, какие процессы заставляют пробуждатся CPU чаще всего.
  • ThinkWiki статья о том, как уменьшить потребление энергии (на Linux). Эта статья содержит исчерпывающий список мер, которые можно предпринять. Тем не менее, следует отметить, что в laptop mode tools реализовано большинство из них (если правильно настроить).

Ссылки

  1. Dominik Brodowski. Intel P-State driver, CPU frequency and voltage scaling code in the Linux(TM) kernel. Retrieved 12 June 2016.
  2. Dominik Brodowski. Intel P-State driver, [https://www.kernel.org /doc/Documentation/cpu-freq/index.txt CPU frequency and voltage scaling code in the Linux(TM) kernel]. Retrieved 12 June 2016.