Re: [PATCH 2/2] sched: Document Energy Aware Scheduling

From: Quentin Perret
Date: Fri Jan 18 2019 - 04:16:59 EST

Hi Juri,

On Thursday 17 Jan 2019 at 16:51:17 (+0100), Juri Lelli wrote:
> On 10/01/19 11:05, Quentin Perret wrote:
> > +The idea behind introducing an EM is to allow the scheduler to evaluate the
> > +implications of its decisions rather than blindly applying energy-saving
> > +techniques that may have positive effects only on some platforms. At the same
> > +time, the EM must be as simple as possible to minimize the scheduler latency
> > +impact.
> > +
> > +In short, EAS changes the way CFS tasks are assigned to CPUs. When it is time
> Not sure if we want to remark the fact that EAS is looking at CFS tasks
> only ATM.

Oh, what's wrong about mentioning it ? I mean, it is a fact ATM ...

> > +for the scheduler to decide where a task should run (during wake-up), the EM
> > +is used to break the tie between several good CPU candidates and pick the one
> > +that is predicted to yield the best energy consumption without harming the
> > +system's throughput. The predictions made by EAS rely on specific elements of
> > +knowledge about the platform's topology, which include the 'capacity' of CPUs,
> Add a reference to DT bindings docs defining 'capacity' (or define it
> somewhere)?

Right, I can mention this is defined in the next section. But are you
sure about the reference to the DT bindings ? They're arm-specific right ?
Maybe I can give that as an example or something ...

> > +and their respective energy costs.
> > +
> > +
> > +3. Topology information
> > +-----------------------
> > +
> > +EAS (as well as the rest of the scheduler) uses the notion of 'capacity' to
> > +differentiate CPUs with different computing throughput. The 'capacity' of a CPU
> > +represents the amount of work it can absorb when running at its highest
> > +frequency compared to the most capable CPU of the system. Capacity values are
> > +normalized in a 1024 range, and are comparable with the utilization signals of
> > +tasks and CPUs computed by the Per-Entity Load Tracking (PELT) mechanism. Thanks
> > +to capacity and utilization values, EAS is able to estimate how big/busy a
> > +task/CPU is, and to take this into consideration when evaluating performance vs
> > +energy trade-offs. The capacity of CPUs is provided via arch-specific code
> > +through the arch_scale_cpu_capacity() callback.
> Ah, it's here, mmm, maybe still introduce it before (or point here from
> above) and still point to dt bindings doc?

Yep, I'll add a pointer above.

> > +the most energy efficient CPUs of the system more than the others if that can be
> > +done without harming throughput. So, the load-balancer is disabled to prevent
> Load-balancing being disabled in EAS mode it's quite an important thing
> to notice IMHO. Maybe state it clearly somewhere above?

Right, this needs to be emphasized more. I'll mention it in the

> > +So, in order to use EAS on your platform your architecture must implement the
> Mmm, using 'your' form is a change of 'style', no?

Good point, I will try to unify this section with the rest of the doc.
There are loads of 'your platform' below too.

Thank you very much for the typos as well :-)