Last active
September 25, 2024 07:18
-
-
Save 89luca89/29be32da857fa4aa59b09ab626929d2f to your computer and use it in GitHub Desktop.
Powersave Rules for Linux | Run and reboot. Consider using the commented tweaks in grub for advanced powersaving
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#UDEV rules to handle powersaving | |
# pcie_aspm=force IN GRUB | |
echo ' | |
# Some logging | |
SUBSYSTEM=="power_supply", ATTR{online}=="0", RUN+="/bin/sh -c '"'"'echo Unplugged $(date) >> /var/log/powerlog.log'"'"'" | |
SUBSYSTEM=="power_supply", ATTR{online}=="1", RUN+="/bin/sh -c '"'"'echo Plugged $(date) >> /var/log/powerlog.log'"'"'" | |
# CPU Bias power/performance toggle | |
SUBSYSTEM=="power_supply", ATTR{online}=="0", RUN+="/usr/bin/x86_energy_perf_policy power" | |
SUBSYSTEM=="power_supply", ATTR{online}=="1", RUN+="/usr/bin/x86_energy_perf_policy performance" | |
# Periferals power saving features | |
SUBSYSTEM=="power_supply", ATTR{online}=="0", RUN+="/bin/sh -c '"'"'echo powersave > /sys/module/pcie_aspm/parameters/policy'"'"'" | |
SUBSYSTEM=="power_supply", ATTR{online}=="1", RUN+="/bin/sh -c '"'"'echo default > /sys/module/pcie_aspm/parameters/policy'"'"'" | |
ACTION=="add", SUBSYSTEM=="pci", ATTR{power/control}="auto" | |
ACTION=="add", SUBSYSTEM=="ahci", ATTR{power/control}="auto" | |
ACTION=="add", SUBSYSTEM=="scsi_host", KERNEL=="host*", ATTR{link_power_management_policy}="min_power" | |
ACTION=="add", SUBSYSTEM=="usb", ATTR{power/autosuspend_delay_ms}="1000" | |
ACTION=="add", SUBSYSTEM=="usb", ATTR{power/control}="auto" | |
ACTION=="add", SUBSYSTEM=="scsi", ATTR{power/control}="auto" | |
ACTION=="add", SUBSYSTEM=="acpi", ATTR{power/control}="auto" | |
ACTION=="add", SUBSYSTEM=="block", ATTR{power/control}="auto" | |
ACTION=="add", SUBSYSTEM=="workqueue", ATTR{power/control}="auto" | |
ACTION=="add", SUBSYSTEM=="i2c", ATTR{power/control}="auto" | |
# Disable Wake on Lan and enable wifi powersaving | |
ACTION=="add", SUBSYSTEM=="net", KERNEL=="enp*", RUN+="/usr/sbin/ethtool -s %k wol d" | |
ACTION=="add", SUBSYSTEM=="net", KERNEL=="wlp*", RUN+="/usr/sbin/ethtool -s %k wol d" | |
ACTION=="add", SUBSYSTEM=="net", KERNEL=="wlp*", RUN+="/usr/sbin/iw dev %k set power_save on" | |
# Set read ahead for disks | |
ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/read_ahead_kb}="65536" | |
# Set deadline scheduler for non-rotating disks | |
ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="deadline" | |
# Set deadline scheduler for rotating disks | |
ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="1", ATTR{queue/scheduler}="cfq" | |
# Set powersaving features for disks | |
ACTION=="add|change", KERNEL=="sd[a-z]", RUN+="/usr/sbin/hdparm -B 1 /dev/%k" | |
' | sudo tee /etc/udev/rules.d/powersave.rules | |
#Systemctl tweaks for powersaving | |
# https://unix.stackexchange.com/a/41831 | |
echo 'vm.laptop_mode = 5 | |
kernel.nmi_watchdog = 0 | |
vm.swappiness = 5 | |
vm.oom_kill_allocating_task = 1 | |
vm.block_dump=1 | |
vm.vfs_cache_pressure = 100 | |
vm.dirty_ratio = 90 | |
vm.dirty_background_ratio = 50 | |
vm.dirty_writeback_centisecs = 60000 | |
vm.dirty_expire_centisecs = 60000 ' | sudo tee /etc/sysctl.conf | |
echo "options i915 disable_power_well=0 enable_dc=2 enable_psr=3 enable_rc6=7 enable_fbc=1 powersave=1 semaphores=1" | sudo tee /etc/modprobe.d/i915.conf | |
echo 'options iwlwifi power_save=Y power_level=5 | |
options iwlmvm power_scheme=3' | sudo tee /etc/modprobe.d/iwlwifi.conf | |
echo 'options e1000e SmartPowerDownEnable=1' | sudo tee /etc/modprobe.d/e1000e.conf | |
echo 'options snd_hda_intel power_save_controlle=Y power_save=1' | sudo tee /etc/modprobe.d/snd_hda_intel.conf | |
echo "blacklist intel_powerclamp" | sudo tee /etc/modprobe.d/disable-powerclamp.conf | |
### ADVANCED | |
### ADD THIS TO YOUR GRUB_CMDLINE_LINUX_DEFAULT (Without the comment) | |
# nmi_watchdog=0 pcie_aspm=force drm.debug=0 drm.vblankoffdelay=1 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment