summaryrefslogtreecommitdiff
path: root/pm/power.d
diff options
context:
space:
mode:
Diffstat (limited to 'pm/power.d')
-rwxr-xr-xpm/power.d/laptop-tools58
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 $?