Решена проблема с повышенным энергопотреблением Linux на некоторых ноутбуках

12/11/2011 10:07

Мэтью Гаррет (Matthew Garrett), один из разработчиков ядра Linux из компании Red Hat, опубликовал в списке рассылки ядра Linux патч, полностью решающий проблемы с повышенным энергопотреблением на ноутбуках, поддерживающих технологию ASPM (Active State Power Management) для карт PCI Express, сообщает opennet.ru. Проблема выражается в том, что для некоторых систем в процессе работы ASPM-регистры постоянно остаются в режиме "performance" (высокая производительность), что приводит к повышению энергопотребления на 10-30% при использовании ядер Linux начиная с 2.6.38. Предложенный патч имитирует поведение Windows при инициализации системы управления питанием, т.е. не очищает статус ASPM для всех устройств в процессе загрузки, оставляя параметры, выставленные BIOS. Проблема долгое время оставалась нерешённой из-за отсутствия какой-либо документации, описывающей как именно следует принимать решения о включении или выключении поддержки ASPM в ситуации, когда BIOS не информирует ОС о поддержке ASPM. Изначально разработчики ядра Linux полагались на то, что активировать ASPM следует только в том случае, если BIOS явно сообщает о наличии поддержки ASPM для карт PCI Express. Как оказалось, подобный метод не эффективен, так как BIOS многих систем умалчивает о наличии ASPM, в то время как поддержка данного режима поддерживается. Если BIOS не сообщил о поддержке ASPM, ядро Linux обнуляло ASPM-регистры, что приводило к тому, что технология энергосбережения ASPM не использовалась в процессе работы системы (постоянно был активен режим максимальной производительности), даже если ASPM был реализован в компьютере. В ситуации, когда BIOS указывал на наличие ASPM, инициализация проходила корректно и проблем не наблюдалось. Тестирование энергопотребления показало, что после применения патча, потребление энергии на ноутбуке ThinkPad на базе CPU Intel Core i7 уменьшилось на 36% при ненагруженном состоянии системы и на 14% при запуске интенсивно использующей графику 3D-игры, что соответствует уровню энергопотрбления при использовании ядра 2.6.37 (новая система инициализации ASPM была добавлена в 2.6.38). К сожалению, окно приёма изменений для ядра Linux 3.2 уже закрыто, поэтому наиболее вероятно, что патч будет включён только в состав ядра 3.3, выход которого можно ожидать весной 2012 года. Вслед за первым патчем, Мэтью Гаррет также представил несколько дополнительных улучшений, нацеленных на оптимизацию работы в случае, если BIOS корректно сообщает о наличии ASPM. Если системе изначально известно о ASPM, то применяются более агрессивные настройки, чем по умолчанию выставлены прошивкой. Для драйверов отдельных проблемных PCI-E устройств, для которых такие настройки неприменимы, предоставляется возможность индивидуального отключения ASPM. Список устройств для которых необходимо отключение ASPM был найден через анализ настроек драйверов для платформы Windows, в которой используется подобный обходной путь для более оптимального использования ASPM в системе.
Патч