Автономная работа ноутбука с Linux

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

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

Управляем дисками

Для управления HDD воспользуемся известной в миру утилитой под именем hdparm.

hdparm -B 1 -S 12 /dev/sda

 

Детально расписывать функции не стану, но…

Опция «-B 1» – включение наиболее радикального уровня экономии энергии с отключением вращения шпинделя HDD.

Опция «-S 12» – задает время остановки шпинделя через 60 секунд после окончания обращения системы к HDD. Всего 255 значений данной опции. Если выставить значение «0», то шпиндель не буде останавливаться вовсе.

Warning!!! Данная операция значительно сократит срок жизни HDD.

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

Для того, чтобы осуществить замысел необходимо активизировать «режим ноутбука» в подсистеме виртуальной памяти операционной системы.

echo 5 > /proc/sys/vm/laptop_mode

 

echo 'vm. laptop_mode=5' >> /etc/sysctl.conf

 

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

Так же можно выставить более высокие значения тайм-аута для сброса «грязных буферов» на диск (имеются ввиду измененные части файлов, но еще не записанные на диск) с 5 секунд (по умолчанию) до 15 или 30.

echo 1500 > /proc/sys/vm/dirty_writeback_centisecs

 

echo 'vm. dirty_writeback_centisecs=1500'

 

Не смотря на всю радужность наших нововведений, есть вражина, которая будет мешать экономии энергии, путем постоянной синхронизации FS во время и после записи в журнал. Но и мы не лыком шиты. Открываем /etc/syslog.conf для редактирования и в начало каждой строчки, которая ведет к журналу. Таким образом, мы полностью отключаем журнального демона.

Warning!!! Данное изменение может привести к крушению системы или потере данных.

Еще, против нашего стремления продлить жизнь аккумулятора выступает стандарт POSIX, который обязывает файловую систему запоминать последнее время обращения к файлу используя опцию atime. Кстати, отключив данную функцию мы экономим не только энергию, но повышаем производительность ноутбука за счет снятия части нагрузки.

mount -o remount, noatime /

 

echo '/dev/раздел точка_монтирования ext3 noatime 0 1' >> /etc/fstab

 

Warning!!! Изменение данных функций приведет к некорректной работе почтовых клиентов и других утилит нотификации.

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

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

Дрессируем графический процессор

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

Лично я рекомендую наиболее полезные для здоровья пользователя и батарейки шаги – динамичную подсветку в зависимости от времени суток.

К примеру, днем – 90%, вечером 70-80%, а ночью или в полной темноте достаточно 50-60%. Это позволит продлить автономную работу от 30 до 60 минут, в зависимости от размеров матрицы.

Для этого в cron (планировщик особых заданий) стоит внести особые сценарии поведения.

Если срочно нужно снизить яркость экрана, не дожидаясь вечера, то можно воспользоваться распространенной утилитой xbacklight.

xbacklight -set 70

 

Если используется продвинутая графическая система с множеством видеовыходов и TV-приемников, то стоит отключить все процессы кроме матрицы.

xrandr –output ВЫХОД –off

 

На правах стандартного совета. Отключите 3D эффекты рабочего стола и не используйте энергоемкие рабочие столы. Смените KDE или GNOME на более экономичные решения.

Обучаем процессор экономии

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

В ядро Linux давно встроена функция энергосбережения при использовании многоядерного процессора (P-state), однако, бывают случаи, когда этот процесс или не включается или, случайно, отключается. Для того, чтобы проверить выводим команду.

ls /sys/devices/system/cpu/cpu0/cpufreq

 

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

cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors

 

echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

 

А если выполнить данную команду:

echo 1 > /sys/devices/system/cpu/sched_mc_power_savings

 

То Linux будет использовать одно ядро процессора до того момента, пока не возникнет необходимость во втором.

echo 1 > /sys/devices/system/cpu/sched_mc_power_savings

 

Кстати, под Windows полно программ со схожей функцией балансировки нагрузки по ядрам.

Экономим аккумулятор на звуке

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

95% ноутбуков предыдущего поколения оснащены аудиочипом AC97, а Linux прекрасно справляется с энергосбережением, однако, дискомфорт от звука при переходе в режим экономии и обратно стал причиной, по которой данную функцию отключили «по умолчанию» и ее придется включить руками.

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

 

Для более современных ноутбуков с Intel HD Audio:

cat /sys/module/snd_hda_intel/parameters/power_save

 

Оптические устройства (приводы)

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

Основной процент энергии тратится не на чтение дисков (хотя этот момент тоже присутствует), а на опрос привода, на момент появления новых дисков. Это не рационально, особенно когда у тебя нет даже намерения пользоваться приводом в дороге, а демон hald (независимо от графического окружения) опрашивает привод каждые 2 секунды.

Если у вас нет напряга по поводу ручного монтирования дисков, то данный демон проще всего убить, чтобы не мешался под руками и не тратил драгоценные ватты.

hal-disable-polling –device /dev/cdrom

 

На сетевых интерфейсах тоже можно экономить ресурс аккумулятора

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

1. Отключаем функцию «Wake On Lan». Это можно сделать из BIOS или воспользуемся утилитой ethtool.

ethtool -s eth0 wol d

 

А если понадобится включить, то:

ethtool -s eth0 wol g

 

2. Если у вас нормальная современная сетевая карта-гигабитка, то имеет смысл снизить скорость передачи данных (не припомню я чтобы мне хоть раз доводилось работать на скорости гигабит\сек). Тем более это полезно, если сетевое соединение устанавливается только для интернета.

ethtool -s eth0 autoneg off speed 100

 

Или совсем аскетичный вариант для тех, у кого скорость интернета не больше 10 Мбит:

ethtool -s eth0 autoneg off speed 10

 

Для еще большей экономии ресурса аккумулятора.

В данном случае autoneg отключает автоопределение потенциала скорости передачи данных, а speed – соответственно скорость.

3. Принимаемся за Wi-Fi адаптер. Современные адаптеры очень хорошо работают с протоколом PS-Poll, который обесточивает адаптер, если в нем нет необходимости. По умолчанию эта функция отключена в Linux, чтобы минимизировать задержки при передачи данных, однако, если вы не геймер (какой гейминг в дороге-то?!?) то спокойно включайте функцию.

iwpriv eth1 set_power 5

 

Если вас напрягают задержки, то поэкспериментируйте со значением от 1 до 6, при том, что 6 – полное отключение электропотребления.

Есть вариант вообще отключить адаптер к чертовой бабушке, чтобы он не напрягал, а то какое соединение в поезде, например?

for i in 'find /sys -name «rf_kill»'; do echo 1 > $i; done

 

Если понадобилось снова включить, то отзеркаливаем команду:

for i in 'find /sys -name «rf_kill»'; do echo 0 > $i; done

 

4. Примемся за bluetooth, если в нем нужды нет, то просто отключаем адаптер.

hciconfig hci0 down

 

rmmod hci_usb

 

Экономия энергии за счет программных продуктов

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

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

 

Geek-Nose
cf62967257fc7d63adbf1bfcbb23e623