Pull to refresh

Управление ядрами процессора в Windows 7 или Как экономить батарею

Reading time3 min
Views17K
Здравствуй, хабра-человек.
Как известно, Microsoft очень хорошо потрудилась над своим последним детищем по имени Windows 7 и внесла много различных нововведений, об одном из которых я и хочу рассказать. Особенно актуально, я думаю, это будет для владельцев ноутбуков и нетбуков, но и пользователи настольных систем так же могут получить профит.
Как известно, самое большое новшество в «семерке» (после GUI) — это переработанная подсистема ACPI. Тут и нормальная поддержка многоядерных систем, и управление питанием устройств, мониторинга аппаратных средств, да и много чего еще, но одна очень интересная возможность остается за кадром — речь идет об энергопотреблении и управлении ядрами многоядерных/многопроцессорных систем.

Windows 7 позволяет управлять электропитанием процессоров, а так же назначать политики активности/простоя ядер.
При работе на многоядерных процессорах производится постоянная ротация потоков между ядрами и система переносит поток с более загруженных на менее загруженные ядра, что обеспечивает равномерную загрузку всех ядер, но и не менее равномерное энергопотребление, приводит к потере производительности и повышению энергопотребления, а это сказывается в первую очередь на сроке работы от аккумулятора. Сегодня я попытаюсь «восстановить справедливость» штатными средствами ОС.

В Windows 7 и Windows 2008 R2, была реализована функция «Processor performance core parking» или по нашему — «Система парковки ядра», которая оставляет выполнение процесса на том ядре, на котором он начался, до полного его завершения. Такой подход позволяет получить более динамичную систему и значительно снизить потребление энергии.
В отличии от штатного режима работы, когда процессы постоянно переносятся с одного ядра на другое, равномерно загружая ЦП, Система парковки позволяет подключать ядра по мере необходимости, стараясь сложить все задачи на минимальное количество ядер (в идеале на одно).

Пример: На четырех-ядерном процессоре в период простоя будет использоваться только одно ядро, остальные будут запаркованы и отключены, а в период нагрузки будут подключены остальные ядра.

И так, как же добиться такой фичи?


Для начала в реестр необходимо добавить следующие ключи
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\PowerSettings\54533251-82be-4824-96c1-47b60b740d00\0cc5b647-c1df-4637-891a-dec35c318583]
"Attributes"=dword:00000000
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\PowerSettings\54533251-82be-4824-96c1-47b60b740d00\3b04d4fd-1cc7-4f23-ab1c-d1337819c4bb]
"Attributes"=dword:00000000
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\PowerSettings\54533251-82be-4824-96c1-47b60b740d00\5d76a2ca-e8c0-402f-a133-2158492d58ad]
"Attributes"=dword:00000000
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\PowerSettings\54533251-82be-4824-96c1-47b60b740d00\a55612aa-f624-42c6-a443-7397d064c04f]
"Attributes"=dword:00000000
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\PowerSettings\54533251-82be-4824-96c1-47b60b740d00\ea062031-0e34-4ff1-9b6d-eb1059334028]
"Attributes"=dword:00000000


После этого идем в
Панель управления -> Электропитание -> Настройка плана электропитания -> Изменить дополнительные параметры питания -> Управление питанием процессора
и выставить следующие значения параметров:
  • Минимальное число ядер в состоянии простоя (Processor performance core parking min cores) — Установить 25% для четырех ядерного процессора (одно ядро) — или 50% для двух ядерного процессора.
  • Разрешить состояния снижения питания (Allow Throttle States) – Включить.
  • Отключение простоя процессора (Processor idle disable) — Включить состояние простоя.
  • Переопределение ядра приостановки ядра производительности процессора (Processor performance core parking core override) – Отключено.
  • Максимальное число ядер в состоянии простоя (Processor performance core parking max cores) — Установить 100% (использовать все ядра)


После применения новых параметров можно смело идти в «мониторинг ресурсов» и любоваться тем, что большая часть ядер отключена



Вот собственно и все. Мы получили политику использования ядер «пока нам хватает одного ядра (или сколько вы там укажите) — используем одно ядро», экономим батарейку, а еще и система стала более отзывчивой.

UPD: Поделюсь своим тестом — мой HP Pavilion dv8-1150er раньше работал от полностью заряженной батареи — 3-3,5 часа, теперь его хватает на 4,5 часа.
Tags:
Hubs:
+10
Comments32

Articles

Change theme settings