Debian ignoring BIOS frequency limits (underclocking question)

Hi there,

I'm running Debian Testing on an Intel Desktop Board DH67BL, with a Core i7-2600, 16GB RAM, nVidia 960 4GB, 16GB RAM, 500 GB SSD. For compatibility reasons when dual-booting XP, I will occasionally limit the CPU multiplier in BIOS to 16x in order to limit my framerates and prevent insane coil whine if frame limits are uncapped, often necessary for early DirectX titles to run smoothly (Star Trek Armada, lookin' at you).

However, when i boot into Debian, I notice that the frequency is still going up to the non-turbo limit of 3.4GHz when under load. The BIOS should be limiting it to 1596/1600GHz. This issue also happens on Debian Stable, so it's not just Testing that's doing this. My question is, why does the kernel ignore BIOS limits?

Thanks,
Red

PS: Edit to add: Yes, there's only four threads. I have two cores disabled, this is still an i7-2600.

Edit #2: Running the system in BIOS, not UEFI, in case this is relevant. ZFS on root and GRUB don’t work with the motherboard otherwise.
 

Attachments

  • Screenshot_20240418_143446.png
    Screenshot_20240418_143446.png
    389.2 KB · Views: 17
Last edited:

chalex

Ars Legatus Legionis
11,286
Subscriptor++
which version of debian, which version of the kernel, but anyway I would start with google/llm about how to check and configure the kernel frequency governor

gemini suggests things like
cpupower frequency-info --governors
cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor

  • tlp: The tlp utility on Debian offers advanced power management features and can often automatically select suitable governors for laptops.
 

GiGaBiTe

Smack-Fu Master, in training
16
Linux has never been particularly good about properly detecting the actual CPU speed when the system is under/overclocked. Treat the number that Debian is giving you with a grain of salt, it may not actually be what the CPU is running at.

You can force the CPU to a designated speed using cpupower and the userspace governor, but it relies on the system and CPU to play nice to work.

You can run this command in a bash shell to see what governors are available:
Code:
cpupower frequency-info --governors

If you have the "userspace" governor available, you can try doing this:

Code:
cpupower frequency-set -f 1600000

the -f argument takes the CPU speed in kHz, so adjust accordingly. If that doesn't work, you can try the -u and -d options, which specifies an upper and lower clock limit the CPU is allowed to work in.
 
  • Like
Reactions: malor