О том, как я заставлял Ubuntu работать 10 часов от батареи
Я являюсь рядовым линукс-пользователем и поэтому не стоит от этой статьи ожидать очень умных ходов или нестандартных программистских решений. Все по мануалам. Но раз результат достигнут, значит кому-то кроме меня это может оказаться полезным.
О том, как заставит ноутбук работать под линуксами как можно дольше, написано немало, в том числе и на хабре. В какой-то степени я еще раз соберу все советы воедино, от очевидных до обскурных, заодно опишу несколько проблем и решений, которые у меня оказались достаточно «индивидуальными».
Устанавливал я Ubuntu 10.10 на ноутбук Acer Aspire Timeline 5810TG. Эта машина обладает экраном в почти 16 дюймов и относительно производительным железом, зато батарея достаточно емкая, чтобы ставить с ней личные рекорды.
Содержание поста.
1. Отключаем дискретную видеокарту.
2. Полезные команды для энергосбережения.
3. Проблемы ноутбука (связанные с энергосбережением) и их решения.
4. Автоматизация.
5. Дополнительные советы.
1. Отключаем дискретную видеокарту.
В моем ноутбуке имеется возможность переключаться между встроенным графическим чипом от Intel, маломощным и малотребовательным к электроэнергии, и сравнительно сильной и энергоемкой карте ATI Radeon HD4330. Многие обладатели ноутбуков с переключаемой графикой испытывают проблемы в работе с Linux-системами. Поиск по «ubuntu switchable graphics» на убунтуформус выдает больше 50 страниц тем.
Мне производительная графическая карта нужна редко, поэтому я задался целью отключить ее по умолчанию с возможностью быстрого и безболезненного включения.
Очень много читал те самые 50 страниц форумных тем. А надо было всего лишь заглянуть в убунту-вики или даже попробовать воспользоваться хабрапоиском.
В версиях ядра, начиная с 2.6.34, присутствует механизм vga_switcheroo, позволяющий переключаться между видеокартами. То есть в Ubuntu 10.10 он есть по умолчанию. О том, как им пользоваться, хорошо было написано здесь (см. второй способ) почти год назад, я по-быстрому напомню, что к чему.
Вначале выполним
Зная, какой GPU как обозначается, посмотрим, какой из них в каком состоянии.
Плюсик стоит на против видеочипа, который используется в данный момент, Pwr означает, что видеокарта включена и потребляет энергию.
Важно: у всех моих немногих знакомых, обладающих ноутбуками с двумя видеокартами, картина одинаковая: что бы вы не делали, при загрузке системы обе карты работают, при этом для вывода используется встроенная «слабая» графика. Это нам на руку, ибо обесточивание неактивной видеокарт происходит бескровно.
Команда отключает неиспользуемую GPU сразу же. Поэтому мы обратимся к файлу /etc/rc.local, добавив в него вышеуказанную команду (перед строчкой exit 0). Так, при загрузке систему дискретная видеокарта уже будет отключена и мне не нужно будет беспокоиться ни о чем.
Важно: насколько я могу судить, vga_switcheroo не работает, если установлены проприетарные драйверы на дискретную видеокарту.
Кстати, если вы хотите переключаться между видеокартами через графический интерфейс, установите Ubuntu Control Center. Программа представляет собой панель управления параметрами Ubuntu, но нас она интересует исключительно из-за опции переключения между GPU (естественно, здесь это тоже происходит средствами vga_switcheroo).
Будьте аккуратны с UCC: во-первых, работает кривовато, например, мне необходимо было вначале переключиться на дискретную видеокарту, а лишь затем на встроенную, чтобы обесточить дискретную (либо вначале выполнить echo OFF > /sys/kernel/debug/vgaswitcheroo/switch, а затем переключаться на встроенную GPU). Но работает. Во-вторых, переключение происходит сразу, то есть без спросу выполняется завершение сеанса и приходится вновь залогиниваться.
Больше о переключаемой графике можно почитать в хабрапосте, на который я дал ссылку выше, а также в Убунту-вики и в этом блоге. Я к этому вопросу возвращаться не буду.
2. Полезные советы по энергосбережению.
Собирались эти советы с lesswatts, ubuntuforums, учитывались хинты от powertop, кое-что было найдено случайно.
1) Если у вас стоит убунту на ноутбуке, стопроцентно у вас установлен пакет laptop_mode, оптимизирующий работу компьютера в зависимости от источника питания. Значение 0, посылаемое в /proc/sys/vm/laptop_mode, отключает режим энергосбережения, 5 устанавливает самый агрессивный. Подробнее о том, как именно laptop_mode сберегает энергию, можно прочесть где угодно.
2) Режим энергосбережение для SATA-устройств.
Не знаю, почему у меня в /sys/class/scsi_host/ целых шесть устройств 🙂 Для включения максимального быстродействия выполнить команды с max_performance вместо min_power.
3) По умолчанию в Ubuntu есть четыре профиля работы процессора:
conservative: медленно повышает частоту процессора в зависимости от нагрузки на систему и резко сбрасывает частоту к минимальной при простое.
ondemand: быстро повышает частоту процессора при возрастании нагрузки и медленно сбрасывает частоту к минимуму при простое.
powersave и performance, очевидно, соответствуют минимальной и максимальной частотам CPU. Многие независимые пользователи крайне не советуют использовать режим performance, поэтому даже для работы от сети, когда экономить на ваттах нет смысла, я использую режим ondemand.
4) Параметр ‘sched_mc_power_savings’ из /sys/devices/system/cpu/ позволяет использовать энергосберегающий режим работы процессора в случае, если у того более одного ядра, благодаря особому распределению нагрузки между ядрами.
5) Встроенные аудио-чипы от Intel (которые принадлежат к т. н. High Definition Audio — HDA) также имеют возможность экономии ватт, если звуковой чип не используется
6) Для того, что выиграть еще чуть-чуть времени работы батареи, можно запретить системе время от времени «опрашивать» cd/dvd-привод на предмет наличия там диска.
7) Можно выключить к черту веб-камеру вместе с драйвером. Не проверял отдельно, но сообщают, что дело очень хорошее при работе от батареи. Естественно, пропустите этот шаг, если вам придется использовать скайп или еще для чего-то понадобится камера.
8) Dirty ratio — максимальный размер памяти (в процентах), для хранения грязных данных прежде чем процесс, их сгенерировавший, будет принужден записать их. Чем выше значение, очевидно, тем реже производится запись и тем меньше активность жесткого диска и системы.
9) Dirty background ratio — минимальное число памяти (в процентах), где позволено хранить гразные данные вместо записи на диск. Этот параметр должен быть намного меньше чем dirty_ratio что бы позволить записывать куски грязных данных за один проход.
10) Dirty Writeback sentisecs — как часто ядро должно проверять есть ли «грязные» (измененные) данные для записи на диск (в сантисекундах). Чем выше значение, очевидно, тем реже используется диск для записи грязных данных.
11) Включение режима энергосбережения PCI Express, как говорят люди, позволяет экономить достаточно много энергии батареи.
3. Некоторые проблемы ноутбука (связанные с энергосбережением) и их решения.
Проблема 1. Не работает изменение яркости экрана. Яркость всегда стоит на максимуме. Это критичный момент для энергосбережения, так как яркая подсветка дисплея съедает уйму электроэнергии. Эта проблема наблюдается на многих ноутбуках, на Acer’ах особенно часто. Симптом: изменение яркости с помощью gnome-апплета не дает эффекта, сколько ползунок не таскай, переключение клавишами FN+Right, FN+Left, или аналогичными Fn-комбинациями вешает систему, помогает лишь хард-ресет.
Решение оказалось не самым практичным, но достаточно простым:
Здесь ХХ принимает значения от 00 до FF в шестнадцатеричной системе. Для работы от батареи я выбрал значение 40, для работы от сети — FF.
Источник
Калибровка батареи ноута. Как?
Какой-то софт? Бывает под Линь?
48 Wh Lithium-Ion, 10.8V 4050mAh
калибровка с Литий-ионными работает?
Бывает, tp_smapi умеет, например.
Понял куда копать. Спасибо.
Зачем копать? Заряжаешь полностью, заходишь в меню биоса, например, где не работает никакое управление питанием, вытыкаешь зарядку, даешь разрядиться и выключиться. Потом заряжаешь, включаешь и пользуешься.
Объясни как это работает, пожалуйста) Интереснота.
в некоторых биосах даже есть калибровка батареи
А просто каждая батарея от ноутбука имеет свой контроллер, который и управляет батареей (зарядом, разрядом, выдачей информации и т.д.). А не так, как в мобильнике или детской машинке или в будильнике. Дальше сам. Гугл завсегда поможет.
Тут нет. Ноут я в глаза не видел, так что дело осложняется.
Знаю про контроллеры. Я думал что у них память есть. Не ясен механизм обнуления, в общем.
man прокачка батареи
Обнуления при калибровке не происходит, а происходит корректировка значений емкости и напряжений.
Наверное контролер батареи запоминает, сколько времени прошло до полной разрядки и значения напряжения в процессе разрядки.
И память у них есть, просто параметры самой батареи меняются (емкость, напряжения), они и уточняются при калибровке. Вобщем гугл поможет.
Источник
Как исправить ёмкость батареи?
С установкой убунты 9.10 мой EeePC начал считать, что его батарея сломана (всего 1.8% от первоначальной ёмкости). Хотя на самом деле с аккумом всё в относительном порядке, просто убунта решила, что он должен обеспечивать её питанием на пару дней, тогда как больше 3 часов он никогда не жил.
В результате этого большую часть времени на панельке батарея горит красным цветом, а всякие менеджеры питания считают, что пора гасить экран или вообще вырубать питание. А cpufreqd старается понизить частоту до минимума.
Отказываться от автоматики я не собираюсь, поэтому хочу всё же изменить определяемую ёмкость батареи в правильную сторону. Это как-нибудь возможно?
Какая ёмкость/уровень заряда в /proc/ ?
Ёмкость вроде правильно указана.
> last full capacity: 100 mAh
Не заряжается твоя батарея. Или померла. Или глючит
last full capacity: 100 mAh=100% на языке ASUS eee-pc
> last full capacity: 100 mAh=100% на языке ASUS eee-pc
Эммм. Патчить ACPI? 🙂
может таки биос обнвить сначала? 🙂
Т.е. батарея сообщает свой заряд в процентах, тогда как система ожидает миллиампер-часы?
А биос я обновлял перед последней установкой системы (думал, вдруг починят глюк с кардридером).
Может быть не надо :)?
Раньше, на убунтах 7.10 — 9.04, всё работало как надо.
У тебя есть в БИОС пункт «Калибровка батареи»? Должен быть. Проведи.
Попробуйте временно отключить автоматику, затем дождаться полного разряда, затем зарядить.
Ёмкость вроде правильно указана.
У меня есть 701 с батареей 4400, однако этот выхлоп показывает 5200
(всего 1.8% от первоначальной ёмкости)
Хардварный индикатор при этом не мигает?
А cpufreqd старается понизить частоту до минимума.
На кой оно с селероном?
Вообще индикация батареи у первых ежиков — изначально общеизвестная трабла, можно на тематических форумах поискать/поспрашивать, не касательно оси.
>У тебя есть в БИОС пункт «Калибровка батареи»? Должен быть.
>(думал, вдруг починят глюк с кардридером).
Если это тот глюк, о котором я думаю, то он лечится поднятием напруги через модуль eee.
Странно. Проверь еще раз на всяк случай (мож не заметил).
Из интернетов (не факт что правда):
you should try to recalibrate your battery by fully charging your battery while your eee is off and run its battery power to 10% where it auto turns off your unit a few times.
>У меня есть 701 с батареей 4400, однако этот выхлоп показывает 5200
Скорее всего у тебя Surf, у него батарея поменьше.
Хардварный индикатор при этом не мигает?
Нет, сразу при полной зарядке он не мигает, но начинает мигать спустя немного времени, хотя работает он после этого довольно долго. Примерно так же работает и софтовый индикатор в убунте: за полчаса падает почти до нуля, однако машинка продолжает работать еще как минимум час-полтора после этого.
А что, не помогает?
>Если это тот глюк, о котором я думаю, то он лечится поднятием напруги через модуль eee.
Когда-то давно, когда в убунте не было поддержки eee, я компилил этот модуль. Однако тогда этот способ у меня не сработал: поднятие напряжения приводило к зависанию иксов, хз почему.
>you should try to recalibrate your battery by fully charging your battery while your eee is off and run its battery power to 10% where it auto turns off your unit a few times.
Тут важно заряжать именно в выключенном разряженном состоянии?
Ибо машинка и так работает режиме полный заряд-разряд довольно часто, и что-то не особо заметен результат.
>Скорее всего у тебя Surf, у него батарея поменьше.
Обычный 4G, они бывали с двумя типами батарей. Например, те, что первыми появились в эльдорадах, были 4400.
А что, не помогает?
Селерна не умеют менять частоты.
>Когда-то давно, когда в убунте не было поддержки eee, я компилил этот модуль. Однако тогда этот способ у меня не сработал: поднятие напряжения приводило к зависанию иксов, хз почему.
Может что-то не так делал. Должно точно работать, с поднятием частоты.
>Тут важно заряжать именно в выключенном разряженном состоянии?
Хз. Если так правда можно откалибровать ее, то наверное да. Ну вообще калибровка — это разряженную до предела зарядить и разрядить опять. Только у меня это было через биос и мож биос как раз записывала инфу о батарее. А мож и само.
>Селерна не умеют менять частоты.
ТЫШТОАА??
Грузишь модуль p4-clockmod и всё нормально меняется через консоль и гномовский апплет. Только вот ondemand что-то не пашет в новой убунте, поэтому я специально поставил cpufreqd, чтобы написать нужные правила.
A 90 nm Celeron M with half of the L2 cache of the 90 nm Dothan Pentium Ms (twice the L2 cache of the 130 nm Celeron Ms, though), and, like its predecessor, lacking SpeedStep. The first Celeron Ms that supports the XD bit was released in January 2005, in general any Celeron M released after that supports the XD bit. There is also a 512 KB low voltage version that was used in the early ASUS Eee PC models.
Там есть троттлинг, но ничего полезного он не делает.
>Там есть троттлинг, но ничего полезного он не делает.
Т.е. не влияет на расход энергии? Что-то не верится. Частоту же он регулирует, неужели это хотя бы на температуре не отражается?
>Попробуйте временно отключить автоматику, затем дождаться полного разряда, затем зарядить
Особенно, если хочется побыстрее убить батарею.
Источник