Заявленное время работы ноутбука и реальные часы от батареи расходятся в полтора-два раза: часть энергии уходит на фоновые службы, неверные профили частот и неграмотные настройки радио. Разберём, как измерить расход, настроить TLP, использовать powertop там, где он уместен, и избежать конфликтов с демонами питания, молча откатывающих ваши настройки.
Сначала измерьте, потом настраивайте
Любая сессия по экономии начинается с базового замера. Включите профиль «батарея», задайте среднюю яркость и снимите показания:
upower -i /org/freedesktop/UPower/devices/battery_BAT0
grep . /sys/class/power_supply/BAT0/power_now
grep . /sys/class/power_supply/BAT0/energy_now
Поле power_now показывает текущий расход в микроваттах, energy_now — остаток заряда. Записывайте значения в одном и том же сценарии: браузер с двумя вкладками, затем покой с включённым экраном. Разница между замерами «до» и «после» — единственное честное доказательство, что настройки сработали. Сразу оцените и здоровье батареи: energy_full против energy_full_design.
Сравнивать удобно не мгновенные скачки, а мощность, снятую с интервалом: подождите пять минут без действий и разделите разницу заряда на время. Простейший замер выглядит так:
grep . /sys/class/power_supply/BAT0/energy_now
sleep 300
grep . /sys/class/power_supply/BAT0/energy_now
Значения energy_now хранятся в микроватт-часах: умножьте разницу на 12 — получите среднюю мощность за интервал в микроваттах, а для ватт разделите результат на миллион. Записывайте итог в заметки — он понадобится для сравнения после каждой настройки.
Зарядка, здоровье и ресурс батареи
Автономность падает не только от настроек: химический износ важнее всего. Держите заряд в рабочей полосе от двадцати до восьмидесяти процентов, если ноутбук большую часть времени подключён к сети.
grep . /sys/class/power_supply/BAT0/energy_full_design
grep . /sys/class/power_supply/BAT0/energy_full
cat /sys/class/power_supply/BAT0/charge_control_start_threshold 2>/dev/null
Файлы charge_control_start_threshold и charge_control_end_threshold есть у большинства ThinkPad и ряда других моделей: выставьте 75 и 80, и контроллер сам прекратит зарядку. Если файлов нет, полагайтесь на прошивку и не держите устройство на зарядке сутками подряд — это сокращает ёмкость заметнее, чем кажется.
Установка TLP и стартовая конфигурация
TLP применяет настройки при каждой смене состояния «сеть или батарея»: от профилей CPU и ASPM до управления портами и Wi-Fi. Он обращается к ядру напрямую и не зависит от десктопного окружения.
sudo apt install tlp tlp-rdw powertop
sudo systemctl enable --now tlp
sudo tlp-stat -s
grep -E 'CPU_SCALING_GOVERNOR|PCIE_ASPM|RUNTIME_PM_ON_BAT' /etc/tlp.conf
Ключевые строки в /etc/tlp.conf: CPU_SCALING_GOVERNOR_ON_BAT=powersave или schedutil на новых ядрах, CPU_ENERGY_PERF_POLICY_ON_BAT=power, PCIE_ASPM=powersupersave, RUNTIME_PM_ON_BAT=auto, DISK_APM_LEVEL_ON_BAT=»128 128″, WIFI_PWR_ON_BAT=on. После правок выполните tlp start и проверку tlp-stat -c: утилита покажет, какие параметры применены, а какие перекрыты другим механизмом.
Powertop: диагностика и автоматическая настройка
Powertop умеет два разных действия: строить отчёт о потребителях и выставлять разумные значения по умолчанию. Первое полезно всегда, второе — с оговорками.
sudo powertop --html=/tmp/powertop.html
sudo powertop --time=60 --csv=/tmp/powertop.csv
sudo powertop --auto-tune
Отчёт показывает, сколько энергии уходит на каждый процесс и устройство: светодиоды, незаснувшие порты USB, невыключенные таймеры. Автоматическая настройка пишет параметры в sysfs при каждом запуске и гаснет после перезагрузки, поэтому её оформляют отдельным юнитом, если TLP не используется. Запускать autotune параллельно с TLP не стоит: оба претендуют на одни и те же файлы управления.
Конфликт с power-profiles-daemon
Современные десктопы по умолчанию ставят power-profiles-daemon, а панель управления показывает его профили в шторке. Демон и TLP управляют одинаковыми регуляторами, и настройки начинают откатываться после переключения профиля. Проверить и устранить конфликт просто:
systemctl status power-profiles-daemon
sudo systemctl disable --now power-profiles-daemon
sudo tlp start && tlp-stat -c | head -20
Оставляйте power-profiles-daemon, если пользуетесь его переключателем осознанно, и отключайте TLP — работать одновременно им нельзя. На релизах, где TLP не входит в комплект, аналогичную роль играет tuned, и его конфигурация лежит в каталоге /etc/tuned/.
Частоты, тепловой пакет и thermald
На процессорах Intel штатный стек intel_pstate сам держит частоту в экономичном коридоре. Проверьте, какой драйвер работает, и при необходимости поставьте thermald: он ограничивает тепловой пакет вместо того, чтобы гонять частоту вверх и вниз при каждом пике.
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_driver
sudo apt install thermald
sudo systemctl enable --now thermald
grep . /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq
На батарее держите профиль powersave или schedutil: разница в мгновенном расходе между ним и performance доходит до десятков процентов. Ручное переключение через файл scaling_governor живёт до перезагрузки, поэтому оставьте это TLP и не дублируйте настройки скриптами.
Радио, экран и периферия
Заметная доля уходит на Wi-Fi и подсветку. Убедитесь, что карта действительно в энергосберегающем режиме, а не только записала его в конфигурацию:
iw dev wlan0 get power_save
sudo iw dev wlan0 set power_save on
grep -r power_save /etc/modprobe.d/
Для Intel-карт создаётся файл /etc/modprobe.d/iwlwifi.conf со строкой options iwlwifi power_save=1. Внешние накопители и радиомодули отключаются параметрами RUNTIME_PM_ON_BAT и DEVICES_TO_DISABLE_ON_BAT. Подсветку удобно крутить утилитой brightnessctl, а выключение экрана при простое — через настройки окружения: следите, чтобы скринсейвер не включался чаще нужного.
Сон, пробуждение и таймеры
Ноутбук, который не засыпает или не просыпается, съедает батарею быстрее всего. Проверьте, от чего разрешено пробуждение, и прогоните контрольный цикл сна:
cat /proc/acpi/wakeup | grep enabled
sudo rtcwake -m mem -s 60
journalctl -b -1 | grep -iE 'suspend|sleep' | tail
rtcwake засыпает машину на минуту и будит по таймеру — удобный способ проверить цикл без ожидания. Если после пробуждения не работает периферия, журнал предыдущей сессии покажет, какие драйверы жаловались на ошибки в момент ухода в сон; там же видно, не будили ли машину таймеры будильника или сетевая карта.
Чек-лист реальной автономности
- Снимите базовый замер power_now в фиксированном сценарии.
- Установите TLP, примените профиль батареи, проверьте результат командой tlp-stat -c.
- Убедитесь, что power-profiles-daemon не перетирает ваши настройки.
- Прогоните powertop и отключите ненужные порты и устройства.
- Проверьте power_save у Wi-Fi и уберите лишнее из автозагрузки.
- Сделайте повторный замер и сравните с базовым — прибавка должна быть видна в цифрах.
Итог
Автономность в Linux — не волшебная настройка, а результат измерений: сначала фиксируете расход, затем убираете по одной причине и сверяете показания. TLP отвечает за профили устройств, powertop — за поиск виновников, а отключение конфликтных демонов гарантирует, что настройки останутся на месте. Пройденный по шагам чек-лист даёт прибавку в часах работы, которую легко проверить и трудно потерять.