Построение операционной системы Windows общего назначения с эффективным использованием электроэнергии

В данной статье мы рассматриваем обширную тему разработки операционной системы с целью снижения энергопотребления. Мы рассматривали этот все более значимый аспект управления питанием в операционной системе с двух сторон. Во-первых, очевидно, что при выходе Windows 8 на рынок две трети всех компьютеров составляют портативные устройства, которые частично или полностью работают от аккумуляторов. Во-вторых, для рабочих мест требуется все больше настольных компьютеров, обеспечивающих снижение выбросов углекислого газа в атмосферу, так как мы стремимся по мере возможности экономить электроэнергию. Во всех случаях это выходит за рамки понятия эффективности режима ожидания, гибернации и возобновления работы и сводится к основной мысли данной статьи, которая заключается в снижении общего энергопотребления операционной системой и в обеспечении поддержки возможностей энергосбережения, заложенных в современное оборудование. Эту статью написал Пэт Стимен (Pat Stemen), руководитель программы в нашей группе Kernel.
--Стивен

Одними из самых важных тем в компьютерной отрасли являются время работы компьютера от аккумулятора и его энергопотребление. В статье мы расскажем о наших подходах к управлению питанием в Windows 8, а также о том, каким образом мы производим измерение энергопотребления. Мы считаем управление питанием ключевой возможностью операционной системы, которая имеет критическое значение для любой архитектуры кристалла и любого форм-фактора компьютера.

Наши цели

При разработке управления питанием в Windows 8 мы ставили перед собой 3 цели:

  • Подчеркнуть возможности оборудования. Мы разрабатывали Windows 8 таким образом, чтобы эффективность энергопотребления аппаратной платформы была очевидна независимо от того, является ли система планшетным ПК на базе «системы на кристалле» под управлением Windows или игровым компьютером с технологией SLI. Мы осуществляли согласованную и стандартизированную разработку интерфейсов управления питанием для всех платформ. Это позволило нашим партнерам-производителям и разработчикам приложений сконцентрироваться не на «сглаживании» различий между оборудованием платформы и функциями управления питанием, а на внедрении уникальных инновационных технологий и возможностей.
  • Продолжить обеспечивать большое время работы от аккумулятора. Операционная система Windows 7 обеспечила значительное сокращение энергопотребления и более экономичное использование электроэнергии, что особенно положительно сказалось на времени работы аккумулятора мобильного компьютера. (По сути, все наши усилия в этом направлении хорошо описаны в данной записи блога e7.) Для Windows 8 мы хотим сохранить достигнутый уровень эффективности на существующих компьютерах, даже в условиях переосмысления остальной части операционной системы Windows.
  • Реализовать модель питания смартфонов. Одна из наиболее значимых особенностей платформ «системы на кристалле» (System-on-Chip — SoC), о которой мы рассказывали на конференциях CES и //BUILD/, заключается в их способности быстро переходить в состояния бездействия с крайне низким энергопотреблением. Мы хотим использовать этот режим сверхнизкого энергопотребления для реализации возможностей постоянного взаимодействия и мгновенного включения, характерных для модели питания смартфонов, на компьютерах под управлением Windows 8.

Почему это так важно

Большинство из нас, вероятно, знакомы с одним из результатов эффективного управления питанием — длительное время работы аккумулятора на мобильных устройствах. Время работы от аккумулятора является крайне важным для мобильных вычислительных устройств, так как мы все больше используем их в условиях отсутствия электрической сети. Для обеспечения длительного времени работы аккумулятора требуется высокий уровень согласованности между базовым оборудованием, операционной системой и приложениями. (Существенное влияние на время работы оказывает емкость аккумулятора и качество его изготовления.)

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

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

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

Однако больше всего нас поражает то, насколько основополагающим оказывается управление питанием для всех аспектов разработки компьютерной платформы. Управление питанием оказывает непосредственное влияние на многие характеристики, включая толщину, вес, акустику (вентиляторы и их скорость), температуру поверхности, стоимость, размер экрана, разрешение, объем ОЗУ и т. д. Тонкое легковесное оборудование, которое всегда подключено и может целый день работать от аккумулятора, — это здорово. Мы рады, что отчасти благодаря именно нашим усилиям все это сможет быть реализовано для экосистемы Windows.

Электроэнергия как ресурс

Мы рассматриваем электроэнергию как важный системный ресурс, такой же как и использование ЦП, активность жесткого диска или потребление памяти. Поскольку это ключевой ресурс, мы отслеживаем, какой уровень его потребления обеспечивает каждая из ежедневных сборок Windows 8. Это позволяет нам быстро регистрировать изменение в энергопотреблении и вместе с группой разработчиков осуществлять поиск причины возникших проблем, а затем вносить и тестировать требуемые изменения. По мере снижения энергопотребления мы получаем новый базовый уровень, используемый в качестве начала отсчета для будущих ежедневных сборок.

