Skip to content

Intelligent CPU Governor and Performance Management on Linux

Tools for controlling and automating CPU performance management

First of all, you should know that it is very easy to configure CPU operating modes on Linux.

For instance, I have a small laptop running Ubuntu with an Intel Core i3.
The Linux kernel includes a cpufreq module that interacts with the processor driver. This small module can be controlled in various ways through several available solutions. Note that most tools mentioned here focus strictly on the processor, except for TLP which can do more by managing disks, PCI buses, USB, etc.

indicator-cpu-freq (dated)

See Ubuntu documentation (https://doc.ubuntu-fr.org/indicator-cpufreq)
See the project source repository (https://launchpad.net/indicator-cpufreq)

Visiting the repository reveals the project is no longer actively maintained. While still functional, it has some bugs and provides a system tray notification icon (does not work with Wayland). In my setup, it provides two presets: a performance mode and a powersave mode.

To install: sudo apt install indicator-cpufreq or click here apt://indicator-cpufreq


cpufreq (modern project)

See the source repository (https://github.com/konkor/cpufreq)


This project was born out of crowdfunding, is open source, and licensed under GPLv3.

cpufreq

It provides an overview of the current configuration and allows you to manually set the governor profile.

It offers several interfaces:

cpufreq-application To launch the GUI
cpufreqctl Command line tool
cpufreq-indicator Provides a notification tray icon
cpufreq-preferences Opens application preferences
cpufreq-service Runs as a background daemon service

Without detailing every component, there is one prerequisite to fully benefit from it.
You should uninstall the irqbalance package: sudo apt purge irq-balance and reboot.
This package is installed by default as it is useful on servers to balance IRQ interrupts across CPU cores, but it prevents customized CPU frequency scaling. https://github.com/konkor/cpufreq/issues/48
The key benefit of this tool is the ability to define fine-grained consumption and performance profiles for your CPU.

TLP

See Ubuntu docs (https://doc.ubuntu-fr.org/tlp)
See the full documentation in English (https://linrunner.de/en/tlp/docs/tlp-configuration.html)

I will not go into extensive detail since I haven't used it extensively, but it is a very solid existing solution.

You can also combine TLP with the other tools mentioned in this article:
https://askubuntu.com/questions/556894/tlp-dont-change-cpu-frequency

Essentially, you need to disable TLP's CPU frequency scaling features.


And now, our main topic!
auto-cpufreq

See the source repository (https://github.com/AdnanHodzic/auto-cpufreq)

This tool intelligently optimizes CPU power states on the fly. It is designed to replace earlier tools (except TLP, which requires dedicated configuration as noted above).

To install via the Snap Store:

sudo snap install auto-cpufreq

Or install from source:

git clone https://github.com/AdnanHodzic/auto-cpufreq.git
cd auto-cpufreq && sudo ./auto-cpufreq-installer

Usage

Usage: auto-cpufreq [OPTIONS]

Options:
  --monitor             Monitor and suggest CPU optimizations
  --live                 Monitor and make suggested CPU optimizations
  --install / --remove  Install/remove daemon for automatic CPU optimizations
  --log                  View live CPU optimization log made by daemon
  --help                 Show this message and exit.

--monitor allows you to preview suggestions
--live applies recommendations live
--install installs the tool as a background system daemon, starting automatically at boot

If you prefer invoking the script as a daemon, you can also use auto-cpufreq --daemon

You can inspect what the tool does by reviewing the source code here:
https://github.com/AdnanHodzic/auto-cpufreq/blob/master/source/core.py

I noticed a function that manages Bluetooth by preventing automatic activation, though it is not active in the Snap package version.

Otherwise, there is no configuration file needed—it is essentially a "run and forget" tool.
However, the author is open to configuration support: https://github.com/AdnanHodzic/auto-cpufreq/issues/26
Feel free to contribute if this feature interests you.

Note that this tool does not support AMD processors.
https://github.com/AdnanHodzic/auto-cpufreq/issues/17

Feel free to contribute to the repository if you appreciate the project and have the skills.



juniko
4 min