summaryrefslogtreecommitdiff
path: root/pm/power.d/laptop-tools
blob: 9624c911f3017f31563a6bc3a4ee6037830c8724 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
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 $?