summaryrefslogtreecommitdiff
path: root/src/pm-powersave
diff options
context:
space:
mode:
Diffstat (limited to 'src/pm-powersave')
-rwxr-xr-xsrc/pm-powersave55
1 files changed, 55 insertions, 0 deletions
diff --git a/src/pm-powersave b/src/pm-powersave
new file mode 100755
index 0000000..ff15d82
--- /dev/null
+++ b/src/pm-powersave
@@ -0,0 +1,55 @@
+#!/bin/sh
+
+# Simple low-power-mode script
+# Based on work from:
+# Bill Nottingham <notting@redhat.com>
+# Peter Jones <pjones@redhat.com>
+# David Zeuthen <davidz@redhat.com>
+# Richard Hughes <richard@hughsie.com>
+#
+# Values are taken from the laptop-tools package
+# Bart Samwel <bart@samwel.tk>
+
+if [ "$1" == "true" ] ; then
+ echo "SetLowPower ON"
+ DISK_IDLE_SECS=2
+ DIRTY_WRITEBACK=30
+ DIRTY_EXPIRE=30
+ DIRTY_RATIO=60
+ DIRTY_BACKGROUND_RATIO=1
+elif [ "$1" == "false" ] ; then
+ echo "SetLowPower OFF"
+ DISK_IDLE_SECS=0
+ DIRTY_WRITEBACK=500
+ DIRTY_EXPIRE=3000
+ DIRTY_RATIO=40
+ DIRTY_BACKGROUND_RATIO=10
+else
+ echo "Argument needs to be true or false"
+ exit 1
+fi
+
+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
+
+# 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