Hi, On 07/07/17 14:28, Viresh Kumar wrote: > On 05-07-17, 09:59, Juri Lelli wrote: > > To be able to treat utilization signals of different scheduling classes > > in different ways (e.g., CFS signal might be stale while DEADLINE signal > > is never stale by design) we need to split sugov_cpu::util signal in two: > > util_cfs and util_dl. > > > > This patch does that by also changing sugov_get_util() parameter list. > > After this change, aggregation of the different signals has to be performed > > by sugov_get_util() users (so that they can decide what to do with the > > different signals). > > > > Suggested-by: Rafael J. Wysocki <rafael.j.wyso...@intel.com> > > Are you referring to this response here ? > > https://marc.info/?l=linux-kernel&m=149095102600847&w=2 >
Yep. > If yes, then I don't think it was about having separate APIs, but just storing > util_cfs/dl separately. > > > -static void sugov_get_util(unsigned long *util, unsigned long *max) > > +static void sugov_get_util(struct sugov_cpu *sg_cpu) > > { > > struct rq *rq = this_rq(); > > - unsigned long dl_util = (rq->dl.running_bw * SCHED_CAPACITY_SCALE) > > - >> BW_SHIFT; > > > > - *max = arch_scale_cpu_capacity(NULL, smp_processor_id()); > > + sg_cpu->max = arch_scale_cpu_capacity(NULL, smp_processor_id()); > > + sg_cpu->util_cfs = rq->cfs.avg.util_avg; > > + sg_cpu->util_dl = (rq->dl.running_bw * SCHED_CAPACITY_SCALE) > > + >> BW_SHIFT; > > +} > > > > +static unsigned long sugov_aggregate_util(struct sugov_cpu *sg_cpu) > > As Joel already mentioned, I don't think we should create two separate > routines > here. > Mmm, it makes retrieving of utilization in sugov_update_shared and aggregating values for the domain in sugov_next_freq_shared cleaner, IMHO. Thanks, - Juri