On Tue, Feb 23, 2016 at 2:22 AM, Steve Muckle <[email protected]> wrote: > From: Morten Rasmussen <[email protected]> > > capacity_orig_of() returns the max available compute capacity of a cpu. > For scale-invariant utilization tracking and energy-aware scheduling > decisions it is useful to know the compute capacity available at the > current OPP of a cpu. > > cc: Ingo Molnar <[email protected]> > cc: Peter Zijlstra <[email protected]> > Signed-off-by: Morten Rasmussen <[email protected]> > Signed-off-by: Steve Muckle <[email protected]> > --- > kernel/sched/fair.c | 11 +++++++++++ > 1 file changed, 11 insertions(+) > > diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c > index 7ce24a4..3437e01 100644 > --- a/kernel/sched/fair.c > +++ b/kernel/sched/fair.c > @@ -4821,6 +4821,17 @@ static long effective_load(struct task_group *tg, int > cpu, long wl, long wg) > #endif > > /* > + * Returns the current capacity of cpu after applying both > + * cpu and freq scaling. > + */ > +static unsigned long capacity_curr_of(int cpu) > +{ > + return cpu_rq(cpu)->cpu_capacity_orig * > + arch_scale_freq_capacity(NULL, cpu)
What about architectures that don't have this? Why is that an architecture feature? I can easily imagine two x86 platforms using different scale_freq_capacity(), for example. > + >> SCHED_CAPACITY_SHIFT; > +} > + > +/* > * Detect M:N waker/wakee relationships via a switching-frequency heuristic. > * A waker of many should wake a different task than the one last awakened > * at a frequency roughly N times higher than one of its wakees. In order > -- Thanks, Rafael

