I have been unable to control the cpu frequencies using either tlp, or cpupower, or other tools. Kernel version is 5.3.0-19-generic.

I tried using intel_pstate active or turning off intel pstate with 'intel_pstate=disabled' as a kernel boot parameter, which then makes acpi-cpufreq the driver. Either way nothing controlled the cpu frequencies.

Note: I had to turn off 'secure-boot' in the BIOS to allow changing the perf policy with x86_energy_perf_policy. Still, no matter, it didn't work.

Here is the behavior:

(1) Using intel_pstate driver with policy 'performance' the cpu frequencies hover near the max 1.3GHz (around 1.25GHz). Using policy 'powersave' the cpu frequencies hover near 1.1GHz, or maybe didn't change at all. Trying to set anything with either cpupower, or the tlp settings did nothing.

(2) using acpi-cpufreq driver no settings with any of the tools (used separately) mattered.

I made sure the tools were not conflicting by using them one at a time, while removing the others from the system.

What the system does: The cpu frequencies adjust as if they are always controlled by the 'ondemand' governor. But no matter, I cannot set the performance policy or governor or other settings to keep the cpus below any frequency - they spike up whenever they like.

I have scoured Google for two weeks now looking at everything related to my problems and tried lots of the suggestions, but nothing worked. With all tools (tlp, cpupower, cpufreqd, cpurequtils, etc.), the cpus will be default controlled by the 'ondemand' governor. (The system calls the script /lib/systemd/set-cpufreq which sets this.) I can change this, of course, but it doesn't seem to matter.

Any help is greatly appreciated.


2 Answers 2


Found the solution. First, do not disable intel_pstate. Second, set the tlp defaults as you like.

Next, temporarily turn off 'secure boot' in the BIOS. This is necessary for the following command to work.

Issue (I have 8 cpus, hence the 0-7)

$ x86_energy_perf_policy -c 0-7 --hwp-max 1

This sets some kind of hardware max frequency parameter (?firmware) to the lowest level so that the max cpu frequency can be changed by cpupower to the match the lowest cpu frequency. (--hwp-min 1 will set the min frequency parameter if it is not already. But you shouldn't need to do this.)

You can now turn on 'secure boot' in the BIOS again.

Then issue

$ cpupower -c all frequency-set -u 800Mhz -g powersave

with whatever speed you like and it should work. So far things are working for me. Suspend/wake does not disturb the cpu frequency settings. AC and BATT setting in tlp are honored as they should be.

Notes: The lowest power I have been able to reach is about 3.5 Watts when the system is idle. If you can get your 7390 lower, please post!

  • This should be marked as solution.
    – TiGR
    Jan 8, 2020 at 11:22
  • It works to change it but it just changes back after a few minutes the first time the system is under load it changes to performance.
    – mchid
    Apr 1, 2021 at 4:29

cpuf - Simple Bash GUI to set CPU Min/Max Frequency

You can use this GUI or simple Bash script to throttle the CPU? to override frequencies:


In this demo cpuf window is on left and conky system information is on right side. This is how the demo progresses:

  • Demo starts whilst youtube video is already running
  • Default CPU min/max frequencies are 800 / 3500
  • Override CPU min/max to 800 / 800 and CPU usage jumps to 20%
  • Override CPU min/max to 3500 / 3500 and CPU usage drops to 10%
  • Demo loops back and starts again


You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .