Как стать автором
Обновить

Реализация режима энергосбережения DEEP IDLE в ядре Linux

Время на прочтение 2 мин
Количество просмотров 3.8K
Разработчик, который зарегистрирован на форуме xda-developers.com под ником Ezekeel, попытался разобраться, почему его Nexus S слишком быстро съедает заряд аккумулятора в режиме ожидания. В техническом руководстве устройства указано, что устройство поддерживает режимы работы NORMAL, IDLE, DEEP IDLE, STOP, DEEP-STOP и SLEEP. Но беглое изучение ядра Linux показало, что в операционной системе имеется только поддержка IDLE. В этом режиме отключается лишь процессор, а остальные модули продолжают потреблять энергию. Ezekeel решил исправить этот недостаток.

Повышенное энергопотребление — одна из основных проблем Android-устройств, поэтому некоторые пользователи вынуждены искать способы, как продлить жизнь аккумулятора. Один из вариантов — снизить частоту работы процессора. Но такой хак не очень эффективен: например, при снижении частоты с 1320 МГц до 880 МГц можно выиграть разве что лишний час.

Расход аккумулятора Nexus S в режиме полёта с выключенным дисплеем при воспроизведении FLAC на тактовой частоте процессора 1320 МГц и 880 МГц, за десять часов.

Реализация полноценного режима DEEP IDLE с отключением железа даёт совершенно иную картину. Ezekeel нашёл форк ядра Linux (Glitch), создатели которого пытались решить аналогичную задачу под Galaxy S, но не довели работу до конца. Ezekeel сделал необходимые модификации и всё заработало нормально. Тест нового ядра GLaDOS показали, что расход заряда аккумулятора снизился более, чем на 55%.


Расход аккумулятора Nexus S в режиме полёта с выключенным дисплеем при воспроизведении FLAC на тактовой частоте процессора 1320 МГц и 880 МГц, в режиме IDLE и в режиме DEEP IDLE, за десять часов.



Если улучшить ядро Linux таким способом, то отпадает также необходимость снижать частоту процессора, потому что это не даёт практически никакой экономии энергии.

В репозитории на github можно изучить каждое исправление, которое было внесено в ядро для поддержки DEEP IDLE.

Ezekeel отдельно сообщает, что из-за бага в приложении Google Talk с видеочатом модуль CAM активируется при загрузке. Из-за специфического порядка активации функции режима DEEP IDLE это приводит к нарушению последовательности, так что режим DEEP IDLE просто не работает, если на смартфоне установлена эта программа. Исправить это просто: нужно просто заменить приложение Google Talk на такое же, только без функции video-chat. Хотя у обеих программ номер версии 1.3, отличить их друг от друга можно по размеру приложения и наличию/отсутствию опции по настройке аппаратного обеспечения. Вариант без видеочата имеет размер 500 КБ, а с видеочатом — 740 КБ. После замены программы всё должно заработать нормально.

Другие улучшения в ядре GLaDOS 1.2 описаны здесь.
Теги:
Хабы:
+59
Комментарии 67
Комментарии Комментарии 67

Публикации

Истории

Работа

Ближайшие события

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн
Геймтон «DatsEdenSpace» от DatsTeam
Дата 5 – 6 апреля
Время 17:00 – 20:00
Место
Онлайн
PG Bootcamp 2024
Дата 16 апреля
Время 09:30 – 21:00
Место
Минск Онлайн
EvaConf 2024
Дата 16 апреля
Время 11:00 – 16:00
Место
Москва Онлайн