How to Limit CPU Frequency on Fedora 28

If you want to limit your laptop’s CPU under Fedora Linux, just like me, this small how-to is what you need. What is it for? Well, there’s a number of reasons. After limiting CPU frequency I got:

  • Better thermal mode
  • Decreasing fan noise level
  • Increasing time without charging

So let’s start.

First thing first - we have to install cpupower tool. Under Fedora you can just do

sudo dnf install kernel-tools

Next let’s check what governons are available:

cpupower frequency-info --governors

If the output is something like this:

analyzing CPU 0:
  available cpufreq governors: powersave performance

then we have to do some magic with intel pstate driver As you can see in the documentation, this driver provides an interface to control the P-State selection for the SandyBridge+ Intel processors.

So we need to do the following:

sudo vi /etc/default/grub

And add option intel_pstate=disable to GRUB_CMDLINE_LINUX. In my case the file’s content is like:

GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="rhgb quiet intel_pstate=disable"
GRUB_DISABLE_RECOVERY="true"

After that we shoul update grub configuration and reboot.

sudo grub2-mkconfig -o /boot/grub2/grub.cfg
sudo reboot

After reboot check available governons again

cpupower frequency-info --governors
analyzing CPU 0:
  available cpufreq governors: conservative userspace powersave ondemand performance schedutil

Much better!

So now we can do anything with our CPU frequency!

Check options:

sudo cpupower --cpu all frequency-set
At least one parameter out of -f/--freq, -d/--min, -u/--max, and
-g/--governor must be passed

Try to do something like this (but remember, that numbers depend on your CPU configuration. This example is suitable for my Lenovo X230):

sudo cpupower --cpu all frequency-set --max 2.0GHz 
sudo cpupower --cpu all frequency-info

And you should see something like this:

<...>
  current policy: frequency should be within 1.20 GHz and 2.00 GHz.
                  The governor "ondemand" may decide which speed to use
                  within this range.
<...>

Double check which governon is in use:

cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
ondemand

Well, seems good. Now you can play around with parameters to find the most suitable config for you.

That’s all. Stay tuned.

Written on May 20, 2018