Power saving
Contents
Audio
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.
- Intel
/etc/modprobe.d/audio_power_save.conf
options snd_hda_intel power_save=1
- ac97
/etc/modprobe.d/audio_power_save.conf
options snd_ac97_codec power_save=1
Bluetooth
Blacklist the hci_usb
module if the driver is loaded automatically.
Disabling NMI watchdog
The 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.
/etc/sysctl.d/disable_watchdog.conf
kernel.nmi_watchdog = 0
or add nmi_watchdog
as a kernel parameter.
Disabling 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:
/etc/udev/rules.d/disable_wol_eth0.rules
ACTION=="add", SUBSYSTEM=="net", KERNEL=="eth0" RUN+="/usr/sbin/ethtool -s eth0 wol d"
Disabling for all interfaces:
/etc/udev/rules.d/disable_wol.rules
ACTION=="add", SUBSYSTEM=="net", KERNEL=="eth*" RUN+="/usr/sbin/ethtool -s %k wol d"
PCI Runtime Power Management
/etc/udev/rules.d/pci_pm.conf
ACTION=="add", SUBSYSTEM=="pci", ATTR{power/control}="auto"
Wireless power saving
Enabling for a specific interface:
/etc/udev/rules.d/wlan0_power_save.rules
ACTION=="add", SUBSYSTEM=="net", KERNEL=="wlan0" RUN+="/usr/sbin/iw dev wlan0 set power_save on"
Enabling for all interfaces:
/etc/udev/rules.d/wifi_power_save.rules
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:
/etc/sysctl.d/dirty_writeback.conf
vm.dirty_writeback_centisecs = 1500
To do the same for journal commits with ext4 and some other filesystems, use commit=15
as a parameter in fstab or with the rootflags
kernel parameter.
Laptop Mode
/etc/sysctl.d/laptop_mode.conf
vm.laptop_mode = 5
See also
From powertop, needs to be cleaned up and merged
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.
function aa_power_settings () { sudo bash -c ' for i in `find /sys/devices -name "bMaxPower"`; do for ii in `find $i -type f`; do 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`; do v=`cat $ff 2>/dev/null|tr -d "\n"`; [[ ${#v} -gt 0 ]] && echo -e " `basename $ff`=$v"; v=; done | sort -g; done; done; echo -e "\n\n\n+++ Kernel Modules\n"; for m in `command lspci -k|sed -n "/in use:/s,^.*: ,,p"|sort -u`; do echo "+ $m"; systool -v -m $m 2> /dev/null | sed -n "/Parameters:/,/^$/p"; done '; }