Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 08 Apr 2011 14:42:04 +0300
From:      Alexander Motin <mav@FreeBSD.org>
To:        =?windows-1252?Q?Daniel_Ger=9Eo?= <danger@rulez.sk>
Cc:        stable@freebsd.org, brucec@freebsd.org
Subject:   Re: powerd / cpufreq question
Message-ID:  <4D9EF48C.9070907@FreeBSD.org>
In-Reply-To: <4D9EEDAF.3020803@rulez.sk>
References:  <4D9EEDAF.3020803@rulez.sk>

next in thread | previous in thread | raw e-mail | index | archive | help
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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4D9EF48C.9070907>