Июл 09 2010

Энергосбережение

Published by

Общие моменты

отключаем всё неиспользуемое железо — камеры-WI-FI-touchpad(в случае тайловых вм)

ставим контрастную тему — она будет комфортна на куда более низких уровнях подсветки ( у меня разница между минимумом и максимумом составляет порядка 2 ватт — это очень много)

Kernel

 

  • Processor type and features—>Tickless System (Dynamic Ticks) динамическая частота переключения планировщика — позволяет не дёргать проц при простое

   UPD: General setup -> Timers subsystem -> Timer tick handling ( отключить )

  • Processor type and features—>HPET Timer Support необходима поддержка железа — всё относительное новое умеет

если в ядре есть поддержка hpet, но в выводе

cat /sys/devices/system/clocksource/clocksource0/current_clocksource

не hpet, нужно его включить

echo hpet > /sys/devices/system/clocksource/clocksource0/current_clocksource
  • Processor type and features—>Preemption Model (No Forced Preemption (Server)) т.к. все остальные это Preemption в той или иной степени — лучше отклик, но быстрее съест батарею
  • Device Drivers  —>USB support  —>USB runtime power management (suspend/resume and wakeup) поддержка энергосбережения для usb
  • Device Drivers  —>Sound card support  —>Advanced Linux Sound Architecture  —>PCI sound devices  —>Intel HD Audio  —>Aggressive power-saving on HD-audio
    поддержка энергосбережения для HDA_intel
  • Device Drivers  —>Sound card support  —>Advanced Linux Sound Architecture  —>PCI sound devices  —>Intel HD Audio  —>Default time-out for HD-audio power-save mode дефолт 0 = отключено. необходимо поставить 1
  • Device Drivers  —>Sound card support  —>Advanced Linux Sound Architecture  —>Generic sound devices  —>AC97 Power-Saving Mode
  • Device Drivers  —>Sound card support  —>Advanced Linux Sound Architecture  —>Generic sound devices  —>Default time-out for AC97 power-save mode
    тоже что и выше, только для AC97
    начиная с 35-го ядра для процессоров intel Atom и Core i3/5/7
  • Power management and ACPI options  —>Cpuidle Driver for Intel Processors
  • Bus options—>PCI Express support
    поддержка энергосбережения для PCI-E

    UPD: Bus options (PCI etc.) —> PCI support —> PCI Express Port Bus support  —> PCI Express ASPM control

    UPD: Bus options (PCI etc.) —> PCI support —> PCI Express Port Bus support  —> PCI Express ASPM control  —> Default ASPM policy

    выбрать одну из политик:

  1. BIOS default ( Use the BIOS defaults for PCI Express ASPM. )
  2. Powersave ( Enable PCI Express ASPM L0s and L1 where possible, even if the BIOS did not. )
  3. Performance ( Disable PCI Express ASPM L0s and L1, even if the BIOS enabled them. )
  • UPD: Power management and ACPI options —> Run-time PM core functionality:Enable functionality allowing I/O devices to be put into energy-saving
    (low power) states at run time (or autosuspended) after a specified
    period of inactivity and woken up in response to a hardware-generated
    wake-up event or a driver’s request.

Все нижеописанные команды желательно вписать в /etc/rc.local (*buntu,Mandriva,Fedora,и т.д.)
или  /etc/conf.d/local или /etc/conf.d/local.start в случае Gentoo
что бы всё это было не одноразовым

WI-FI

iwpriv eth1 set_power Число
Число здесь говорит о том, какой из уровней энергосбережения следует активировать. Всего существует шесть уровней: 1 — самый низкий уровень энергосбережения, дающий наиболее низкие задержки, 5 — самый высокий, 6 — отключение энергосбережения. Пятый уровень не всегда будет оптимальным, поэтому советую поэкспериментировать, если задержки станут слишком большими.
ещё варианты
iwconfig wlan0 power period 2
iwconfig wlan0 power 500m unicast
iwconfig wlan0 power timeout 300u all
iwconfig wlan0 power saving 3
iwconfig wlan0 power min period 2 power max period 4
но в зависимости от железа и дров могут быть доступны не все варианты, например у меня работает только
iwconfig wlan0 power on
LAN
ethtool -s eth0 wol d

отключаем Wake on Lan

так же, если пользуетесь проводной сетью, можно ограничить скорость до 100 или даже 10 и отключить авто определение скорости
ethtool -s eth0 autoneg off speed 100
HDD
echo min_power > /sys/class/scsi_host/host0/link_power_management_policy
echo min_power > /sys/class/scsi_host/host2/link_power_management_policy
и так для всех host* — это включает энергосбережение для scsi
hdparm -B 1 -S 1 /dev/sda
-B 1 включает энергосбережение для винта
-S 1 задаёт время простоя после которого винт уснёт
значения от 0=отключает, до 255, где каждое значение умножается на 5 сек, т.е. 1=5 секундам
echo 5 > /proc/sys/vm/laptop_mode
или в /etc/sysctl.conf добавить строку
vm.laptop_mode=5

