Laptop-mode - очень гибкая утилита, позволяющая управлять многими параметрами оборудования и системы.
В основном используются механизмы и команды описанные здесь.
По умолчанию laptop-mode установлена в ubuntu, но так как было замечено, что на ThinkPad иногда приводила к зависанию компьютера, она выключена и большинство управляющих констант установлено в "false" или "0".
Но на моем x200s все работает без проблем (с некоторыми моими доработками).
Почти все управляющие и командные файлы laptop-mode являются текстовыми. В них дано подробное описание по каждой команде и константе.
Я просто укажу файл, константу и значение, которое я ей присвоил.
Те константы и файлы, которые остались без изменения, я опущу.
- Включить laptop-mode
- /etc/default/acpi-support
ENABLE_LAPTOP_MODE=true
- /etc/default/acpi-support
- Настроить файлы конфигурации
- /etc/laptop-mode/conf.d/ac97-powersave.conf
CONTROL_AC97_POWER=1
- /etc/laptop-mode/conf.d/configuration-file-control.conf
CONTROL_CONFIG_FILES=1
Включение этого параметра позволяет держать 3 конфигурационных файла syslog.conf, управляющих логами, для разных режимов.
Я закоментировал весь логинг (/etc/syslog.conf-batt) для режима работы от батареи.
- /etc/laptop-mode/conf.d/cpufreq.conf
CONTROL_CPU_FREQUENCY=1 BATT_CPU_MAXFREQ=slowest BATT_CPU_MINFREQ=slowest BATT_CPU_GOVERNOR=powersave CONTROL_CPU_THROTTLING=1 BATT_CPU_THROTTLING=medium LM_AC_CPU_THROTTLING=minimum
- /etc/laptop-mode/conf.d/ethernet.conf
Этот модуль работал странно. При смене питания батарея/сеть не переключалась скорость интерфейса.
Я его переписал и устранил эту ошибку.
Заодно ввел 3 константы, определяющие скорость в разных режимах.
CONTROL_ETHERNET=1 DISABLE_WAKEUP_ON_LAN=1 BATT_THROTTLE_ETHERNET=1 LM_AC_THROTTLE_ETHERNET=1 NOLM_AC_THROTTLE_ETHERNET=1 BATT_SPEED_ETHERNET=100 LM_AC_SPEED_ETHERNET=1000 NOLM_AC_SPEED_ETHERNET=1000 ETHERNET_DEVICES="eth0"
Файл /usr/share/laptop-mode-tools/modules/ethernet изменить в соответствии с приведенным ниже (сделать copy/past).
#! /bin/sh # # Laptop mode tools module: Ethernet power saving tweaks. # if [ x$CONTROL_ETHERNET = x1 ] ; then for DEVICE in $ETHERNET_DEVICES ; do # Wakeup-on-LAN handling if [ x$DISABLE_WAKEUP_ON_LAN = x1 ] ; then if ethtool -s $DEVICE wol d >> $OUTPUT 2>&1 ; then $LM_VERBOSE && echo "Disabled wakeup-on-LAN for $DEVICE" >> $OUTPUT else $LM_VERBOSE && echo "Could not disable wakeup-on-LAN for $DEVICE" >> $OUTPUT fi fi if [ $ON_AC -eq 1 ]; then # working on AC if [ $LM_AC_THROTTLE_ETHERNET -eq 1 ] ; then if ethtool -s $DEVICE speed $LM_AC_SPEED_ETHERNET >> $OUTPUT 2>&1 ; then $LM_VERBOSE && echo "Setting LAN speed = $LM_AC_SPEED_ETHERNET for $DEVICE" >> $OUTPUT else $LM_VERBOSE && echo "Could not chanche speed" fi fi if [ $NOLM_AC_THROTTLE_ETHERNET -eq 1 ] ; then if ethtool -s $DEVICE speed $NOLM_AC_SPEED_ETHERNET >> $OUTPUT 2>&1 ; then $LM_VERBOSE && echo "Setting LAN speed = $NOLM_AC_SPEED_ETHERNET for $DEVICE" >> $OUTPUT else $LM_VERBOSE && echo "Could not chanche speed" fi fi else # working on Battery if [ $BATT_THROTTLE_ETHERNET -eq 1 ] ; then if ethtool -s $DEVICE speed $BATT_SPEED_ETHERNET >> $OUTPUT 2>&1 ; then $LM_VERBOSE && echo "Setting LAN speed = $BATT_SPEED_ETHERNET for $DEVICE" >> $OUTPUT else $LM_VERBOSE && echo "Could not chanche speed" fi fi fi done else $LM_VERBOSE && echo "Ethernet module is disabled." >> $OUTPUT fi
- /etc/laptop-mode/conf.d/hal-polling.conf
CONTROL_HAL_POLLING=1
- /etc/laptop-mode/conf.d/intel-hda-powersave.conf
CONTROL_INTEL_HDA_POWER=1
Значение, которое передается контроллеру Intel HDA указано в скрипте /usr/share/laptop-mode-tools/modules/intel-hda-powersave в строке:
. . . echo 5 > /sys/module/snd_hda_intel/parameters/power_save . . .
Я заменил значение 5 на 10.
- /etc/laptop-mode/conf.d/intel-sata-powermgmt
CONTROL_INTEL_SATA_POWER=1
- /etc/laptop-mode/conf.d/lcd-brightness.conf
CONTROL_BRIGHTNESS=1 BATT_BRIGHTNESS_COMMAND="echo 30" LM_AC_BRIGHTNESS_COMMAND="echo 80" NOLM_AC_BRIGHTNESS_COMMAND="echo 80" BRIGHTNESS_OUTPUT="/proc/acpi/video/VID/LCD0/brightness"
- /etc/laptop-mode/conf.d/sched-mc-power-savings.conf
CONTROL_SCHED_MC_POWER_SAVINGS=1
- /etc/laptop-mode/conf.d/start-stop-programs.conf
CONTROL_START_STOP=1 BATT_STOP="on-ac.sh" BATT_START="on-battery.sh"
В этом конфигурационном файле указываются имена скриптов запускающихся при переходe в режим работы от батареи
#!/bin/bash # ******************************************** # * on-battery.sh # ******************************************** echo "for check running on-battery.sh" >> /tmp/lt-m-check.out # ******** Tuning VM echo 0 > /proc/sys/vm/swappiness # Disable SWAP echo 30000 > /proc/sys/vm/dirty_writeback_centisecs echo 0 > /proc/sys/vm/dirty_expire_centisecs echo 1 > /proc/sys/vm/dirty_background_ratio echo 95 > /proc/sys/vm/dirty_ratio # Agressive PCI echo powersave > /sys/module/pcie_aspm/parameters/policy # Set timeout to idle 20 sec, # acoustic management HDD to more silent, less performance hdparm -q -S4 -M 128 /dev/sda # disable HDMI xrandr --output HDMI-1 --off xrandr --output HDMI-2 --off # Stop cron, anacron /etc/init.d/cron stop >> /dev/null /etc/init.d/anacron stop >> /dev/null
и от сетевого источника питания источника питания.
# ******************************************** # * /etc/laptop-mode/batt-stop/on-ac.sh # ******************************************** echo "for check running on-ac.sh" >> /tmp/lt-m-check.out # Tuning VM. Вернуть значения по умолчанию echo 60 > /proc/sys/vm/swappiness echo 60000 > /proc/sys/vm/dirty_writeback_centisecs echo 60000 > /proc/sys/vm/dirty_expire_centisecs echo 1 > /proc/sys/vm/dirty_background_ratio echo 60 > /proc/sys/vm/dirty_ratio # set acoustic management HDD: more performance hdparm -q -M 254 /dev/sda # Start cron, anacron /etc/init.d/cron start >> /dev/null /etc/init.d/anacron start >> /dev/null
Эти файлы нужно сохранить в каталогах
/etc/laptop-mode/batt-start/
и
/etc/laptop-mode/batt-stop/
соотвественно и сделать исполняемыми:
$sudo chmod 755 /etc/laptop-mode/batt-start/on-battery.sh $sudo chmod 755 /etc/laptop-mode/batt-stop/on-ac.sh
- /etc/laptop-mode/conf.d/usb-autosuspend.conf
CONTROL_USB_AUTOSUSPEND=1
- /etc/laptop-mode/conf.d/wireless-iwl-power.conf
CONTROL_IWL_POWER=1 IWL_AC_POWER=1 IWL_BATT_POWER=5
- /etc/laptop-mode/conf.d/ac97-powersave.conf
После изменении параметров всех, или части параметров конфигурационных файлов необязательно перезагружать компьютер. Достаточно выполнить команду перезапуска службы laptop-mode
Обсуждение лучше вести здесь:
Весьма интересно :) Может быть не всем, но хотя бы частично воспользуюсь этим гайдом. Спасибо :)
ОтветитьУдалитьНе за что. Мне тоже было интересно, когда разбирался.
ОтветитьУдалитьмышка теперь спит круглосуточно...
ОтветитьУдалитьЭто значит, что мышь не работает? Странно. Хотя на моем x200s trackball, но он не спит.
ОтветитьУдалитьЧто-то еще где-то задели...
Выключите laptopmode (п.1) и напишите, что получилось.
Спасибо. У себя настроил - все работает.
ОтветитьУдалитьВелкам :D
ОтветитьУдалитьCпасибо за статью. вопрос по файлу cpufreq.conf .
ОтветитьУдалитьShould laptop mode tools control the CPU throttling? This is only useful
"on processors that don't have frequency scaling.
# (Only works when you have /proc/acpi/processor/CPU*/throttling.)"
ща через проводник проверил и этой папки по адресу нет(
или это скрытый файл?
В новой спецификации информация из /proc переносится в /sys:
ОтветитьУдалитьhttp://acpi.sourceforge.net/documentation/processor.html
Смотрите параметры в этой директории.
/sys/devices/system/cpu
Но по моему опыту использование trottling не дает никакого выигрыша в экономии потребления энергии.