FIXME - попозже доработаю

Malamut 2011/04/06 23:25

laptop_mode

Если у вас стоит убунту на ноутбуке, у вас уже должен быть установлен пакет laptop_mode, оптимизирующий работу компьютера в зависимости от источника питания. Значение 0, посылаемое в /proc/sys/vm/laptop_mode, отключает режим энергосбережения, 5 устанавливает самый агрессивный.

Подробнее о том, как именно laptop_mode сберегает энергию, можно прочесть хотя бы в официальном FAQ.

echo 0 > /proc/sys/vm/laptop_mode #выключает laptop_mode
echo 5 > /proc/sys/vm/laptop_mode #активирует laptop_mode

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

Можно включать режим энергосбережение для SATA-устройств:

echo min_power > /sys/class/scsi_host/host0/link_power_management_policy
echo min_power > /sys/class/scsi_host/host1/link_power_management_policy
echo min_power > /sys/class/scsi_host/host2/link_power_management_policy
echo min_power > /sys/class/scsi_host/host3/link_power_management_policy
echo min_power > /sys/class/scsi_host/host4/link_power_management_policy
echo min_power > /sys/class/scsi_host/host5/link_power_management_policy

У вас в /sys/class/scsi_host/ может быть другое количество устройств, учтите это. Для включения максимального быстродействия нужно выполнить команды с max_performance вместо min_power.

Энергосбережение процессора

По умолчанию в Ubuntu есть пять профилей работы процессора:

cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
conservative ondemand userspace powersave performance
conservative
Медленно повышает частоту процессора в зависимости от нагрузки на систему и резко сбрасывает частоту к минимальной при простое.
ondemand
Быстро повышает частоту процессора при возрастании нагрузки и медленно сбрасывает частоту к минимуму при простое.
userspace
Позволяет указывать частоту вручную.
powersave
Соответствует минимальной допустимой частоте CPU.
performance
Очевидно, соответствуют максимальной частоте CPU.

В итоге для управления потреблением энергии процессором:

#для производительности; выполнять сие для каждого ядра
echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor  
echo ondemand > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor
#для энергосбережения
echo powersave > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor 
echo powersave > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor

Многие независимые пользователи крайне не советуют использовать режим performance, поэтому даже для работы от сети, когда экономить на ваттах нет смысла, стоит использовать режим ondemand.

Кроме этого, параметр 'sched_mc_power_savings' из /sys/devices/system/cpu/ позволяет использовать энергосберегающий режим работы процессора в случае, если у того более одного ядра, благодаря особому распределению нагрузки между ядрами:

echo 1 > /sys/devices/system/cpu/sched_mc_power_savings #включаем энергосбережение
echo 0 > /sys/devices/system/cpu/sched_mc_power_savings #выкл

Энергосбережение аудиокарты

Встроенные аудио-чипы от Intel (которые принадлежат к т. н. High Definition Audio — HDA) также имеют возможность экономии ватт, если звуковой чип не используется:

echo 0 > /sys/module/snd_hda_intel/parameters/power_save  #выключаем энергосбережение
echo 10 > /sys/module/snd_hda_intel/parameters/power_save #вкл

Запрет опрашивания CD привода

Для того, что выиграть еще чуть-чуть времени работы батареи, можно запретить системе время от времени «опрашивать» cd/dvd-привод на предмет наличия там диска:

hal-disable-polling --device /dev/cdrom                   #запрещаем
hal-disable-polling --enable-polling --device /dev/cdrom  #делаем как было

Отключение веб-камеры

Можно полностью выключить веб-камеру вместе с драйвером:

modprobe -r uvcvideo  #выключаем
modprobe uvcvideo     #включаем обратно

Естественно, пропустите этот шаг, если вам придется использовать скайп или еще для чего-то понадобится камера.

Эффективная работа памяти

С точки зрения работы с памятью можно оптимизировать процесс записи изменённых данных на диски.

