Set CPU Power Management on Linux

From Jwiki


Prerequisites

Install `cpupower` if missing:

sudo apt-get update
sudo apt-get install -y linux-cpupower

Verify CPU frequency scaling support:

ls /sys/devices/system/cpu/cpufreq/policy0/energy_performance_preference


Installation

Create `/etc/systemd/system/cpu-thermal-control.service`:

[Unit]
Description=Apply powersave governor, balance_power EPP, and frequency limits
After=multi-user.target

[Service]
Type=oneshot
ExecStart=/bin/sh -c 'cpupower frequency-set -g powersave && echo balance_power > /sys/devices/system/cpu/cpufreq/policy0/energy_performance_preference && cpupower frequency-set -u 4GHz'
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

Enable and start the service:

sudo systemctl daemon-reload
sudo systemctl enable --now cpu-thermal-control.service


Usage & Power Save Mode

- The service sets CPU governor to powersave, EPP to balance_power, and caps max frequency. - To enable more aggressive power saving, modify `ExecStart` to use:

ExecStart=/bin/sh -c 'cpupower frequency-set -g powersave && echo powersave > /sys/devices/system/cpu/cpufreq/policy0/energy_performance_preference && cpupower frequency-set -d 800MHz -u 2GHz'

- Reload and restart service after changes:

sudo systemctl daemon-reload
sudo systemctl restart cpu-thermal-control.service

- Check CPU frequency info:

cpupower frequency-info


For Proxmox Users

Proxmox defaults to performance mode causing higher CPU temps. This service:

- Switches to powersave governor, - Applies balance_power or powersave EPP, - Caps CPU frequency for cooler, quieter operation.

Ensure kernel supports CPU scaling and adjust frequency caps as needed for your hardware.

Start this service on Proxmox nodes to improve thermal management and power efficiency.


Troubleshooting

Check service logs for errors:

journalctl -u cpu-thermal-control.service

Verify permissions and CPU frequency scaling support.


Sources