О сохранении энергии, батареях и процессорах

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


Немного о сохранении энергии
Очень часто приходится удивляться тому, как народ пытается продлить время работы от батарей ноутбука. Многие считают, что в ноутбуке энергию потребляет только процессор. Собственно, с этого начинаются почти все вопросы: какие утилиты, что делать и прочее.
Кое-кто догадывается, что не только процессор потребляет энергию, но ещё и довольно яркий LCD-монитор (особенно с большой диагональю) со своей видеокартой, винчестер и CD/DVD привод. Кроме того, не стесняются в расходе электричества разные беспроводные устройства, такие как WiFi и Bluetooth.

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


Только день простоять, только ночь продержаться...
Итак, стоит задача: с приемлемым комфортом работать на ноутбуке от батарей до возможности подключиться к линии электропитания. При этом можно работать, не замечая перехода на батареи и ни в чём себе не отказывая - тогда не надо удивляться сообщению LOW BATTERY через 30-40 минут (вместо обещанных производителем N часов). Так что если решили удлинять время работы от батарей, то стоит обратить внимание на следующие компоненты:


1. Монитор
Замечали, что при переходе на батареи яркость монитора немного падает? Это очень даже неспроста: лампы подсветки, которые стоят перед массивом ЖК-ячеек, потребляют изрядное количество электроэнергии. Так что имеет смысл при переходе на батареи сразу снизить яркость монитора до минимально приемлемой.

Увеличение времени работы от этого будет очень и очень значительным.
Не верите - зайдите в /proc/acpi/ и найдите там информацию о батареях. Особенно обращая внимания на строчку о скорости расхода батарей. Посмотрите на значения при минимальном приемлемом уровне яркости и максимальном.

Из практических рекомендаций можно порекомендовать включить DPMS (
Display Power Management Signaling), что позволит сразу переводить монитор в режим ожидания. Для этого следует добавить в /etc/X11/xorg.conf в секцию Monitor:

Option "DPMS" "true"
И можно сразу перевести монитор в режим ожидания командой xset dpms force standby
Больше о DPMS можно узнать, например, здесь.

Так же можно воспользоваться xbacklight для управления подсветкой (если в ноутбуке есть проблемы с ACPI и нельзя управлять яркостью монитора кнопками на клавиатуре).


2. Видеокарта
Собственно, попытка что-нибудь рендерить или играть в крутые игрушки (да ещё под эмуляторами) быстро отправят вас на поиски дополнительной батареи. Современные видеоадаптеры ноутбуков потребляют энергию не скромничая, так что откажите себе в удовольствии дико вращать куб в Compiz/Beryl и работать в нём с захардкоренными настройками.


3. Винчестер
Это ещё одно устройство из самых энергоёмких в системе, так что лучше тяжёлые задачи отложить на потом и поиском на диске не злоупотреблять. В Линукс, правда, это несколько проще: здесь оперативная память используется по полной программе и всё, что только можно, кэшируется. Это хорошая новость: чем меньше система лезет к винчестеру при работе от батарей, тем дольше система будет автономно работать.
По этой же причине хорошо бы не увлекаться запуском всех нужных программ сразу, иначе система будет лезть в своп. Кстати, подкачку можно отключить при работе от батарей:
swapoff /dev/sda2
если раздел со свопом /dev/sda2 (или своп-файл). Можно так же уменьшить склонность системы лезть в своп такой командой:
# echo 10 > /proc/sys/vm/swappiness
Так можно наиграть ещё полчасика до подхода к постоянным энергетическим ресурсам.

Можно использовать режимы энергосбережения винчестеров, применяя hdparm с ключами -M (Automatic Acoustic Management (AAM) setting) и -S (Set the spindown timeout for the drive). Немедленный переход винчестера в спящий режим можно инициировать командой hdparm -y /dev/hda

Узнать текущий режим энергопотребления винчестера можно командой hdparm -C /dev/hda



4. Оптические приводы и внешние винчестеры
Правило то же самое: как можно меньше обращаться к внешним и оптическим накопителям. Дело это энергетически затратное, что бы там производители не рассказывали. Если задумаете писать DVD-диск от батарей, очень может быть, что энергия кончится раньше, чем он допишется.

Если вы только считываете с оптического привода, есть смысл поставить скорость меньше при помощи команды:

sudo eject -x 2 /dev/hdb



5. Процессор
Вот мы добрались и до этого, заметьте, в последнюю очередь. Это такой тонкий намёк на то, что только лишь снижением электропитания на нём многого не добиться. Помните: снижая тактовую частоту процессора, вы замедляете свою собственную работу. Какой смысл работать со вдвое меньшей производительностью, если задачи будут выполняться дольше!?

И всё-таки не стоит пренебрегать снижением тактовой частоты процессора, раз уж производитель процессора предоставил нам такую возможность.
Для того, чтобы управлять частотой процессора, потребуется установить (заблаговременно, конечно) следующие утилиты:
# aptitude install cpufrequtils cpufreqd cpudyn
У меня это отняло около 500Кб места на диске - не очень обременительно.
После этого будет запущен демон, который станет отслеживать загруженность процессора и, в случае простоя, оперативно переводить процессор в режим с меньшим энергопотреблением. Вот что сообщает мой процессор, Intel Pentium M 1.75 ГГц на запрос о его энергетических способностях:
# cpufreq-info
cpufrequtils 002: cpufreq-info (C) Dominik Brodowski 2004-2006
Report errors and bugs to linux@brodo.de, please.
analyzing CPU 0:
driver: centrino
CPUs which need to switch frequency at the same time: 0
hardware limits: 798 MHz - 1.73 GHz
available frequency steps: 1.73 GHz, 1.73 GHz, 1.73 GHz, 1.73 GHz, 1.73 GHz, 1.73 GHz, 1.73 GHz, 1.33 GHz, 1.06 GHz, 798 MHz
available cpufreq governors: conservative, ondemand, powersave, userspace, performance
current policy: frequency should be within 798 MHz and 1.73 GHz.
The governor "powersave" may decide which speed to use
within this range.
current CPU frequency is 798 MHz (asserted by call to hardware).
Так как сейчас я пишу эту заметку и процессор на это много сил не тратит, он переведён в режим "powersave", что разумно: загрузка его не превышает 4-5% (это вместе с запущенным индикатором conky и играющим музыку xmms). Как только я запускаю приложение - он переключается в режим "performance".
current policy: frequency should be within 798 MHz and 1.73 GHz.
The governor "performance" may decide which speed to use
within this range.
current CPU frequency is 1.73 GHz.

Всё это выполняет демон, чтобы я не отрывался от более важных дел:
root 4958 0.0 0.1 1572 504 ? SNs 09:21 0:10 /usr/sbin/cpudynd -i 1 -p 0.5 0.9 -l 7
Соответственно, чтобы этим воспользоваться, в ядре должно быть включено CPU Frequency Scaling (если оно самосборное, в дефолтном должно быть включено).


Итоги
Когда задумаете продлевать время работы от батарей, не забывайте: не только процессор потребляет электроэнергию. В выяснении дополнительных потебителей батареек вам пригодится утилита PowerTop, которая может дать несколько полезных рекомендаций по снижению энергопотребления.

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

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

23 комментариев: |высказаться!| RSS-лента дискуссии.|
Last~Exile комментирует...

Статья очень полезная, т.к. использую ноутбук в школе часто без доступа к источникам питания.

Вобщем-то интересным мне оказалось только про процессор, т.к. всё остальное итак по возможности выполнял (хотя от записи CD/DVD всё равно отказаться невозможно).

Автономное время обычно не превышает 2-2,5 (двухядерная машинка).

А как можно проверить, включён ли режим CPU Frequency Scaling в ядре?

san-sanych-r комментирует...

есть весьма полезная утилита powertop - благодаря которой можно найти процесы пожирающий вашу батарею :).описание к сожалению не найду. У моего ноута самым прожорой оказалась подсветка ЖК - снижаешь яркость до минимума и потребление падает с 16 Вт до 12-13

Анонимный комментирует...

Ппц! С powertop вообще статью нужно начинать. Также весьма нужный пакет - laptop-mode-tools.

Stan комментирует...

Михаил, у вас опечатка в названии - баратерях - наверное имелось в виду - батареях?

Спасибо за статью, очень познавательно

Анонимный комментирует...

немного не согласен по поводу того, что минимальная частота процессора тормозит повседневную работу. Мне кажется, в современных ноутбуках для обыденной работы с лихвой хватает минимальной мощности (если не заниматься пересборкой всей системы из исходников, играми,etc). я свой ноутбук по умолчанию загоняю в режим с минимальный потреблением еще на этапе загрузки; он и греется меньше... а вот если нужно что-то сделать ресурсоемкое - перевожу свои ядра в performance и работаю.

GQ комментирует...

>aptitude install cpufrequtils cpufreqd cpudyn

Это лишнее, достаточно cpufrequtils и настроить чтобы при старте выставлялся говернор ondemand

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

Анонимный комментирует...

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

Анонимный комментирует...

Удивительная статья... Ни слова конкретеки. И ещё более удивительно, что автор, критикуя инициативу undervolt, даже не удосужился вникнуть в суть дела, просмотреть патчи, разобраться. Суть же патчей такова, что во-первых, увеличивается число рабочих частот, на которых может работать процессор в режиме on demand, а во-вторых, каждой частоте соответствует своё напряжение питания, причём это легко контролируется и корректируется. К снижению производительности это ну никак не приводит, а энергопотребление и нагрев снижается значительно. Для HP TC-1100 c 15.9 до 13.2 Вт по данным powertop и с 51 C до 39 C в режиме покоя. Кстати, использование драйвера nvidia вместо nv в моём случае уменьшило потребление энергии на 2 Вт.

Анонимный комментирует...

Удивительная статья... Ни слова конкретеки. И ещё более удивительно, что автор, критикуя инициативу undervolt, даже не удосужился вникнуть в суть дела, просмотреть патчи, разобраться.
Наезжая на автора мы конечно же улучшаем качество последующих постов :) Но хотелось бы отметить, что на заре этого блога Virens обещался по возможности не давать готовых решений.

virens комментирует...

2 Last~Exile пишет...
А как можно проверить, включён ли режим CPU Frequency Scaling в ядре?
Например, так:

cat /boot/config-2.6.22.1RT | grep CPU_FREQ
# CONFIG_CPU_FREQ is not set


2 san-sanych-r пишет...
есть весьма полезная утилита powertop
Да есть, есть,только её советы сводятся к USB_SUSPEND. Кроме того, для её работы нужно в ядре кое-что включить.

Пост, на самом деле, есть ответ некоторым "особо грамотным", которые загоняют свой процессор в режим undervolt и при этом работают на полной яркости дисплея и постоянно производя поиск на винчестере. :-)

2 Stan пишет...
Михаил, у вас опечатка в названии - баратерях - наверное имелось в виду - батареях?
Ой, а слона-то я и не заметил :-) Спасибо большое, исправлено.


2 Анонимный пишет...
немного не согласен по поводу того, что минимальная частота процессора тормозит повседневную работу.
Во всяком случае, на моём Pentium M 1.75 это очень, очень заметно. На двуядернике, конечно, меньше, согласен.

2 GQ пишет...

>aptitude install cpufrequtils cpufreqd cpudyn

Это лишнее, достаточно cpufrequtils и настроить чтобы при старте выставлялся говернор ondemand

Просто демон сам выбирает говернор, насколько я понял. Удобственно.

2 Анонимный пишет...
Про диски хотел было возразить, что билины вращаются вне зависимости от того пишите вы данные или нет
Это не так.

удивлением обнаружил, что ноутбучные диски последних моделей в режиме холостого хода действительно на 30-50% меньше энергии потребляют.
В том-то и дело. Поэтому кэш и небольшой своп делают своё дело. Тормозить винчестер часто тоже бессмысленно: на разгон тратится много энергии.

2 Анонимный пишет...
Удивительная статья... Ни слова конкретеки.
"Не читал, но осуждаю"? (с)ЛОР

И ещё более удивительно, что автор, критикуя инициативу undervolt, даже не удосужился вникнуть в суть дела
Автор как раз в суть дела вник. Начинание интересное, но в плане экономии энергии весьма бессмысленное (основная работа идёт медленее), и ещё неизвестно, как это отразится на работе самого процессора.


2 Анонимный пишет...
Наезжая на автора мы конечно же улучшаем качество последующих постов :)
Наезжать надо конструктивно :-)

Но хотелось бы отметить, что на заре этого блога Virens обещался по возможности не давать готовых решений.
Кхм... Вот если поднять глаза на самый верх блога, там почему-то пишут: "В этом блоге публикуются заметки и решения, найденные в процессе работы..." Орлы, здесь не ЛОР, тут ходить по ссылкам и читать текст как раз Ъ :-)

Svyatogor комментирует...

Хороший обзор вышел. Однако, мне кажется, автор все таки незаслужено принижает роль CPU в потреблении энергии. Лично я перевожу его на 50% мощности и это значительно увеличивает время работы. Про этом произодительность обычных задач почти не страдает и земтно это становится разве что при распаковке архивов.

Анонимный комментирует...

ребята, уберите совет про отключения свопа! А то в самый неподходящий момент познакомитесь с oom_killer. Свопа должно быть хотя бы 30 метров _всегда_. Тачка лезет в своп не тогда когда кончается память а тогда когда не может выделить память что при большой фрагментации памяти может наступить в самый неподходящий момент. Если хотите отказаться от свопа то юзайте /proc/sys/vm/swappiness

Casufi комментирует...

Существуют ли утилиты, которые позволяют снижать яркость монитора автоматически ?

SloTh комментирует...

По вышеприведённой теме есть вопрос: При запуске kpowersave от обычного пользователя спящий режим и режим сохранения на диск не работают, бук просто лочится и все. Если же пустить через sudo (sudo kpowersave) то все нормально работает. Предполагаю, что проблема в том, что скрипт pm-suspend должен вызываться от root-а, но как это настроить в kpowersave не нашел. Может кто решил сие?

2k комментирует...

при попытке установить cpudyn предлагается снести cpufreqd и наоборот. Проц такой же как у автора, C530 (1.73). Система Debian Sid :) - видимо из-за этого. Ядро 2.6.24.

pollution-laptop:/home/pollution# cpufreq-info
cpufrequtils 002: cpufreq-info (C) Dominik Brodowski 2004-2006
Report errors and bugs to linux@brodo.de, please.
analyzing CPU 0:
no or unknown cpufreq driver is active on this CPU

Ноут сильно греется и шумит, проц всегда на 100% частоты. Куда копать?

ЗЫ За статью большое спасибо ))

Никита Лялин комментирует...

> (особенно на фоне компилирующихся на фоне приложений и воспроизведения видео на экране в полную яркость)

два раза "на фоне"

virens комментирует...

2 Анонимный пишет...
ребята, уберите совет про отключения свопа! А то в самый неподходящий момент познакомитесь с oom_killer.
Это не совет про отключение свопа, а лишь возможность это сделать. Вкупе с рекомендацией не запускать сотню приложений сразу довольно разумно. Но про swapiness написать забыл, исправил.

2 Casufi
Существуют ли утилиты, которые позволяют снижать яркость монитора автоматически ?
Не знаю, и даже не представляю себе, как они могут работать.

2 SloTh пишет...
По вышеприведённой теме есть вопрос: При запуске kpowersave
У меня KDE нету.

2 2k пишет...
при попытке установить cpudyn предлагается снести cpufreqd и наоборот.
А у меня стоят оба вместе.


2 Никита Лялин пишет...
два раза "на фоне"
Большое спасибо, исправлено.

sda комментирует...

маленькое дополнение к статье:

http://sda00.blogspot.com/2008/04/blog-post_27.html

Ведьмак комментирует...

Доброго вечера!
Являюсь постоянным читателем вашего замечательного блога-журнала. Как всегда - очень интересный материал, но позволю вас отправить по ссылке:
http://eee-pc.ru/wiki/ubuntu:%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F, где особенно интересен раздел "Энергосбережение", в подразделе "Включение оборудования только по требованию", есть то, что вы упустили, а именно - отключение оборудования, которое может и не есть дорогие минуты батарейного времени.

virens комментирует...

2 sda комментирует...
маленькое дополнение к статье:
Спасибо за отзыв, часть материала я уже попользовал от вас :-)

2 Ведьмак комментирует...
Доброго вечера!
Добрый!

позволю вас отправить по ссылке
Так на то комментарии и открыты - большое спасибо, что кинули такой полезной ссылкой! Уже захватил её к себе в броузер и при оказии внимательнее прочту.

Надо будет обновить пост. Ещё раз спасибо за ценный комментарий!

Ведьмак комментирует...

Надо будет обновить пост. Ещё раз спасибо за ценный комментарий!

Я думаю, что к описанным методам Вы добавите свои решения, что будет очень полезно для всего сообщества))
Рад, что смог помочь)

Ha0s комментирует...

2 SloTh:
Может и поздновато, но лучше, чем никогда.
Чтобы Kpowersave нормально работал от простого сметрного пользователя, надо добавить его в группу powerdev (sudo adduser логин powerdev) и будет счастье!

Михаил комментирует...

Спасибо за статью.
Можно ли к-н снизить мощность wi-fi?

Отправить комментарий

Подписаться на RSS-ленту комментариев к этому посту.