#!/bin/bash # Values are taken from the laptop-tools package # Bart Samwel . /usr/lib/pm-utils/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 [ ! -d "/proc/sys/vm/" ] ; then # Use the raw kernel sysfs interface echo "The required directory /proc/sys/vm/ doesn't exist" exit 1 fi if ! [ -w "/proc/sys/vm/laptop_mode" -a -w "/proc/sys/vm/dirty_writeback_centisecs" -a -w "/proc/sys/vm/dirty_expire_centisecs" -a -w "/proc/sys/vm/dirty_ratio" -a -w "/proc/sys/vm/dirty_background_ratio" ] ; then # Use the raw kernel sysfs interface echo "You do not have write access to files in /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 $?