summaryrefslogtreecommitdiff
path: root/src/pm-powersave
blob: ff15d82bf4eefe14cc2a2ad6474068b305cbcdb2 (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
#!/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