How do I disable CPU throttling
Thomas D. Dean
tomdean at wavecable.com
Tue Jul 13 04:56:15 UTC 2021
On 7/12/21 8:17 PM, Paul Procacci wrote:
> sysctl dev.cpu.0 | grep freq
dev.cpu.0.freq_levels: 3700/4070 2800/2800 2200/1980
These numbers are in GHz.
What I want to do is understand where the numbers 3700 and 4070 come from.
It seems powerd_profile picks 3700 as the highest value and 2200 as the
The CPU specs say 4500.
How does the code get the numbers in dev.cpu.0.freq_levels?
I read the code in /usr/src/sys/kern/kern_cpu.c and found a hint
* Used by the cpufreq core, this function will populate *level with the
* current frequency as either determined by a cached value
* sc->curr_level, or in the case the lower level driver has set the
** CPUFREQ_FLAG_UNCACHED flag, it will obtain the frequency from the
** driver itself.
levels = malloc(count * sizeof(*levels), M_TEMP, M_NOWAIT);
CPUFREQ_LEVELS(sc->dev, levels, &count)
* If still booting and secondary CPUs not started yet, don't allow
* changing the frequency until they're online. This is because we
* can't switch to them using sched_bind() and thus we'd only be
*** switching the main CPU. XXXTODO: Need to think more about how to
*** handle having different CPUs at different frequencies.
The numbers 3700, 4070, 2800, 2200, 1980 can not be changed with boot or
runtime config. These values are derived or read from BIOS.
> On Mon, Jul 12, 2021 at 5:01 PM Thomas D. Dean <tomdean at wavecable.com
> <mailto:tomdean at wavecable.com>> wrote:
> On 7/12/21 1:12 PM, Paul Procacci wrote:
> > sysctl's get set generally in /etc/sysctl.conf
> > dev.cpu.0.freq_levels <-- This format is called a mib in the native
> > parlance.
> > sysctl.conf(5) and sysctl(8) go into much further detail.
> > ~Paul
> > grep -Rail freq_levels /etc/*
> shows the source of freq_levels
> I believe this is hardwired somewhere. Maybe read from the cpu? BIOS?
> Most mib's have defaults. They are compiled into the kernel statically
> or made available to it via kernel modules.
> What you are looking for is located in this source file:
> Really though, I can tell that's way too much for ya. Instead what you
> are looking to do is
> detailed in rc.conf(5):
> " powerd_enable
> (bool) If set to "YES", enable the system power control
> facility with the powerd(8) daemon."
> " performance_cpu_freq
> (str) CPU clock frequency to use while on AC power. The
> string "LOW" indicates that cpufreq(4) should use the
> frequency available while "HIGH" indicates that the
> frequency (less power savings) should be used."
> What you want to most likely do is the following:
> echo powerd_enable=\"YES\" >> /etc/rc.conf
> echo performance_cpu_freq=\"HGH\" >> /etc/rc.conf
> Follow that up by restarting the powerd daemon:
> /etc/rc.d/powerd restart
> If you have a supported cpu, which I have no reason to believe
> otherwise, your
> goal of running your machine at full speed without throttling should be
> within your grasp.
> powerd, a userland daemon, controls this mib as necessary on the fly.
> rc.conf(5) is a godsend for stuff like this and its documentation is
> On another note, I see no reason to change this at all. CPU's are
> nearly instantaneous
> at scaling as necessary to accomodate loads for their needs. I digress
> Take Care.
More information about the freebsd-questions