Управление питанием/Руководство
В последнее время управление питанием стало одной из отличительных черт при поиске совершенного ноутбука. Все же, различные функции сохранения заряда батареи также должны поддерживаться операционной системой. В этом руководстве будет описана настройка Gentoo таким образом, чтобы она управляла энергозависимыми ресурсами гибким, но все же автоматизированным способом.
- 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]
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
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:
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
:
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. Этот файл содержит три разных раздела:
- В разделе
[General]...[/General]
хранятся основные настройки. - Разделом
[Profile]...[/Profile]
определяются политики, на которые может переключаться cpufreqd. Этот раздел очень схож с информацией, использованной ранее при настройке частоты процессора вручную с использованием cpufreq-set. - Раздел
[Rule]...[/Rule]
- это рабочая лошадка демона 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 реализовано большинство из них (если правильно настроить).
Ссылки
- ↑ Dominik Brodowski. Intel P-State driver, CPU frequency and voltage scaling code in the Linux(TM) kernel. Retrieved 12 June 2016.
- ↑ 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.