Skip to main content

Work around overheating with cpufreq-set

One of my Gentoo boxes has overheating issues which I have yet to properly address on hardware level. Compiling something like Boost or Firefox results in a guaranteed emergency reboot, literally not cool. The box has a dual core CPU with 2.53 GHz. Fortunately, it can be throttled to do operate at a lower frequency which results in less heat from the CPU. Using cpufreq-info(1) I can see that the CPU is happy to operate under a few alternative frequencies:

$ cpufreq-info | fgrep 'available frequency' | head -n 1
  available frequency steps: 2.53 GHz, 2.53 GHz, 1.60 GHz, 800 MHz

Now different CPU governors give me different options:

  • Governor 'performance' runs at maximum frequency (i.e. 2.53 GHz), not cool
  • Governor 'powersave' runs at the minimum frequency (i.e. 800 MHz) where compilation may take forever
  • Governor 'ondemand' jumps from mode to mode depending on workload: still reboots from overheating
  • Governor 'userspace' allows me to keep the frequency at 1.60 GHz -- nice!

You can check for availability of a specific CPU governor with

$ zgrep FREQ_GOV_ /proc/config.gz
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
CONFIG_CPU_FREQ_GOV_POWERSAVE=y
CONFIG_CPU_FREQ_GOV_USERSPACE=y
CONFIG_CPU_FREQ_GOV_ONDEMAND=y
# CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set

and make use of modprobe(8) as needed. So with a single call

$ sudo cpufreq-set -r --min 1.60Ghz --max 1.60Ghz -g userspace

that box seems to stop overheating for now. Nice! [EDIT] : What Robin is suggesting in the comments would make

$ sudo cpufreq-set -r --max 1.60GHz -g ondemand

on the shell.