Непосредственное энергопотребление (например, число милливатт) для любого конкретного компьютера под управлением Windows зависит от нескольких характеристик платформы, включая ЦП и чипсет, тип и объем ОЗУ, тип, скорость вращения и емкость диска хранилища, размер экрана и т. д.

Для получения согласованного базового уровня мы составили набор контрольных платформ и измеряли их энергопотребление в течение всего процесса разработки Windows 8. Эти контрольные платформы соответствуют типам компьютеров, распространенным среди наших клиентов. В этот набор также входят платформы от каждого из наших крупных партнеров, занимающихся производством кремниевых микросхем. Мы используем энергопотребление в Windows 7 и Windows 7 с пакетом обновления 1 (SP1) в качестве базового уровня, с которым сравниваем измерения, полученные для сборок Windows 8 в течение всего процесса разработки.

На графике показано энергопотребление в режиме ожидания для разных сборок (с 8074 по 8144) операционной системы Windows 8; оно находится в пределах от 9000 до 10000 мВт, но для сборки 8114 имеет место пиковое значение более 10 500 мВт.
Общее энергопотребление системы в режиме ожидания, измеренное в нашей лаборатории для одной контрольной платформы.
Вы можете видеть, что изменение, вызвавшее увеличение энергопотребления примерно на 1,25 Вт, было исправлено в последующей сборке.
Обратите внимание на то, что наличие некоторого колебания данного показателя между разными запусками и сборками является приемлемым.

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

Вы можете считать, что трата времени на рабочую нагрузку простоя бесполезна, так как мало кто загружает компьютер и оставляет открытой страницу «Пуск», не выполняя никаких действий. Хотя это так, мы считаем рабочую нагрузку простоя минимальным уровнем энергопотребления системы, так как эта нагрузка соответствует минимальному числу операций во включенной системе. Снижение энергопотребления в режиме простоя ведет к снижению базового энергопотребления для большинства рабочих нагрузок, включая воспроизведение видео и звука. Кроме того, во многие рабочие нагрузки заложено значительное время простоя — от небольших пауз между нажатиями клавиш при вводе данных до минут между сменой слайдов во время презентации.

Распространенным методом измерения энергопотребления для мобильного компьютера под управлением Windows является тест на истечение времени работы аккумулятора, при котором аккумулятор заряжается до уровня 100 % и затем разряжается до 0 % посредством повторения рабочей нагрузки. Этот метод работает, однако он подвержен возникновению ошибок, так как после большого числа циклов перезарядки емкость аккумулятора естественным образом снижается. Каждый такой тест включает в себя дополнительный цикл перезарядки, а мы проводим тестирование ежедневно. Таким образом, со временем показания наших измерений могут смещаться из-за ухудшения характеристик аккумулятора.

В нашей лаборатории собрана установка для измерения энергопотребления, которая позволяет подавать на контрольные платформы питание постоянного тока и замерять потребление. Мы описывали лабораторию и доступные возможности в записи блога по IE, посвященной энергопотреблению браузера, но мы не упомянули о том, что у нас установлено несколько реальных контрольных ноутбуков для ежедневного измерения энергопотребления. Использование источников питания и средств измерения автоматизировано с помощью тестового программного обеспечения, чтобы мы могли регулярно устанавливать операционную систему, измерять энергопотребление в различных сценариях и анализировать результаты для каждой новой сборки Windows 8.

Полка с оборудованием, осуществляющим мониторинг потребления постоянного тока
Источники питания постоянного тока со встроенными средствами измерения

Ноутбук, который работает под управлением Windows 8 и подключен к устройству, измеряющему энергопотребление
Контрольная платформа, оборудованная источником питания постоянного тока и средствами измерения

Влияние программного обеспечения на энергопотребление

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

Windows 8 включает в себя 3 ключевые инновации, направленные на улучшение влияния программного обеспечения на энергопотребление. Это модель приложений в стиле Metro, санация режима простоя и новая платформа управления питанием устройств во время выполнения. В этой статье мы кратко расскажем вам, как именно эти нововведения улучшают показатели энергопотребления.

Модель приложений в стиле Metro

Многие из нас сталкивались с влиянием программного обеспечения на энергопотребление. Это может быть приложение на телефоне, которое вызывает быстрый разряд аккумулятора, или вентилятор ноутбука, включившийся при запуске игры или при расчете электронной таблицы. Это все примеры того, как приложения напрямую используют ЦП, графический процессор, сетевое время, диск и/или память.

