Re: [RFC PATCH v3 03/10] PM: Introduce an Energy Model management framework
From: Javi Merino
Date: Sat Jun 09 2018 - 04:24:22 EST
On Fri, Jun 08, 2018 at 04:47:39PM +0100, Quentin Perret wrote:
> Hi Javi,
>
> On Friday 08 Jun 2018 at 14:39:42 (+0100), Javi Merino wrote:
> > On Wed, Jun 06, 2018 at 05:26:47PM +0100, Quentin Perret wrote:
> > > On Wednesday 06 Jun 2018 at 16:29:50 (+0100), Quentin Perret wrote:
> > > > On Wednesday 06 Jun 2018 at 17:20:00 (+0200), Juri Lelli wrote:
> > > > > > > This brings me to another question. Let's say there are multiple users of
> > > > > > > the Energy Model in the system. Shouldn't the units of frequency and power
> > > > > > > not standardized, maybe Mhz and mW?
> > > > > > > The task scheduler doesn't care since it is only interested in power diffs
> > > > > > > but other user might do.
> > > > > >
> > > > > > So the good thing about specifying units is that we can probably assume
> > > > > > ranges on the values. If the power is in mW, assuming that we're talking
> > > > > > about a single CPU, it'll probably fit in 16 bits. 65W/core should be
> > > > > > a reasonable upper-bound ?
> > > > > > But there are also vendors who might not be happy with disclosing absolute
> > > > > > values ... These are sometimes considered sensitive and only relative
> > > > > > numbers are discussed publicly. Now, you can also argue that we already
> > > > > > have units specified in IPA for ex, and that it doesn't really matter if
> > > > > > a driver "lies" about the real value, as long as the ratios are correct.
> > > > > > And I guess that anyone can do measurement on the hardware and get those
> > > > > > values anyway. So specifying a unit (mW) for the power is probably a
> > > > > > good idea.
> > > > >
> > > > > Mmm, I remember we fought quite a bit while getting capacity-dmpis-mhz
> > > > > binding accepted, and one of the musts was that the values were going to
> > > > > be normalized. So, normalized power values again maybe?
> > > >
> > > > Hmmm, that's a very good point ... There should be no problems on the
> > > > scheduler side -- we're only interested in correct ratios. But I'm not
> > > > sure on the thermal side ... I will double check that.
> > >
> > > So, IPA needs to compare the power of the CPUs with the power of other
> > > things (e.g. GPUs). So we can't normalize the power of the CPUs without
> > > normalizing in the same scale the power of the other devices. I see two
> > > possibilities:
> > >
> > > 1) we don't normalize the CPU power values, we specify them in mW, and
> > > we document (and maybe throw a warning if we see an issue at runtime)
> > > the max range of values. The max expected power for a single core
> > > could be 65K for ex (16bits). And based on that we can verify
> > > overflow and precision issues in the algorithms, and we keep it easy
> > > to compare the CPU power numbers with other devices.
> > >
> > > 2) we normalize the power values, but that means that the EM framework
> > > has to manage not only CPUs, but also other types of devices, and
> > > normalized their power values as well. That's required to keep the
> > > scale consistent across all of them, and keep comparisons doable.
> > > But if we do this, we still have to keep a normalized and a "raw"
> > > version of the power for all devices. And the "raw" power must still
> > > be in the same unit across all devices, otherwise the re-scaling is
> > > broken. The main benefit of doing this is that the range of
> > > acceptable "raw" power values can be larger, probably 32bits, and
> > > that the precision of the normalized range is arbitrary.
> > >
> > > I feel like 2) involves a lot of complexity, and not so many benefits,
> > > so I'd be happy to go with 1). Unless I forgot something ?
> >
> > From the thermal point of view, the power values don't need to have
> > any given unit, as long as the values are comparable to each other.
>
> OK, thanks for confirming that :-)
>
> > Do we need to normalize anything in the kernel though? Can't we just
> > assume that whatever the platform is telling us is correct? Quentin
> > mentioned it earlier: sometimes absolute values are considered
> > sensitive and we only get ones that are correct relative to the rest
> > of the system.
>
> I'm happy to specify the units as mW and let the drivers lie about the
> true values. At least that helps them lie coherently if another
> subsystem requires power in uW for example.
I think this is a good option.
Cheers,
Javi