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 |