Одно из нововведений в области управления питанием в Windows 8 не относится непосредственно к самой инфраструктуре управления питанием — это модель приложений в стиле Metro. Модель приложений в стиле Metro изначально разрабатывалась как ориентированная на экономию электроэнергии. Преимущество с точки зрения управления питанием заключается в том, что эта модель позволяет разработчикам проще обеспечивать выполнение их приложений только в подходящее время — в фоновом режиме выполнение приложений приостанавливается, чтобы они не потребляли ресурсы компьютера и электроэнергию.

Конечно же, мы понимаем, что активность в фоновом режиме является неотъемлемой частью приложений, которые должны обеспечивать постоянное подключение и возможность реагирования. Модель приложений в стиле Metro и базовый WinRT поддерживают фоновую активность с помощью нового набора возможностей, называемых фоновыми задачами. (Дополнительные сведения см. в статье Введение в фоновые задачи.) Фоновые задачи упрощают осуществление фоновой активности с ориентацией на экономию электроэнергии. Кроме того, они позволяют разработчикам продолжить обеспечивать для приложений возможность реагирования и обновления, но соответствующие механизмы отличаются от существующей модели Win32 для реализации быстрого и гибкого пользовательского интерфейса и других ключевых особенностей приложений в стиле Metro (см. статью 8 характеристик отличных приложений в стиле Metro).

Мы разрабатывали фоновые задачи и всю модель приложений в стиле Metro так, чтобы обеспечить новый уровень отклика приложений, и при этом учитывали глобальные характеристики системы, включая потребление электроэнергии и памяти.

 Вкладка «Processes» (Процессы) (более подробное представление) содержит несколько приложений в стиле Metro в режиме приостановки, все эти приложения используют 0 % ЦП и от 17 до 85,1 МБ памяти.
Диспетчер задач с приостановленными приложениями в стиле Metro

Санация режима простоя

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

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

Мы отслеживаем эффективность режимов простоя в Windows 8 с помощью встроенного компонента трассировки событий Windows, некоторых дополнений к анализатору производительности Windows и базовой гистограммы. Ниже показаны различия длительности режима простоя в Windows 7 и в Windows 8. Для включенного экрана мы уже значительно сдвинули столбец от максимальной продолжительности режима простоя 15,6 мс в Windows 7 до продолжительности более 100 мс (доля 35 %) в Windows 8! При выключенном экране и во время ждущего режима с подключением к сети длительность простоя еще больше и на данный момент составляет десятки секунд.

Диаграмма, сравнивающая длительность периодов простоя в Windows 7 и Windows 8 при включенном экране. В Windows 7 длительность около 95 % простоев составляет 10–16 мс. В Windows 8 такую длительность имеют всего около 35 % простоев.

Управление питанием устройств во время выполнения

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

Чтобы подчеркнуть важность управления питанием устройств, заметим, что мы видели множество устройств, на которых отсутствие включенных возможностей управления питанием легко могло вызывать сокращение времени работы аккумулятора на 25 %! (Следует отметить, что отключение устройства в диспетчере устройств практически так же неэффективно, так как большинство устройств инициализируется встроенным ПО при максимальном уровне энергопотребления, а для перевода в режим номинального энергопотребления им требуется драйвер.) Вы можете провести диагностику некоторых проблем с управлением питанием в Windows 7 с помощью встроенной служебной программы powercfg.exe, используя параметр /ENERGY. Параметр /ENERGY выводит файл HTML, который дает представление о том, какие устройства и какое программное обеспечение потенциально работают в режиме высокого энергопотребления. Конечно, использование заводского образа для компьютера, который поставляется с предварительно установленными драйверами от изготовителя оборудования и поставщика, практически всегда является оптимальным способом обеспечить согласованную работу устройств в компьютере с точки зрения управления питанием.

Эффективное управление питанием устройств реализуется их драйверами совместно с диспетчером питания ядра Windows и встроенным ПО платформы. Диспетчер питания упрощает для драйверов устройств выполнение операций по управлению питанием и координирование переключения состояний питания с другими устройствами платформы.

Для Windows 8 мы построили новую платформу питания устройств, позволяющую всем устройствам сообщать о своих возможностях управления питанием и интегрировать их с помощью специального драйвера, который называется Power Engine Plug-in или PEP и разработан для «систем на кристалле». Драйвер PEP предоставляется производителем микросхемы и содержит информацию обо всех требованиях к управлению питанием для «системы на кристалле». Это позволяет создавать драйверы устройств, такие как драйвер USB хост-контроллера или клавиатуры, всего один раз, так как они все равно будут обеспечивать оптимальное управление питанием на всех платформах, начиная с компьютеров типа «система на кристалле» и заканчивая серверами в центре обработки данных.

Мы активно сотрудничаем со всеми партнерами по экосистемам, чтобы создать технологии снижения энергопотребления и увеличения времени работы аккумулятора, которые мы все хотим иметь на компьютерах под управлением Windows 8.

--Пэт Стимен