Difference between revisions of "Power management"

From ArchWiki
Jump to: navigation, search
(Kernel Command Line Parameters: rm duplicate content)
(pm-utils Settings: there's no reason to tie things that don't have a performance impact to pm-utils)
Line 44: Line 44:
 
These scripts have to be made executable via
 
These scripts have to be made executable via
 
   # chmod +x <script file>
 
   # chmod +x <script file>
 
==== Enable Runtime PM for PCI Devices ====
 
{{Hc|head=/etc/pm/power.d/device_pm|output=
 
<nowiki>#!/bin/sh
 
 
device_pm() {
 
    for dpcontrol in /sys/bus/{pci,spi,i2c}/devices/*/power/control; do
 
        [ -w "$dpcontrol" ] || continue
 
        echo $1 > "$dpcontrol"
 
    done
 
}
 
 
case "$1" in
 
    true)
 
        echo "**device power management ON"
 
        device_pm auto
 
        ;;
 
    false)
 
        echo "**device power management OFF"
 
        device_pm on
 
        ;;
 
esac
 
 
exit 0</nowiki>}}
 
 
==== Enable Power Management For USB Devices ====
 
{{Hc|head=/etc/pm/power.d/usb_pm|output=
 
#!/bin/sh
 
case "$1" in
 
    true)
 
      # USB powersaving
 
        for i in /sys/bus/usb/devices/*/power/autosuspend; do
 
            echo 1 > $i
 
        done
 
        for i in /sys/bus/usb/devices/*/power/control; do
 
            echo auto > $i
 
        done
 
sysctl kernel.nmi_watchdog=0
 
    ;;
 
    false)
 
        for i in /sys/bus/usb/devices/*/power/autosuspend; do
 
            echo 2 > $i
 
        done
 
        for i in /sys/bus/usb/devices/*/power/control; do
 
            echo on > $i
 
        done
 
sysctl kernel.nmi_watchdog=1
 
    ;;
 
esac
 
 
exit 0}}
 
 
==== Increase VM Writeback Timeout ====
 
{{Hc|head=/etc/pm/power.d/vm-writeback|output=
 
<nowiki>#!/bin/sh
 
 
# VM writeback timeout power savings
 
 
wm_writeback() {
 
    if [ -w /proc/sys/vm/dirty_writeback_centisecs ]; then
 
printf "Set VM writeback timeout to %d..." "$1"
 
        echo $1 > /proc/sys/vm/dirty_writeback_centisecs && echo Done. || echo Failed.
 
    fi
 
}
 
 
case $1 in
 
    true)
 
wm_writeback '1500'
 
;;
 
    false)
 
wm_writeback '500'
 
;;
 
esac
 
 
exit 0</nowiki>}}
 
 
==== Disable NMI Watchdog ====
 
{{Hc|head=/etc/pm/power.d/nmi-watchdog|output=
 
<nowiki>#!/bin/sh
 
 
# NMI Watchdog timer power savings
 
 
nmi_watchdog() {
 
    if [ -w /proc/sys/kernel/nmi_watchdog ]; then
 
        echo $1 > /proc/sys/kernel/nmi_watchdog && echo Done. || echo Failed.
 
    fi
 
}
 
 
case $1 in
 
    true)
 
echo "Disable NMI Watchdog..."
 
nmi_watchdog 0
 
;;
 
    false)
 
echo "Enable NMI Watchdog..."
 
nmi_watchdog 1
 
;;
 
esac
 
 
exit 0</nowiki>}}
 
  
 
== See Also ==
 
== See Also ==
 
[[CPU Frequency Scaling]]
 
[[CPU Frequency Scaling]]

Revision as of 01:31, 24 October 2012

Tango-document-new.pngThis article is a stub.Tango-document-new.png

Notes: The purpose of this article currently overlaps other introductions like General Recommendations#Power management and Laptop#Power Management; application-specific information must be moved to the respective articles; only a generic introduction to power management in Arch and to related articles should stay here. (Discuss in Talk:Power management#)

The aim of this page is to try to gather all the informations which are available on the topic of linux power management features. There are several places where one can change power management settings:

Power settings you set in one place could be overwritten in another place.

Power saving

See power saving.

Where To Change Power Settings

One can pass a kernel command line parameter in the boot loader to activate power management features in certain kernel modules. If you are using systemd you can change some power management options in systemd config files or execute your own config file. pm-utils and upower are working together. pm-utils is responsible for changing the power management options while upower informs pm-utils about system changes. For example if you unplug your laptop from AC upower will signal to pm-utils that the laptop is running on battery. This will cause pm-utils to change some power management options according to its config files.

Have a look at the power management category to get an overview on what power management options exists in Archlinux:.

Kernel Command Line Parameters

Append the lines to your kernel command line parameter to enable these options. If you change settings for kernel modules make sure they are either compiled into your initrd (insert module name in MODULES in /etc/mkinitcpio.conf) or pass an option via a modprobe config file (Kernel_modules#Using_files_in_.2Fetc.2Fmodprobe.d.2F).

PCI-e ASPM

 pcie_aspm=force

Enable RC6 Power Save Options

 i915_enable_rc6=#Nr

Where #Nr:

  • 1: enable rc6
  • 3: enable rc6 and deep rc6
  • 5: enable rc6 and deepest rc6
  • 7: enable rc6, deep and deepest rc6

Change Usbcore Autosuspend Time

 usbcore.autosuspend=

pm-utils Settings

The pm-utils (see also: Pm-utils#Power_saving) package provides quirks for suspend to RAM and suspend to disk but also includes some scripts for power management. You need upower which registers power changes and signals that information to pm-utils.

Enable SATA Link Power Management

Execute the following command to enable SATA link power management when on battery:

 # echo SATA_ALPM_ENABLE=true > /etc/pm/config.d/sata_alpm

Scripts For Pm-utils Which Enable Power Management Options

These scripts have to be made executable via

 # chmod +x <script file>

See Also

CPU Frequency Scaling