Something odd with CPU frequency levels on AMD EE processors

Stefan Esser se at freebsd.org
Tue Sep 8 12:52:50 UTC 2015


Am 08.09.2015 um 07:59 schrieb Jukka Ukkonen:
> 
> Hello all,
> 
> Previously my AMD EE CPUs have been reporting frequency levels all
> the way down to 100 MHz and powerd also used those quite nicely.
> Yesterday I noticed the fans running at much higher speed than what
> has been normal on a mostly idle system. Now "sysctl dev.cpu.0"
> shows me this...
> 
> dev.cpu.0.cx_usage: 100.00% last 622us
> dev.cpu.0.cx_lowest: C8
> dev.cpu.0.cx_supported: C1/1/0
> dev.cpu.0.freq_levels: 1700/3870 1500/3461 1300/3105 1100/2720 800/2193
> dev.cpu.0.freq: 800
> dev.cpu.0.temperature: 34.6C
> dev.cpu.0.%parent: acpi0
> dev.cpu.0.%pnpinfo: _HID=none _UID=0
> dev.cpu.0.%location: handle=\_PR_.P001
> dev.cpu.0.%driver: cpu
> dev.cpu.0.%desc: ACPI CPU
> 
> The system no longer sees the lower CPU frequency levels at all.
> Obviously it will not try using them either.

Power savings result from lower processor core voltage requirements at
lower clock rates (power goes up qudratic with voltage). The numbers
behind the slash are nominal power requirements (at 100% CPU) when a
certain frequency and corresponding voltage are effective. (E.g.
nominal 3,87W at 1700 MHz, 2,193W at 800 MHz for your processor.)

The other frequencies that you observed were not clock rates, but
effective clocks after injection of "wait cycles" (e.g. 1 one in 8
clocks used to perform any computation, but the clock frequency is
still 800 MHz). This throttling had been introduced in the Pentium-4
with its high power consumption to limit absolute power dissipation
(to prevent damage to the CPU die). But performance is much more
reduced than power consumption, since the CPU voltage is not
reduced during throttling.

The result is, that the CPU consumes nearly the same power as if
it was not throttling, but takes up to 8 times as long to perform
computations (before it can fall into a power saving deep sleep)
and it needs more electrical energy to deal with a given workload.

Throttling tends to increase power consumption and caused numerous
problems including system freezes. It has been disabled by default,
since the problem of the overheating P4 has seen much better
solutions over the last decade.

> This change must have been quite recent. Otherwise I would have
> noticed the fans running at unusually high speeds much earlier
> than yesterday evening. In any case now the idle system consumes
> much more power than it really needs to producing only heat which
> is exactly what I had tried to avoid when choosing the EE CPUs.

What is your low power CPU sleep state? Since CPUs shut down most
circuitry when unused for even a fraction of a millisecond, these
sleeps are the best way to reduce power consumption and dissipation.

> Here is the output from "uname -a" showing the OS version, the SVN
> version number, and the time of the latest build.
> 
> FreeBSD sleipnir 10.2-STABLE FreeBSD 10.2-STABLE #0 r287529: Mon Sep  7
> 09:39:36 EEST 2015     root at sleipnir:/usr/obj/usr/src-10.2/sys/Sleipnir
>  amd64
> 
> I hope someone has an idea what has happened. I would really like
> to enable the lower frequency levels again as soon as possible.

Well, you can by just enabling throttling again, by adding the
following two lines to /boot/loader.conf:

hint.p4tcc.0.disabled="0"
hint.acpi_throttle.0.disabled="0"

But you really should check your power save settings. E:g. on my
i7/2600:

dev.cpu.0.cx_method: C1/mwait/hwc C2/mwait/hwc C3/mwait/hwc
dev.cpu.0.cx_usage_counters: 2249176 229399 26095890
dev.cpu.0.cx_usage: 7.87% 0.80% 91.32% last 26975us
dev.cpu.0.cx_lowest: C8
dev.cpu.0.cx_supported: C1/1/1 C2/2/80 C3/3/104

My system supports C3 as the deepest power state and it seems to
use it quite often (91%).

What's your setting of performance_cx_lowest and economy_cx_lowest?

I have the following in my rc.conf:

performance_cx_lowest="Cmax"    # Online CPU idle state
economy_cx_lowest="Cmax"        # Offline CPU idle state

And what about powerd:

powerd_enable="YES"
powerd_flags="-r 75 -i 95"
powerd_flags="-a hiadaptive -n hiadaptive"

But powerd may also be of no use for your system - some modern
CPUs are more efficient when always run at the highest possible
clock rate (to complete the given task as quickly as possible
and then be able to fall into a deep sleep state). E.g. the new
Intel Core i7/6xxx CPUs will even boost the clock of a core to
increase the sleep time (instead of lowering the clock to be
able to reduce the CPU voltage).

Regards, STefan


More information about the freebsd-amd64 mailing list