diff options
Diffstat (limited to 'pm/power.d')
-rwxr-xr-x | pm/power.d/laptop-tools | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/pm/power.d/laptop-tools b/pm/power.d/laptop-tools new file mode 100755 index 0000000..9624c91 --- /dev/null +++ b/pm/power.d/laptop-tools @@ -0,0 +1,58 @@ +#!/bin/bash +# Values are taken from the laptop-tools package +# Bart Samwel <bart@samwel.tk> + +. /etc/pm/functions + +setlowpowermode() +{ + # Seconds laptop mode has to to wait after the disk + # goes idle before doing a sync. + echo $DISK_IDLE_SECS > /proc/sys/vm/laptop_mode + + # Set dirty page values + echo $DIRTY_WRITEBACK > /proc/sys/vm/dirty_writeback_centisecs + echo $DIRTY_EXPIRE > /proc/sys/vm/dirty_expire_centisecs + + # Dirty synchronous ratio. At this percentage of dirty + # pages the process which calls write() does its own writeback. + echo $DIRTY_RATIO > /proc/sys/vm/dirty_ratio + + # Allowed dirty background ratio, in percent. + # Once DIRTY_RATIO has been exceeded, the kernel will wake pdflush + # which will then reduce the amount of dirty memory to + # dirty_background_ratio. Set this nice and low, so once some + # writeout has commenced, we do a lot of it. + echo $DIRTY_BACKGROUND_RATIO > /proc/sys/vm/dirty_background_ratio +} + +if [ ! -w "/proc/sys/vm/" ] ; then + # Use the raw kernel sysfs interface + echo "You do not have write access to /proc/sys/vm/" + exit 1 +fi + +case "$1" in + true) + echo "**SetLowPower ON" + DISK_IDLE_SECS=2 + DIRTY_WRITEBACK=30 + DIRTY_EXPIRE=30 + DIRTY_RATIO=60 + DIRTY_BACKGROUND_RATIO=1 + setlowpowermode + ;; + false) + echo "**SetLowPower OFF" + DISK_IDLE_SECS=0 + DIRTY_WRITEBACK=500 + DIRTY_EXPIRE=3000 + DIRTY_RATIO=40 + DIRTY_BACKGROUND_RATIO=10 + setlowpowermode + ;; + *) + ;; +esac + +exit $? |