воскресенье, 30 марта 2008 г.

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

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


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

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


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

1. Монитор
Замечали, что при переходе на батареи яркость монитора немного падает? Это очень даже неспроста: лампы подсветки, которые стоят перед массивом ЖК-ячеек, потребляют изрядное количество электроэнергии. Так что имеет смысл при переходе на батареи сразу снизить яркость монитора до минимально приемлемой.
Увеличение времени работы от этого будет очень и очень значительным.
Не верите - зайдите в /proc/acpi/ и найдите там информацию о батареях. Особенно обращая внимания на строчку о скорости расхода батарей. Посмотрите на значения при минимальном приемлемом уровне яркости и максимальном.

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

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

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

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

5. Процессор
Вот мы добрались и до этого, заметьте, в последнюю очередь. Это такой тонкий намёк на то, что только лишь снижением электропитания на нём многого не добиться. Помните: снижая тактовую частоту процессора, вы замедляете свою собственную работу. Какой смысл работать со вдвое меньшей производительностью, если задачи будут выполняться дольше!?
Поэтому станет понятно, почему я назвал это извращением - зачем загонять процессор в режим "undervolt", когда нормальная работа при этом станет невозможной? Драгоценные секунды, которые вы наскребёте таким варварским способом, обратятся в пыль при одном лишь запуске OpenOffice.org...
И всё-таки не стоит пренебрегать снижением тактовой частоты процессора, раз уж производитель процессора предоставил нам такую возможность.
Для того, чтобы управлять частотой процессора, потребуется установить (заблаговременно, конечно) следующие утилиты:
# 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 (если оно самосборное, в дефолтном должно быть включено).


Итоги
Когда задумаете продлевать время работы от батарей, не забывайте: не только процессор потребляет электроэнергию. Поменьше вычислительных задач в это время, уменьшайте яркость экрана и обращений к диску и оптическим носителям. Ну и снижение частоты процессора, особенно во время простоя, поможет выскрести из аккумулятором несколько минут драгоценного времени. Лично у меня получалось работать по 6-6.5 часов от полностью заряженных аккумуляторов в автономном режиме на Asus M5200AE, и при этом это не было предельным временем.

Комментариев нет: