Difference between revisions of "Power saving"

From ArchWiki
Jump to: navigation, search
(Bluetooth: rw)
(merged to Power management, redirecting there)
(188 intermediate revisions by 38 users not shown)
Line 1: Line 1:
[[Category:Power management]]
#REDIRECT [[Power management]]
By default, audio power saving is turned off by most drivers. It can be enabled by setting the power_save parameter to a time (in seconds) to go in idle.
{{Note|Toggling the audio card's power state can cause a popping sound or noticeable latency on some broken hardware.}}
{{hc|/etc/modprobe.d/audio_power_save.conf|2=options snd_hda_intel power_save=1}}
{{hc|/etc/modprobe.d/audio_power_save.conf|2=options snd_ac97_codec power_save=1}}
== Bluetooth ==
{{expansion|reason=The device should likely be disabled with hciconfig first.}}
[[Kernel_modules#Blacklisting|Blacklist]] the {{ic|hci_usb}} module if the driver is loaded automatically.
==Disabling NMI watchdog==
The [[Wikipedia:Non-maskable interrupt|NMI]] watchdog is a debugging feature to catch hardware hangs and cause a kernel panic. On some systems it can generate a lot of interrupts, causing a noticeable increase in power usage.
{{hc|/etc/sysctl.d/disable_watchdog.conf|2=kernel.nmi_watchdog = 0}}
or add {{ic|nmi_watchdog}} as a [[kernel parameter]] to disable it completely from early boot.
==Disabling Wake-on-LAN==
[[Wikipedia:Wake-on-LAN|Wake-on-LAN]] can be a useful feature, but if you're not making use of it then it's simply draining extra power waiting for a magic packet while in suspend.
Disabling for one interface:
{{Note|This should be combined with [[udev#Network device|static naming]] of devices, the eth* names are not static.}}
{{hc|/etc/udev/rules.d/disable_wol_eth0.rules|2=ACTION=="add", SUBSYSTEM=="net", KERNEL=="net0" RUN+="/usr/sbin/ethtool -s net0 wol d"}}
Disabling for all interfaces:
{{hc|/etc/udev/rules.d/disable_wol.rules|2=ACTION=="add", SUBSYSTEM=="net", KERNEL=="eth*" RUN+="/usr/sbin/ethtool -s %k wol d"}}
== PCI Runtime Power Management ==
{{hc|/etc/udev/rules.d/pci_pm.conf|2=ACTION=="add", SUBSYSTEM=="pci", ATTR{power/control}="auto"}}
==Wireless power saving==
Enabling for a specific interface:
{{Note|This should be combined with [[udev#Network device|static naming]] of devices, the eth* names are not static.}}
{{hc|/etc/udev/rules.d/wlan0_power_save.rules|2=ACTION=="add", SUBSYSTEM=="net", KERNEL=="wifi0" RUN+="/usr/sbin/iw dev wifi0 set power_save on"}}
Enabling for all interfaces:
{{hc|/etc/udev/rules.d/wifi_power_save.rules|2=ACTION=="add", SUBSYSTEM=="net", KERNEL=="wlan*" RUN+="/usr/sbin/iw dev %k set power_save on"}}
== Writeback Time ==
Increasing the VM dirty writeback time can help to aggregate I/O together - reducing disk writes, and decreasing power usage:
{{hc|/etc/sysctl.d/dirty_writeback.conf|2=vm.dirty_writeback_centisecs = 1500}}
To do the same for journal commits with ext4 and some other filesystems, use {{ic|1=commit=15}} as a parameter in [[fstab]] or with the {{ic|rootflags}} [[kernel parameter]].
== Laptop Mode ==
{{hc|/etc/sysctl.d/laptop_mode.conf|2=vm.laptop_mode = 5}}
== See also ==
* [[CPU Frequency Scaling]]
==From [[powertop]], needs to be cleaned up and merged==
{{poor writing}}
=== SATA Active Link Powermanagement ===
echo min_power > /sys/class/scsi_host/host0/link_power_management_policy
=== USB Autosuspend ===
To enable USB autosuspend after 2 seconds of inactivity:
for i in `find /sys/bus/usb/devices/*/power/control`; do echo auto > $i; done;
for i in `find /sys/bus/usb/devices/*/power/autosuspend`; do echo '''2''' > $i; done;
=== Device Power Management ===
echo auto | tee /sys/bus/i2c/devices/*/power/control > /dev/null
echo auto | tee /sys/bus/spi/devices/*/power/control > /dev/null
=== View Power Setings ===
This function shows various power settings.  Note you either must be root or you must have sudo.
{{bc|<nowiki>function aa_power_settings ()
  sudo bash -c '
    for i in `find /sys/devices -name "bMaxPower"`;
        for ii in `find $i -type f`;
            bd=`dirname $ii`;
            busnum=`cat $bd/busnum`;
            devnum=`cat $bd/devnum`;
            title=`lsusb -s $busnum:$devnum`;
            echo -e "\n\n+++ $title\n  -$bd\n  -$ii";
            for ff in `find $bd/power -type f ! -empty 2>/dev/null`;
                v=`cat $ff 2>/dev/null|tr -d "\n"`;
                [[ ${#v} -gt 0 ]] && echo -e " `basename $ff`=$v";
            done | sort -g;
    echo -e "\n\n\n+++ Kernel Modules\n";
    for m in `command lspci -k|sed -n "/in use:/s,^.*: ,,p"|sort -u`;
        echo "+ $m";
        systool -v -m $m 2> /dev/null | sed -n "/Parameters:/,/^$/p";

Latest revision as of 12:30, 23 April 2015

Redirect to: