Messages in this thread | | | From | Aubrey Li <> | Date | Sat, 15 Feb 2020 14:01:36 +0800 | Subject | Re: [RFC PATCH v4 00/19] Core scheduling v4 |
| |
On Fri, Feb 14, 2020 at 11:05 PM Vineeth Remanan Pillai <vpillai@digitalocean.com> wrote: > > Hi Aubrey, > > Thanks for the updated patches. Merged the changes to our testing branch > in preparation for v5. > >> >> I added a helper to check task and cpu cookie match, including the >> entire core idle case. The refined patchset updated at here: >> https://github.com/aubreyli/linux/tree/coresched_v4-v5.5.2 > > > I did not go through all the changes thoroughly, but on a quick glance, > I feel a small change would optimize it a bit. > > + /* > + * A CPU in an idle core is always the best choice for tasks with > + * cookies, and ignore cookie match if core scheduler is not enabled > + * on the CPU. > + */ > + if (idle_core || !sched_core_enabled(rq)) > + return true; > + > + return rq->core->core_cookie == p->core_cookie; > +} > + > > I think check for sched_core_enabled would make sense to be done above the > for loop. Something like this: > > +static inline bool sched_core_cookie_match(struct rq *rq, struct task_struct *p) > +{ > + bool idle_core = true; > + int cpu; > + > + if (!sched_core_enabled(rq)) > + return true; > + > + for_each_cpu(cpu, cpu_smt_mask(cpu_of(rq))) { > + if (!available_idle_cpu(cpu)) { > + idle_core = false; > + break; > + } > + } > + > + /* > + * A CPU in an idle core is always the best choice for tasks with > + * cookies. > + */ > + return idle_core || rq->core->core_cookie == p->core_cookie; > +} > + > > We can avoid the unnecessary check for idle_core is sched_core is disabled. > This would optimize in case of systems with lots of cpus. > > Please let me know!
Yes, this makes sense, patch updated at here, I put your name there if you don't mind. https://github.com/aubreyli/linux/tree/coresched_v4-v5.5.2-rc2
Thanks, -Aubrey
| |