(Продолжение.
Начало статьи)
По информации с сайта
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