Messages in this thread | | | Date | Fri, 23 Oct 2020 15:51:29 +0200 | From | Peter Zijlstra <> | Subject | Re: [PATCH v8 -tip 06/26] sched: Add core wide task selection and scheduling. |
| |
On Mon, Oct 19, 2020 at 09:43:16PM -0400, Joel Fernandes (Google) wrote: > + /* > + * If this sibling doesn't yet have a suitable task to > + * run; ask for the most elegible task, given the > + * highest priority task already selected for this > + * core. > + */ > + p = pick_task(rq_i, class, max); > + if (!p) { > + /* > + * If there weren't no cookies; we don't need to > + * bother with the other siblings. > + * If the rest of the core is not running a tagged > + * task, i.e. need_sync == 0, and the current CPU > + * which called into the schedule() loop does not > + * have any tasks for this class, skip selecting for > + * other siblings since there's no point. We don't skip > + * for RT/DL because that could make CFS force-idle RT. > + */ > + if (i == cpu && !need_sync && class == &fair_sched_class) > + goto next_class; > + > + continue; > + }
I'm failing to understand the class == &fair_sched_class bit.
IIRC the condition is such that the core doesn't have a cookie (we don't need to sync the threads) so we'll only do a pick for our local CPU.
That should be invariant of class.
| |