powerd / cpufreq question
Alexander Motin
mav at FreeBSD.org
Fri Apr 8 12:14:16 UTC 2011
Hi.
On 08.04.2011 14:12, Daniel Geržo wrote:
> I have a new machine with Xeon(R) CPU X5650 2666.77-MHz and I would like
> to utilize powerd(8) on it however, when I run `powerd -v -r90' I see
> something like this:
>
> load 64%, current freq 2668 MHz ( 0), wanted freq 5336 MHz
> load 120%, current freq 2668 MHz ( 0), wanted freq 5336 MHz
> load 173%, current freq 2668 MHz ( 0), wanted freq 5336 MHz
> load 62%, current freq 2668 MHz ( 0), wanted freq 5336 MHz
> load 82%, current freq 2668 MHz ( 0), wanted freq 5336 MHz
> load 110%, current freq 2668 MHz ( 0), wanted freq 5336 MHz
>
> even though the machine is according to top(1) ~90% idle; So I realized,
> that powerd might take the load as the sum of loads of all the cores
> (12), so I tried to tweak powerd arguments like this:
>
> `powerd -v -r 1000 -i 600'
>
> but that errors for me with:
>
> root@[s1-a ~]# powerd -v -r 1000 -i 600
> powerd: 1000 is not a valid percent
>
> Well, that makes sense, but why powerd itself knows about load > 100%
> but doesn't allow me to specify it? Is this bug? I suppose not if it
> works for other people...
It is reasonable limitation. powerd can't know how load distributed
among multiple cores in time. If all cores are equally busy at lets say
10% (that gives 120% total) and cores are never waiting for each other
then obviously frequency could be reduced. But if the same 120% mean
100%+20%, or if load is equally spread, but processes on different cores
are waiting for each other, then reducing frequency will reduce
performance. powerd can't know that and so stays on a safe side.
> Other question would be why powerd wants to set freq 5336, when it is
> not available at all (would be nice to have it heh.):
You may see there it is a "wanted" frequency, not real one. :) It is
internal implementation details. In such way powerd implements keeping a
full frequency for some time after the load dropped. It's not a bug.
On multi-core systems like this power management can better be done on
per-core bases. Powerd can't control frequencies on per-core basis (also
because it require non-trivial interoperation with scheduler). But if
your ACPI BIOS allows, you can try to put unused cores into deeper
C-states, that may give better power saving and TurboBoost on busy cores
as a bonus. It works better on 9-CURRENT, but on 8-STABLE some bonuses
still could be achieved.
You may want to look here:
http://wiki.freebsd.org/TuningPowerConsumption
--
Alexander Motin
More information about the freebsd-stable
mailing list