On Fri, Nov 20, 2020 at 09:48:47AM -0500, Bryan Steele wrote:

> On Fri, Nov 20, 2020 at 03:08:42PM +0100, Mark Kettenis wrote:
> > > Date: Fri, 20 Nov 2020 07:41:20 -0500
> > > From: Bryan Steele <bry...@gmail.com>
> > > 
> > > On Fri, Nov 20, 2020 at 09:26:08AM +0100, Otto Moerbeek wrote:
> > > > Hi,
> > > > 
> > > > I got a new Ryzen machine, dmesg below. What I'm observing might be a
> > > > issue with hw.setperf. 
> > > > 
> > > > On startsup it shows:
> > > > 
> > > >         hw.cpuspeed=3800
> > > >         hw.setperf=100
> > > > 
> > > > If I lower hw.setperf to zero, the new state is reflect immediately in
> > > > hw.cpuspeed:
> > > > 
> > > >         hw.cpuspeed=2200
> > > >         hw.setperf=0
> > > > 
> > > > And also sha256 -t becomes slower as expected.
> > > > 
> > > > But If I raise hw.setperf to 100 I'm seeing:
> > > > 
> > > >         hw.cpuspeed=2200
> > > >         hw.setperf=100
> > > > 
> > > > and sha256 -t is still slow. Only after some time passes (lets say a
> > > > couple of tens of seconds) it does show:
> > > > 
> > > >         hw.cpuspeed=3800
> > > >         hw.setperf=100
> > > > 
> > > > and sha256 -t is fast again.
> > > > 
> > > > This behaviour is different from my old machine, where setting
> > > > hs.setperf was reflected in hs.cpuspeed immediately both ways
> > > > 
> > > > Any clue?
> > > > 
> > > >         -Otto
> > > 
> > > Hey Otto,
> > > 
> > > Nice machine! :-)
> > > 
> > > I've seen this "sticking" issue before (as have others), but haven't
> > > been able to narrow it down unfortunately. I'm not sure if it's a
> > > bug in the k1x-pstate.c code I wrote, it's some undocumented new
> > > behaviour on newer Ryzen CPUs, or if a MI setperf change happened
> > > at some point that's unhandled..
> > > 
> > > At least on a desktop I'd suggest to leaved apmd(8) and not do any
> > > manual hw.setperf tweaking, you should have adequate cooling and the
> > > BIOS will automatically adjust the CPU fan to keep it so. I believe
> > > it will also allow it to more quickly move into CPB boost frequencies
> > > if left at P-state L0 (but don't quote me on that).
> > 
> > I would expect this machine to use the acpucpu(4) setperf
> > implementation.  Figuring out if that is indeed the case would
> > probably be step 1 in debugging this.
> 
> I didn't realize there was a setperf implementation in acpicpu(4),
> k1x-pstate depends on acpicpu(4) to to gather PSS information, but
> otherwise writes the MSRs out itself rather than calling any ACPI
> methods.
> 
> In identifycpu() we're just matching on family, e.g:
>     if (ci->ci_family >= 0x10)
>       setperf_setup = k1x_init;
> 
> The Intel SpeedStep case is below and matches based on a CPUID flag,
> so I don't see when the acpucpu implementation would ever be chosen
> at on either..
> 
> -Bryan.
> 

It's k1x_init being called to print the speeds.

At first I thought: I'd like to be able to use APM, I'm not so much
worried about cooling, but a lower power usage when the machine's
idle would be nice. You wouldn't believe the kWh price here ;-)

So I put a Watt meter on it. It turns out the machine uses about 51W
when idle and apm -H or -C does not make any difference. Power usage
goes up to about 157W when building and drops back to 51W when idling.

So you advice not to tweak hw.setperf or apm is sound.

BTW: no lap burning risks, it's a desktop CPU in a tower case standing
on the floor ;-)

        -Otto

Reply via email to