Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/sh
- # A script to enable laptop power saving features
- # List of modules to unload, space seperated. Edit depending on your hardware and preferences.
- modlist="uvcvideo"
- # Bus list for runtime pm.
- buslist="pci spi i2c"
- # Enable some power saving settings while on battery
- case "$1" in
- true)
- #hdparm settings
- hdparm -B 1 -S 60 /dev/sda
- # Intel audio power saving
- echo Y > /sys/module/snd_hda_intel/parameters/power_save_controller
- echo 1 > /sys/module/snd_hda_intel/parameters/power_save
- #Enable multi core power savings
- echo 1 > /sys/devices/system/cpu/sched_smt_power_savings
- #Enable laptop mode
- echo 5 > /proc/sys/vm/laptop_mode
- #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
- echo 90 > /proc/sys/vm/dirty_ratio
- # Keep dirty writes out of cache – Quando arriva al valore impostato sopra, svuota la cache fino al valore impostato qui
- echo 1 > /proc/sys/vm/dirty_background_ratio
- # 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
- echo 60000 > /proc/sys/vm/dirty_writeback_centisecs
- #Imposta la frequenza dei processori su conservative
- cpufreq-set -r -g conservative
- #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.
- echo 1 > /sys/devices/system/cpu/cpufreq/conservative/ignore_nice_load
- # Set backlight brightness
- echo 1 > /sys/class/backlight/acpi_video0/brightness
- # wireless powersave
- iwconfig wlan0 power on
- iwconfig wlan0 power timeout 500ms
- # disable ethernet on battery
- ifconfig eth0 down
- # i915
- #echo 1 > /sys/module/i915/parameters/i915_enable_rc6
- #echo 1 > /sys/module/i915/parameters/i915_enable_fbc
- #echo 1 > /sys/module/i915/parameters/lvds_downclock
- # Disable nmi watchdog
- echo 0 > /proc/sys/kernel/nmi_watchdog
- # Swappiness
- echo 9 > /proc/sys/vm/swappiness &
- # USB powersaving
- for i in /sys/bus/usb/devices/*/power/autosuspend; do
- echo 1 > $i
- done
- for i in /sys/bus/usb/devices/*/power/level; do echo auto > $i; done
- # SATA power saving
- for i in /sys/class/scsi_host/host*/link_power_management_policy; do
- echo min_power > $i
- done
- #Disable hardware modules to save power
- for mod in $modlist; do
- grep $mod /proc/modules >/dev/null || continue
- modprobe -r $mod 2>/dev/null
- done
- # Enable runtime power management.
- for bus in $buslist; do
- for i in /sys/bus/$bus/devices/*/power/control; do
- echo auto > $i
- done
- done
- ;;
- false)
- #Return settings to default on AC power
- hdparm -B 128 -S 0 /dev/sda
- echo N > /sys/module/snd_hda_intel/parameters/power_save_controller
- echo 0 > /sys/module/snd_hda_intel/parameters/power_save
- echo 0 > /sys/devices/system/cpu/sched_smt_power_savings
- echo 0 > /proc/sys/vm/laptop_mode
- echo 10 > /proc/sys/vm/dirty_ratio
- echo 5 > /proc/sys/vm/dirty_background_ratio
- echo 500 > /proc/sys/vm/dirty_writeback_centisecs
- cpufreq-set -r -g ondemand
- echo 0 > /sys/devices/system/cpu/cpufreq/conservative/ignore_nice_load
- echo 13 > /sys/class/backlight/acpi_video0/brightness
- iwconfig wlan0 power off
- ifconfig eth0 up
- #echo 0 > /sys/module/i915/parameters/i915_enable_rc6
- #echo 0 > /sys/module/i915/parameters/i915_enable_fbc
- #echo 0 > /sys/module/i915/parameters/lvds_downclock
- echo 1 > /proc/sys/kernel/nmi_watchdog
- echo 60 > /proc/sys/vm/swappiness
- for i in /sys/bus/usb/devices/*/power/autosuspend; do
- echo 2 > $i
- done
- for i in /sys/bus/usb/devices/*/power/level; do echo on > $i; done
- for i in /sys/class/scsi_host/host*/link_power_management_policy
- do echo max_performance > $i
- done
- for mod in $modlist; do
- if ! lsmod | grep $mod; then
- modprobe $mod 2>/dev/null
- fi
- done
- for bus in $buslist; do
- for i in /sys/bus/$bus/devices/*/power/control; do
- echo on > $i
- done
- done
- ;;
- esac
- exit 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement