Пропустить навигацию.
Главная

Энергосбережение монитора в Linux

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

Стандарт управления энергопотреблением мониторов, описывает четырё различных режима работы монитора. Эти режимы отличаются набором узлов, находящихся в рабочем состоянии. Продолжительность возврата монитора на нормальную работу из режима энергосбережения также различна для разных режимов.

Система DPMS (Display Power Management Signals) позволяет программно управлять двумя основными узлами монитора: блоком вертикальной развертки и блоком горизонтальной развертки. Стоит также сказать, что во всех режимах энергосбережения с трубки снимается напряжение и гасится электронный луч.

Первый режим работы монитора получил название Normal, никакого энергосбережения этот режим не реализует, так как это режим нормальной работы нашего электронного брата. При этом функционируют все узлы монитора. Это единственный режим работы, при котором на трубку подаётся высокое напряжение и луч совершает свои движения по экрану.

Второй режим это всем известный режим Stand-by, в дословном переводе с английского означает Lрежим резервирования¦. В этом режиме блок вертикальной развертки продолжает вырабатывать сигнал, а блок горизонтальной развёртки отключается. При этом экономится около 10 ватт. Возврат из этого режима монитор производит практически мгновенно.

Третий режим получил название Suspend mode, режим приостановки. В этом режиме отключается блок вертикальной развёртки, но блок горизонтальной развёртки продолжает функционировать. Энергопотребление монитора в этом режиме обычно составляет около 15 ватт. В нормальный режим монитор возвращается ощутимо дольше, как если бы он выходил из режима Stand-by.

Четвёртый режим - режим Power-off. Он соответствует полному отключению питания от узлов развёртки. Выход из этого режима потребует практически столько же времени, сколько необходимо монитору при включении питания. В этом режиме монитор потребляет не более 5 ватт.
Рассмотрев четыре режима работы монитора, перейдем к описанию управления этими режимами с консоли. Управление энергосбережением консоли осуществляется при помощи программы setterm. Консоль поддерживает три состояния: нормальная работа, погашенный экран (blank screen) и энергосберегающий режим. Причем, энергосбережение может быть включено только после того, как будет погашен экран.
Для установления интервалов времени, через которое консоль будет менять своё состояние, используется две команды:

setterm -blank #
setterm -powerdown #

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

для режима Stend-by: setterm -powersave hsync
для режима Suspend: setterm -powersave vsync или setterm -powersave on
для режима Power-off: setterm -powersave powerdown
чтобы просто запретить энергосбережение: setterm -powersave off

Например, Вы хотите, чтобы при отсутствии каких-либо действий со стороны юзера в течение пяти минут, гасла консоль, а по прошествии ещё десяти минут, монитор переходил в состояние Power-off. Тогда Вам следует включить куда-нибудь в файл rc.locale следующие команды:

setterm -blank 5
setterm -powerdown 15
setterm -powersave powerdown

Замечание. Правильность работы setterm зависит от версии самой утилиты и версии ядра. As far as I know, надежно работает только режим Power-off. Остальные режимы могут вызываться не вполне корректно, например вместо одного - другой.

С консолью все. А как же управлять энергосбережением из X-Window? Настроить X-server можно двумя способами. Первый: использовать утилиту xset, включив её вызов в скрипт, запускающий X Window System, это обычно startx, или .xinit. Второй, для некоторых более простой, способ это внести необходимые изменения в XF86Config. Рассмотрим эти способы (замечание: речь о скринсейверах здесь идти не будет).

Итак, настройка с помощью утилиты xset. Вся настройка производится парой вызовов xset. Первой командой xset обязятельно должна быть команда

xset dpms T1 T2 T3

здесь T1, T2, T3 это интервалы времени в секундах, через которые активизируются режимы Stend-by, Suspend и Power-off соответственно. Необходимое условие при этом: T1>=T2>=T3. Если одно из чисел равно нулю, то соответствующий режим не включается. Если Ваш X-сервер не поддерживает энергосбережение по умолчанию (а обычно именно так и есть), то придётся выполнить ещё одну команду:
xset +dpms
которая разрешит серверу использовать режимы энергосбережения. Это можно сделать и передав X-серверу ключ dpms. Например, при вызове xinit:
xinit -- dpms
Если же вы вдруг захотели отключить энергосбережение, используйте команду
xset -dpms

Замечание. С помощью команды xset можно принудительно включать различные режимы эергосбережения:

xset dpms force stendby
xset dpms force suspend
xset dpms force off

Все эти команды вызывают переход монитора в экономичный режим только при условии, что энергосбережение разрешено (xset +dpms).

Настройка энергосбережения с помощью XF86Config происходит практически также, что и при вызове xset: необходимо выполнить те же самые установки. Чтобы разрешить серверу запуск режимов энергосбережения, необходимо добавить в секцию Device следующую запись:

Option "power_saver" 

Далее, надо добавить в секцию Screen записи:

StandbyTime T1
SuspendTime T2
OffTime T3

где T1, T2, T3, как и ранее интервалы времени, через которые активизируются режимы Stend-by mode, Suspend mode, Power-off mode, соответственно, но здесь время уже выражается не в секундах, а в минутах.

Автор: X-Stranger ( xstranger[at]tut[dot]by )