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 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. -- viresh