Re: [RFC v3 0/5] Add capacity capping support to the CPU controller

Peter Zijlstra
2017-04-12T16:14:31Z

On Wed, Apr 12, 2017 at 03:43:10PM +0100, Patrick Bellasi wrote:
> On 12-Apr 16:34, Peter Zijlstra wrote:
> > On Wed, Apr 12, 2017 at 02:27:41PM +0100, Patrick Bellasi wrote:
> > > On 12-Apr 14:48, Peter Zijlstra wrote:
> > > > On Tue, Apr 11, 2017 at 06:58:33PM +0100, Patrick Bellasi wrote:
> > > > > > illustrated per your above points in that it affects both, while in
> > > > > > fact it actually modifies another metric, namely util_avg.
> > > > >
> > > > > I don't see it modifying in any direct way util_avg.
> > > >
> > > > The point is that clamps called 'capacity' are applied to util. So while
> > > > you don't modify util directly, you do modify the util signal (for one
> > > > consumer).
> > >
> > > Right, but this consumer (i.e. schedutil) it's already translating
> > > the util_avg into a next_freq (which ultimately it's a capacity).
> > >
> > > Thus, I don't see a big misfit in that code path to "filter" this
> > > translation with a capacity clamp.
> >
> > Still strikes me as odd though.
>
> Can you better elaborate on they why?

Because capacity is, as you pointed out earlier, a relative measure of
inter CPU performance (which isn't otherwise exposed to userspace
afaik).

While the utilization thing is a per task running signal.

There is no direct relation between the two.

The two main uses for the util signal are:

OPP selection: the aggregate util of all runnable tasks for a
particular CPU is used to select an OPP for said CPU [*], against
whatever max-freq that CPU has. Capacity doesn't really come into play
here.

Task placement: capacity comes into play in so far that we want to
make sure our task fits.

And I'm not at all sure we want to have both uses of our utilization
controlled by the one knob. They're quite distinct.

[*] yeah, I know clock domains with multiple CPUs in etc.. lets keep
this simple ;-)