View difference between Paste ID: G0ujEsw0 and N7kxFndG
SHOW: | | - or go back to the newest paste.
1
#!/bin/sh
2
# A script to enable laptop power saving features 
3
4
# List of modules to unload, space seperated. Edit depending on your hardware and preferences.
5
modlist="uvcvideo"
6
7
# Bus list for runtime pm.
8
buslist="pci spi i2c"
9
10
# Enable some power saving settings while on battery
11
12
case "$1" in
13
    true)
14
15
#hdparm settings
16
hdparm -B 1 -S 60 /dev/sda
17
18
# Intel audio power saving
19
echo Y > /sys/module/snd_hda_intel/parameters/power_save_controller
20
echo 1 > /sys/module/snd_hda_intel/parameters/power_save
21
      
22
#Enable multi core power savings 
23
echo 1 > /sys/devices/system/cpu/sched_smt_power_savings 
24
25
#Enable laptop mode 
26
echo 5 > /proc/sys/vm/laptop_mode 
27
28-
#Keep dirty writes in memory – non scrive sul disco finchè il 90% della memoria è piena: la #predefinita di pm-utils è 60 noi la settiamo a 90
28+
#Keep dirty writes in memory – non scrive sul disco finchè il 90% della memoria è piena: la predefinita di pm-utils è 60 noi la settiamo a 90
29
echo 90 > /proc/sys/vm/dirty_ratio 
30
31
# Keep dirty writes out of cache – Quando arriva al valore impostato sopra, svuota la cache fino al valore impostato qui
32
echo 1 > /proc/sys/vm/dirty_background_ratio 
33
34
# Writeback 10 min – ogni quanto si attiva il demone per scrivere su disco se la memoria non si riempie mai al valore impostato a dirty_ratio 
35
echo 60000 > /proc/sys/vm/dirty_writeback_centisecs 
36
37
#Imposta la frequenza dei processori su conservative
38
cpufreq-set -r -g conservative
39
40
#Fa in modo che i programmi che hanno un bassa priorità non causino l'incremento della frequenza  vale solo se la policy è conservative o ondemand, cioè con frequenza variabile. Con powersave che tiene sempre il processore al minimo non serve.
41
echo 1 > /sys/devices/system/cpu/cpufreq/conservative/ignore_nice_load 
42
43
# Set backlight brightness 
44
echo 1 >  /sys/class/backlight/acpi_video0/brightness
45
46
# wireless powersave
47
iwconfig wlan0 power on
48
iwconfig wlan0 power timeout 500ms
49
50
# disable ethernet on battery
51
ifconfig eth0 down
52
53
# i915
54
#echo 1 > /sys/module/i915/parameters/i915_enable_rc6
55
#echo 1 > /sys/module/i915/parameters/i915_enable_fbc
56
#echo 1 > /sys/module/i915/parameters/lvds_downclock
57
58
# Disable nmi watchdog
59
echo 0 > /proc/sys/kernel/nmi_watchdog
60
61
# Swappiness
62
echo 9 > /proc/sys/vm/swappiness &
63
64
65
# USB powersaving
66
        for i in /sys/bus/usb/devices/*/power/autosuspend; do
67
            echo 1 > $i
68
        done
69
for i in /sys/bus/usb/devices/*/power/level; do echo auto > $i; done
70
71
# SATA power saving
72
        for i in /sys/class/scsi_host/host*/link_power_management_policy; do
73
            echo min_power > $i
74
        done
75
76
#Disable hardware modules to save power
77
        for mod in $modlist; do
78
            grep $mod /proc/modules >/dev/null || continue
79
            modprobe -r $mod 2>/dev/null
80
        done
81
82
# Enable runtime power management. 
83
        for bus in $buslist; do
84
            for i in /sys/bus/$bus/devices/*/power/control; do
85
                echo auto > $i
86
            done
87
        done
88
89
 ;;
90
    false)
91
92
 #Return settings to default on AC power
93
94
hdparm -B 128 -S 0 /dev/sda
95
echo N > /sys/module/snd_hda_intel/parameters/power_save_controller
96
echo 0 > /sys/module/snd_hda_intel/parameters/power_save
97
echo 0 > /sys/devices/system/cpu/sched_smt_power_savings 
98
echo 0 > /proc/sys/vm/laptop_mode
99
echo 10 > /proc/sys/vm/dirty_ratio 
100
echo 5 > /proc/sys/vm/dirty_background_ratio
101
echo 500 > /proc/sys/vm/dirty_writeback_centisecs
102
cpufreq-set -r -g ondemand
103
echo 0 > /sys/devices/system/cpu/cpufreq/conservative/ignore_nice_load 
104
echo 13 >  /sys/class/backlight/acpi_video0/brightness
105
iwconfig wlan0 power off
106
ifconfig eth0 up
107
#echo 0 > /sys/module/i915/parameters/i915_enable_rc6
108
#echo 0 > /sys/module/i915/parameters/i915_enable_fbc
109
#echo 0 > /sys/module/i915/parameters/lvds_downclock
110
echo 1 > /proc/sys/kernel/nmi_watchdog
111
echo 60 > /proc/sys/vm/swappiness
112
for i in /sys/bus/usb/devices/*/power/autosuspend; do
113
            echo 2 > $i
114
        done
115
for i in /sys/bus/usb/devices/*/power/level; do echo on > $i; done
116
for i in /sys/class/scsi_host/host*/link_power_management_policy
117
            do echo max_performance > $i
118
 done
119
120
for mod in $modlist; do
121
            if ! lsmod | grep $mod; then
122
                modprobe $mod 2>/dev/null
123
            fi
124
        done
125
126
         for bus in $buslist; do
127
            for i in /sys/bus/$bus/devices/*/power/control; do
128
                echo on > $i
129
            done
130
        done
131
    ;;
132
esac
133
134
exit 0