Hi Luca, On Monday 06 May 2019 at 06:48:32 (+0200), Luca Abeni wrote: > +static inline int dl_task_fit(const struct sched_dl_entity *dl_se, > + int cpu, u64 *c) > +{ > + u64 cap = (arch_scale_cpu_capacity(NULL, cpu) * > arch_scale_freq_capacity(cpu)) >> SCHED_CAPACITY_SHIFT;
I'm a little bit confused by this use of arch_scale_freq_capacity() here. IIUC this means you would say a big DL task doesn't fit on a big CPU just because it happens to be running at a low frequency when this function is called. Is this what we want ? If the frequency is low, we can (probably) raise it to accommodate this DL task so perhaps we should say it fits ? > + s64 rel_deadline = dl_se->dl_deadline; > + u64 rem_runtime = dl_se->dl_runtime; > + > + if (c) > + *c = cap; > + > + if ((rel_deadline * cap) >> SCHED_CAPACITY_SHIFT < rem_runtime) > + return 0; > + > + return 1; > +} Thanks, Quentin