включает «режим ноута» для виртуальной памяти

mount tmpfs -t tmpfs /tmp

и так со всеми директориями с временными данными , что бы напрасно не дёргать винт

включая кэш браузера
mount tmpfs -t tmpfs /home/megabaks/.cache/chromium
так же стОит поместить профиль браузера в tmpfs — на примере firefox
и прочее
mount tmpfs -t tmpfs /var/tmp/kdecache-megabaks
если syslogd будет дёргать винт — добавить минус в начало каждого пути к журналу в файле /etc/syslog.conf
так же стОит настроить вирт память для более редкого сброса «грязных» страниц кэша
echo "1500" > /proc/sys/vm/dirty_writeback_centisecs
или в /etc/sysctl.conf добавить строку
vm.dirty_writeback_centisecs=1500
это означает сброс каждые 15 сек, у меня стоит 6000(минута)
опции монтирования фс — стОит добавить
noatime(или relatime),nodiratime
к опциям фс в /etc/fstab
например
/dev/sda4 /var ext3 noatime,nodiratime 0 2
и также стОит сделать следующее
echo 1024 > /sys/block/sda/queue/read_ahead_kb
USB
echo 5 > /sys/module/usbcore/parameters/autosuspend
echo auto > /sys/bus/usb/devices/1-6/power/level
echo auto > /sys/bus/usb/devices/1-8/power/level
/sys/bus/usb/devices/*-* надо подставить свои
PCI-E
echo powersave > /sys/module/pcie_aspm/parameters/policy
VIDEO
интегрированное видео обычно умеет отключать неиспользуемые выходы, но бывает, что это не срабатывает
проверяем
xrandr
и если напротив неиспользуемого выхода нет disconnected,то
xrandr --output VGA1 --off
где VGA1 внешний выход vga — и так со всеми имеющимися неиспользуемыми (LVDS1 — это собственно сам монитор ноута)
так же можно отключить композит — т.е. эффекты
VIDEO-ATI
для этих карт, с точки зрения энергосбережения, лучше использовать проприетарный драйвер
но если используется открытый, можно попробовать вот это
SOUND
если ядро лень перебирать, то для, например, HDA-intel можно включить энергосбережение так
echo Y > /sys/module/snd_hda_intel/parameters/power_save_controller
echo 1 > /sys/module/snd_hda_intel/parameters/power_save
так же для AC97
echo 1 > /sys/module/snd_ac97_codec/parameters/power_save
CD/DVD-привод
что бы HAL не дёргал привод без надобности
hal-disable-polling --device /dev/cdrom
CPU
для энергосбережения проца нужно понижать его частоту при простое
для каждого типа проца свой драйвер, но для Atom-ов и Core i3/5/7 начиная с 35-го лучше использовать ещё и intel_idle
в intel_idle есть несколько уровней энергопотребления(только в 35-ом ядре — в 36-ом уже нет)
echo 1 > /sys/module/intel_idle/parameters/power_policy
(у меня их всего 7 — чем больше цифра тем больше потребление энергии)
если нужный драйвер есть, то нужно выбрать стратегию регулирования его частоты
лучше выбрать onedemand
echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
или conservative и настроить их
echo conservative > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
echo 80 > /sys/devices/system/cpu/cpufreq/conservative/down_threshold
echo 85 > /sys/devices/system/cpu/cpufreq/conservative/up_threshold
это значит, что при нагрузке на проц выше 85% частота повысится, а при падении нагрузки ниже 80% — уменьшится
так же стоить сделать следующее
echo 1 > /sys/devices/system/cpu/sched_mc_power_savings
или
echo 1 > /sys/devices/system/cpu/sched_smt_power_savings

conky и прочие мониторы
если коньки или другие мониторы слишком часто обновляют свои показания, то слишком много в 99%-ах случаев и прерываний, генерируемых ими
так обновление коньков раз в 2 секунды намного экономичней оказывается, чем раз в секунду (если коньков несколько и их параметров много)
потому для сохранения энергии не помешает интервалы обновления увеличить — что бы и показания были актуальны и проц не дёргать

laptop-mode-tools
набор скриптов, который выполняет некоторые вышеописанные команды
позволяет добавить и свои
powertop
утилита позволяющая отследить энергопотребление и выявить наиболее жадных до энергии

16 responses so far

16 Responses to “Энергосбережение”

  1. unikumon 13 Ноя 2010 at 16:04

    NVidia xorg:
    В секцию Monitor:

    Option "DPMS" "1"

    Принудительное использование энергосбережния (для ноутбуков):
    Добавить до секции Device:

    # Force Powermizer to a certain level at all times
    # level 0x1=highest
    # level 0x2=med
    # level 0x3=lowest
    # AC settings:
    Option "RegistryDwords" "PowerMizerLevelAC=0x3"
    # Battery settings:
    Option  "RegistryDwords" "PowerMizerLevel=0x3"

    Для автоматической регуляции производительности GPU на основе показателей температуры в секцию Device:

    Option "RegistryDwords" "PerfLevelSrc=0x3333"

    Также можно отключить композитинг, если не нужен (по умолчанию включён):

    Section "Extensions"
      Option "Composite" "Disable"
    EndSection

    Дополнительно можно почитать тут.

  2. Battle Coderon 04 Авг 2011 at 22:16

    Спасибо, статейка полезная. Но кое-чего не хватает. Некоторые пунктики не помешало бы объяснить. Вот, к примеру, что даёт вот
    эта опция?
    echo 1024 > /sys/block/sda/queue/read_ahead_kb
    у меня там стоит 1536… менять пока не стал.

    Да.. помимо ручного редактирования файлов в /sys для cpufreq можно задействовать cpufreq-utils… и можно настроить, чтобы они стартовали при загрузке.

  3. megabakson 04 Авг 2011 at 22:54

    read_ahead_kb (RW)
    ——————
    Maximum number of kilobytes to read-ahead for filesystems on this block
    device.

  4. roman77on 03 Сен 2011 at 00:29

    Если поместить кэш оперы в tmpfs, при просмотре видео флеш начинает вести себя неадекватно. Вместо ролика черный экран, звук заикается.

  5. vovanson 07 Сен 2011 at 22:54

    Спасибо, как раз нашёл время заняться этим вопросом :)

    А то всё руки не доходили гуглить, искать.. ))

  6. dumalon 22 Ноя 2011 at 21:20

    В заголовке обещали отключение тачпада, в статье нет. Поправьте либо там, либо там

  7. backboneon 23 Ноя 2011 at 00:54

    Значение для ключа -B у hdparm от 1 до 127 разрешает spin-down(снижение оборотов и, по всей видимости, остановку шпинделя) диска, от 128 до 254 — запрещает. Слишком малое значение, имхо, приведёт к быстрому выходу диска из строя.
    Значение ключа -S множится на 5, если оно в пределах от 1 до 240.

  8. backboneon 23 Ноя 2011 at 01:23

    Ещё в том же laptop-mode-tools можно отключать лишние ядра/гипертридинги автоматом при переходе на автономное питание.
    /etc/laptop-mode/batt-start/cpu_off.sh:

    #!/bin/sh

    n=3

    for i in `seq $n`; do
            echo 0 > /sys/devices/system/cpu/cpu${i}/online
    done

    /etc/laptop-mode/batt-start/cpu_on.sh:

    #!/bin/sh

    n=3

    for i in `seq $n`; do
            echo 1 > /sys/devices/system/cpu/cpu${i}/online
    done

    (для 8-ядерников увеличить n)

  9. openmanon 19 Янв 2012 at 18:11

    У меня не выставляется вообще никакой режим.

    Broadcom Corporation BCM4311 802.11b/g WLAN [14e4:4311] (rev 01)
    # iwconfig wlan0 power saving 1
    Error for wireless request "Set Power Management" (8B2C) :
        SET failed on device wlan0 ; Invalid argument.

    Google говорит:

    Well, I tried it and the broadcom drivers cause segmentation fault. Had to pull out my WiFi card to boot the system and blacklist the module :)

    Но мне не понятна сея речь. А конкретно —

    Had to pull out my WiFi card to boot the system and blacklist the module

  10. megabakson 19 Янв 2012 at 19:37

    он просто отключил карточку и забанил модуль для неё

  11. openmanon 19 Янв 2012 at 20:24

    Т.е. если внести модуль моей wifi сетевухи в blacklist — могут заработать некоторые опции энергосбережения?

  12. megabakson 19 Янв 2012 at 20:57

    нет — он просто не пользуется этой картой

  13. openmanon 20 Янв 2012 at 06:16

    оке.

  14. soko1on 29 Окт 2012 at 17:34

    Да, ты был прав, на тебя сложно не напороться :)

    Спасибо, отличная статья.

  15. BattleCoderon 11 Янв 2014 at 02:10

    Статейка хорошая, но выглядит немного устаревшей. В процессе настройки нового, свежекупленного ноутбука, возникли несколько вопросов:

    1) Processor type and features—>Tickless System (Dynamic Ticks) динамическая частота переключения планировщика — позволяет не дёргать проц при простое

    Этой опции в ядре (3.12.3-pf) вообще не нашёл. Может, её переименовали?

    2) Device Drivers —>USB support —>USB runtime power management (suspend/resume and wakeup) поддержка энергосбережения для usb

    Этого тоже не нашёл.

  16. megabakson 11 Янв 2014 at 09:28

    1. Processor type and features—>Tickless System (Dynamic Ticks):
    да, переехало:
    CONFIG_HZ_PERIODIC: -> General setup -> Timers subsystem -> Timer tick handling

    This option keeps the tick running periodically at a constant
    rate, even when the CPU doesn't need it.

    2. USB runtime power management: removed

Trackback URI | Comments RSS

Leave a Reply


*

Powered by WordPress