Алаверды О сохранении энергии, батареях и процессорах. Модуль ядра Linux cpufreq отвечает за изменение частоты и напряжения процессоров. Не все процессоры это умеют делать, но большинство мобильных процессоров для ноутбуков а также VIA С3 и С7 определяются при загрузке ядра и cpufreq подгружается сам. После загрузки модуля в каталоге /sys/devices/system/cpu/cpu0/ появляются файлы, читая из которых можно просматривать информацию о работе модуля. В некоторые файлы можно писать, тем самым управляя частотой и другими параметрами. Например cat /sys/devices/system/cpu/cpu0/scaling_available_governors выведет доступные режимы автоматического управления частотой. У меня обычно стоит ondemand, что для моего ноута означает работу на 600MHz в обычном режиме с временным повышением частоты до 1600MHz при повышении нагрузки на процессор. Чтобы не делать echo в эти файлы в консоли есть масса разных GUI для управления процессором. Я сейчас пользуюсь KPowersave, хотя он и показывает, что у меня две батарейки вместо одной :)
Кроме частоты процессора, на его энергопотребление влияет насколько часто прерывания выводят камень из спящего режима. Это зависит от того, какие программы и драйвера оборудования запущены. Начиная с версии 2.6.21 ядро Linux уже не тикает 1000 раз в секунду. Ядро реже будит процессор -- процессор чаще отправляется в Idle-режим. Это называется tickless kernel. Поиграться с ним можно используя программу Powertop из одноименного пакета Debian. Делаем aptitude install powertop и потом запускаем powertop под рутом. Спустя 5 секунд видим потребляемую по данным ACPI мощность, статистику по нахождению процессора в различных спящих режимах, количество пробуждений в секунду и рабочих частотах а также программы, виновные в пробуждении процессора. У меня будится 120-150 раз в секунду, если ничего не делать. Вот некоторые цифры с моего ноутбука, во всех случаях гувернёр решил работать на 600MHz, подсчитано очень приблизительно:
| Что делаем | Wakeup-from-idle процессора в секунду | Потребляемая мощность согласно ACPI, Ватт | Часов батареи осталось согласно powertop | Время нахождения процессора в режиме сна (С2), проценты | Время нахождения процессора в режиме работы (С0), проценты | |
|---|---|---|---|---|---|---|
| Ничего | 135 | 16.3 | 1,5 | 99 | 1 | |
| Xine на паузе | 415 | 16,5 | 1,4 | 98 | 2 | |
| Xine на паузе, KTorrent бешено качает и сидирует | 800 | 17,5 | 1,3 | 70 | 30 | |
| Xine на паузе, KTorrent бешено качает и сидирует, AC97 и Wi-Fi в режиме энергосбережения | 660 | 16,6 | 1,4 | 70 | 30 | |
| Xine показывает DVD, KTorrent бешено качает и сидирует, AC97 и Wi-Fi в режиме энергосбережения | 830 | 19,6 | 1,2 | 55 | 45 |
Еще такие интересные цифры:
| Что делаем | Wakeup-from-idle процессора в секунду |
|---|---|
| Xine на паузе | 415 |
| VLC на паузе | 550 |
| Xine играет DVD | 950 |
| VLC играет DVD | 450 |
Несмотря на разницу в цифрах, разницы в нагрузке на процессор и потребляемой мощности не видно.
Выводы. Заметной экономии от перехода на tickless kernel я не обнаружил, примерно те же 16 Ватт если ничего не делать. От того, насколько часто программа будит процессор, потребляемая мощность не зависит, зависит от того, что программа делает. Самое ценное в powertop -- советы о том, что можно сделать, чтобы уменьшить энергопотребление применительно к конкретной конфигурации. Программа выдает готовые команды с коротким описанием. Например, как перевести AC97 в энергосберегающий режим, включить энергосбережение Wi-Fi, выключить опрос cdrom с помощью HAL. Выполнение первых двух рекомендаций экономит мне примерно 1 Ватт, что уже ощутимо. Надо бы вписать в скрипты laptop-mode. Авторы powertop в будущем обещают расширить анализ возможностей отключения внепроцессорных компонентов системы.
Еще powertop показывает какие-то режимы глубокой спячки C3 и летаргического сна С4, куда мой процессор никогда не попадает. Интересно что это. Есть идеи?
Блог: RU Linux



Переход с Gnome на XFCE экономит 10 минут батареи ноутбука.
Отправить комментарий