Ubuntu – CPU frequency too high even with ‘powersave’ governor

18.04cpucpufreqgovernorintel

Recently I noticed my CPU sits most of the time at high frequencies, even with very little load.

It is an i5-7300HQ processor which should use frequencies between 800 MHz and 2.5 GHz (3.5 GHz with Turbo Boost).

Now even when load is about 2-8%, the frequencies I see are usually between 2.6 and 3.2 GHz, which means the CPU is almost always Turbo Boosting.

Before it was always 900 – 1200 MHz.

The scaling governor is set to powersave:

$ cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
powersave
powersave
powersave
powersave

In /etc/default/grub I have a line:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash intel_pstate=disable scsi_mod.scan=sync"

In /etc/default/cpufrequtils:

GOVERNOR="powersave"

There is no /sys/devices/system/cpu/intel_pstate/ dir

My system specs are:

  • Laptop: HP Pavilion – 15-bc203nw
  • OS: Ubuntu (Xubuntu) 18.04.1 LTS
  • CPU: Intel Core i5-7300HQ

EDIT

After @WinEunuuchs2Unix suggestions I again have /sys/devices/system/cpu/intel_pstate/ dir.

Typing the following:

cd /sys/devices/system/cpu/cpu0/cpufreq && paste <(ls *) <(cat *)

gives the output:

affected_cpus                             0
cpuinfo_max_freq                          3500000
cpuinfo_min_freq                          800000
cpuinfo_transition_latency                0
energy_performance_available_preferences  default performance balance_performance balance_power power
energy_performance_preference             balance_performance
related_cpus                              0
scaling_available_governors               performance powersave
scaling_cur_freq                          3236541
scaling_driver                            intel_pstate
scaling_governor                          performance
scaling_max_freq                          3500000
scaling_min_freq                          3500000
scaling_setspeed                          <unsupported>

How can I set it to powersave (just changing it in scaling_governor file doesn't do anything).

Best Answer

Answer Version 3.0

Kernel version 4.14.98 has finally fixed problems I've noticed for last 6 months or so:

  • When system is idle CPU frequency would spike to 3,000 MHz in Turbo Mode.
  • When system is busy CPU frequency would simmer down to about 1,500 MHz.

Now as you can see when system is idle system is at 800 MHz as it should be:

enter image description here

Answer Version 2.0

OP updated question with results of Initial Answer below and for whatever reason the governor is set to performance mode which runs all CPU's at max speed all the time.

We need to do the reverse of this answer: Set CPU governor to performance in 18.04:

Use: sudo -H gedit /etc/rc.local put insert this before the last line containing exit 0:

sleep 120 # Give CPU startup routines time to settle.
echo powersave | tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
echo 800000 | tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_min_freq

Save the file and reboot. Two minutes after rebooting your CPU's will settle down and run normally.


What if /etc/rc.local doesn't exist?

From this: Ubuntu 16.10 rc.local file does not exist

you need to enter:

sudo systemctl enable rc-local.service

Initial Answer

According to: intel_pstate CPU Performance Scaling Driver, intel_pstate status should be:

status

Operation mode of the driver: “active”, “passive” or “off”.

“active”
    The driver is functional and in the active mode.
“passive”
    The driver is functional and in the passive mode.
“off”
    The driver is not functional (it is not registered as a scaling driver with the CPUFreq core)

My first step would be to remove your kernel command line parameter intel_pstate=disable.

Reboot and type the following:

$ cd /sys/devices/system/cpu/cpu0/cpufreq

$ paste <(ls *) <(cat *)

affected_cpus                             0
cpuinfo_max_freq                          3500000
cpuinfo_min_freq                          800000
cpuinfo_transition_latency                0
energy_performance_available_preferences  default performance balance_performance balance_power power 
energy_performance_preference             balance_performance
related_cpus                              0
scaling_available_governors               performance powersave
scaling_cur_freq                          832522
scaling_driver                            intel_pstate
scaling_governor                          powersave
scaling_max_freq                          3500000
scaling_min_freq                          800000
scaling_setspeed                          <unsupported>

This is what I have in a default configuration without intel_pstate=disable.

Pay close attention to scaling_max_freq and scaling_min_freq.

You might want to temporarily uninstall CPU Freq Utils package:

sudo apt remove cpufrequtils

I have never found a need for it and it might be mucking your system up. Later you can install it again (if need be) with:

sudo apt install cpufrequtils
Related Question