пятница, 24 июля 2009 г.

ThinkPad x200s. Что влияет на потребление энергии.

(Продолжение. Начало статьи)

По информации с сайта http://www.gentoo.org/doc/en/power-management-guide.xml влияние компонентов компьютера и операционной системы на потребление энергии примерно такое:


Этот график очень условный и отражает примерное соотношенние потребляемой мощности в каком то из состояний компьютера.

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

Вот зависимость потребляемой мощности от уровня подсветки дисплея, снятая экперементально для ThinkPad x200s:

Выбирая яркость стоит помнить о реальных ваттах.

Стоит ли экономить миливатты? Я думаю да.
Вот почему. Ubuntu "из коробки" на x200s потребляет около 14 Вт.
0,1 Вт на этом уровне дает прибавку во времени около 0,7% (1,5 мин)

После тюнинга та же Ubuntu потребляет около 7 Вт.
0,1 Вт экономии составляет уже более 5 минут.

Вроде немного, но таких подсистем около десятка.

  • powerTOP

    Я установил powerTOP и выполнил все рекомендации, которые он давал.

    • Текущая версия - 1.11. Версия 1.11 > 1.9

    for i in /sys/class/scsi_host/host*/link_power_management_policy do echo min_power > $i done echo 1500 > /proc/sys/vm/dirty_writeback_centisecs

    Добавить usbcore.autosuspend=1 to the kernel в командную строку grub config, либо
    echo 1 >/sys/module/usbcore/parameters/autosuspend
  • Управление многопоточностью процессора *
    ( -0.1 - 0.0Вт)
    # echo 1 > /sys/devices/system/cpu/sched_mc_power_savings

  • Управление производительностью процессора *
    Устанавливается минимальная частота процессоров
    for i in /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor; do echo powersave > $i; done

    Частота процессоров меняется в зависимости от нагрузки
    for i in /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor; do echo ondemand > $i; done

  • Отключение ядер CPU

    for i in /sys/devices/system/cpu/cpu*/online; do echo 1 > $i; done

  • Ethernet *
    Выключение WOL (-0.1Вт)
    # ethtool -s eth0 wol d
    Отключение гигабитного интерфейса (-1.1Вт)
    Эта команда выполняется и дает эффект только когда есть соединение по ethernet. В противном случае выдается ошибка.
    # ethtool -s eth0 autoneg off speed 100

  • Wi-Fi * (от -0.8Вт до -4Вт)
    Можно управлять мощностью сигнала Wi-Fi непосредственно записывая в виртуальный файл "/sys/bus/pci/drivers/iwlagn/0000:03:00.0/power_level"
    # echo 5 > /sys/bus/pci/drivers/iwlagn/0000:03:00.0/power_level

    Но это может не работать в будующих версиях, что и произошло в Ubuntu 10.04. В этой версии виртуальный файл power_level поменял свое название на tx_power.

    Поэтому лучше управлять Wi-Fi картой через программный интерфейс iwconfig

    Установить уровень сигнала передатчика 5dBm и включить автоматический режим сохранения энергии
    # iwconfig wlan0 power on # iwconfig wlan0 txpower 5 # iwconfig wlan0 timeout 500ms
    Может оказаться, что режим энергосбережения не совместим с протоколом B+G+N, который обеспечивает скорости передачи больше, чем 54 Mb/s.
    Поэтому на точке доступа в секции wifi нужно установить протокол 801.11 b/g


  • Управление потреблением звуковой подсистемы
    ( -0.5.0Вт)
    # echo 10 > /sys/module/snd_hda_intel/parameters/power_save

  • Управление вентилятором
    Вентилятор управляется автоматически. Лучше здесь ничего не трогать. Можно и распрощаться с ноутом. Состояние можно посмотреть так:
    # cat /proc/acpi/ibm/fan
    Если уж невмоготу, то здесь написано как управлять вентилятором

  • Управление HDD *
    (-0,5 Вт)
    Еще одна возможность выключения диска
    # hdparm -B 1 -S 12 /dev/sda

  • Отключение HDMI *(-0.2 Вт)
    # xrandr --output HDMI-1 --off # xrandr --output HDMI-2 --off

  • Агрессивное управление PCI*(-1.5 Вт)
    При компиляции ядра была установлена соответсвующая константа CONFIG_PCIEASPM
    Проверить, что эта опция доступна
    # cat /sys/module/pcie_aspm/parameters/policy [default] performance powersave

    Установить режим powersave
    # echo powersave > /sys/module/pcie_aspm/parameters/policy

  • Настройка параметров виртуальной памяти * *
    Уменьшаем количество обращений к диску.
    swappiness - уровень свободной памяти в процентах, при котором система сбрасывает память в swap. При значении 0 swap отключается. (default: 60).
    # echo 10 > /proc/sys/vm/swappiness

    Как часто ядро должно проверять есть ли "грязные" (измененные) данные для записи на диск
    # echo 1500 > /proc/sys/vm/dirty_writeback_centisecs

    Насколько старыми должны быть данные, что бы ядро записало их на диск
    # echo 0 > /proc/sys/vm/dirty_expire_centisecs

    Минимальное процент памяти , где позволено хранить старые данные вместо записи на диск
    # echo 60 > /proc/sys/vm/dirty_background_ratio

    Максимальный размер памяти в процентах, для хранения "грязных" до записи их на диск.
    # echo 95 > /proc/sys/vm/dirty_ratio


Полезные ссылки:


Upd 12/12/2010
Upd 28/07/2011

2 комментария:

  1. echo powersave > /sys/module/pcie_aspm/parameters/policy пишет нет прав даже через рута или баш судо

    ОтветитьУдалить
    Ответы
    1. Начиная с ядра 2.6.32 (?) эта операция по умолчанию не поддерживается.
      Но можно утсановить режим на этапе загрузки передав в ядро требуемый параметр
      pcie_aspm.policy=performance
      или
      pcie_aspm.policy=powersave

      Чтобы можно было динамически менять режим работы pci в качестве параметра нужно указать pcie_aspm=force

      Но в этом случае возможно зависание системы.

      Для этого нужно отредактировать grub, как указано здесь: Настройка энергопотребления ThinkPad x220 в Ubuntu 12.04

      Удалить