Quoting Steve Muckle (2016-03-15 19:52:59) > On 03/13/2016 10:22 PM, Michael Turquette wrote: > > +unsigned long cfs_capacity_margin = CAPACITY_MARGIN_DEFAULT; > > + > > #ifdef CONFIG_CFS_BANDWIDTH > > /* > > * Amount of runtime to allocate from global (tg) to local (per-cfs_rq) > > pool > > @@ -2840,6 +2853,8 @@ static inline void update_load_avg(struct > > sched_entity *se, int update_tg) > > > > if (cpu == smp_processor_id() && &rq->cfs == cfs_rq) { > > unsigned long max = rq->cpu_capacity_orig; > > + unsigned long cap = cfs_rq->avg.util_avg * > > + cfs_capacity_margin / max; > > Doesn't rq->cpu_capacity_orig get scaled per the microarch invariance? > This would mean that the margin we're applying here would differ based > on that. > > I'd expect that the margin would be * (cfs_capacity_margin / > SCHED_CAPACITY_SCALE) which would then reduce the division into a shift.
Will fix. Thanks, Mike