Re: [PATCH v2 08/12] sched/core: uclamp: extend cpu's cgroup controller

From: Tejun Heo
Date: Tue Jul 24 2018 - 09:29:08 EST


Hello, Patrick.

On Mon, Jul 23, 2018 at 06:22:15PM +0100, Patrick Bellasi wrote:
> However, the "best effort" bandwidth control we have for CFS and RT
> can be further improved if, instead of just looking at time spent on
> CPUs, we provide some more hints to the scheduler to know at which
> min/max "MIPS" we want to consume the (best effort) time we have been
> allocated on a CPU.
>
> Such a simple extension is still quite useful to satisfy many use-case
> we have, mainly on mobile systems, like the ones I've described in the
> "Newcomer's Short Abstract (Updated)"
> section of the cover letter:
> https://lore.kernel.org/lkml/20180716082906.6061-1-patrick.bellasi@xxxxxxx/T/#u

So, that's all completely fine but then let's please not give it a
name which doesn't quite match what it does. We can just call it
e.g. cpufreq range control.

> > So, there are fundamental discrepancies between
> > description+interface vs. what it actually does.
>
> Perhaps then I should just change the description to make it less
> generic...

I think so, along with the interface itself.

> > I really don't think that's something we can fix up later.
>
> ... since, really, I don't think we can get to the point to extend
> later this interface to provide the strict bandwidth enforcement you
> are thinking about.

That's completley fine. The interface just has to match what's
implemented.

...
> > and what you're describing inherently breaks the delegation model.
>
> What I describe here is just an additional hint to the scheduler which
> enrich the above described model. Provided A and B are already
> satisfied, when a task gets a chance to run it will be executed at a
> min/max configured frequency. That's really all... there is not
> additional impact on "resources allocation".

So, if it's a cpufreq range controller. It'd have sth like
cpu.freq.min and cpu.freq.max, where min defines the maximum minimum
cpufreq its descendants can get and max defines the maximum cpufreq
allowed in the subtree. For an example, please refer to how
memory.min and memory.max are defined.

Thanks.

--
tejun