Dirty ratio — максимальный размер памяти (в процентах), для хранения «грязных» данных. При превышении этого объёма данных процесс, их сгенерировавший, будет принужден записать их. Очевидно, чем выше значение, тем реже производится запись и тем меньше активность жесткого диска и системы:

echo 10 > /proc/sys/vm/dirty_ratio  # при работе от сети
echo 90 > /proc/sys/vm/dirty_ratio # при работе от батареи

Dirty background ratio — минимальное число памяти (в процентах), где позволено хранить «гразные» данные вместо записи на диск. Этот параметр должен быть намного меньше, чем dirty_ratio, чтобы позволить записывать куски грязных данных за один проход.

echo 5 > /proc/sys/vm/dirty_background_ratio #в нормальном режиме
echo 1 > /proc/sys/vm/dirty_background_ratio #в режиме энергосбережения

Dirty Writeback sentisecs — как часто ядро должно проверять есть ли «грязные» (измененные) данные для записи на диск (в сантисекундах). Чем выше значение, тем реже используется диск для записи грязных данных:

echo 6000 > /proc/sys/vm/dirty_writeback_centisecs  # при работе от сети
echo 60000 > /proc/sys/vm/dirty_writeback_centisecs # для энергосбережения

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

Включение режима энергосбережения PCI Express также позволяет экономить немного энергии батареи:

echo powersave > /sys/module/pcie_aspm/parameters/policy  # Включаем энергосбережение
echo default > /sys/module/pcie_aspm/parameters/policy    # Выключаем

Отключение дискретной видеокарты

Метод работает до Ubuntu 13.10 включительно.

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

В версиях ядра, начиная с 2.6.34, присутствует механизм vga_switcheroo, позволяющий переключаться между видеокартами. То есть в Ubuntu 10.10 он есть по умолчанию. Пользоваться им достаточно просто.

Вначале выполняем:

lspci | grep VGA
00:02.0 VGA compatible controller: Intel Corporation Mobile 4 Series Chipset Integrated Graphics Controller (rev 07)
01:00.0 VGA compatible controller: ATI Technologies Inc M92 LP [Mobility Radeon HD 4300 Series] (rev ff)

Зная, какой GPU как обозначается, можно посмотреть, какой из них в каком состоянии:

cat /sys/kernel/debug/vgaswitcheroo/switch
0: :Pwr:0000:01:00.0
1:+:Pwr:0000:00:02.0

Плюсик стоит на против видеочипа, который используется в данный момент, Pwr означает, что видеокарта включена и потребляет энергию.

Чаще всего для всех ноутбуков с двумя видеокартами картина одинаковая: что бы вы не делали, при загрузке системы обе карты работают, при этом для вывода используется встроенная «слабая» графика. Это нам на руку, ибо обесточивание неактивной видеокарты происходит бескровно.

Команда

echo OFF > /sys/kernel/debug/vgaswitcheroo/switch

отключает неиспользуемую GPU сразу же. Поэтому мы обратимся к файлу /etc/rc.local, добавив в него вышеуказанную команду (перед строчкой exit 0). Так, при загрузке систему дискретная видеокарта уже будет отключена и не нужно будет беспокоиться ни о чем:

0: :Off:0000:01:00.0
1:+:Pwr:0000:00:02.0
Судя по всему vga_switcheroo не работает, если установлены проприетарные драйверы на дискретную видеокарту.

Кстати, если вы хотите переключаться между видеокартами через графический интерфейс, можете установить Ubuntu Control Center. Программа представляет собой панель управления параметрами Ubuntu, но нас она интересует исключительно из-за опции переключения между GPU (естественно, здесь это тоже происходит средствами vga_switcheroo).

Будьте аккуратны с UCC: во-первых, работает кривовато, например, иногда необходимо вначале переключиться на дискретную видеокарту, а лишь затем на встроенную, чтобы обесточить дискретную (либо вначале выполнить

echo OFF > /sys/kernel/debug/vgaswitcheroo/switch

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

Больше о переключаемой графике можно почитать в Убунту-вики, в этом блоге и на Хабрахабре.

Ссылки