Messages in this thread | | | From | Josh Don <> | Date | Mon, 23 Aug 2021 16:24:26 -0700 | Subject | Re: [PATCH] sched/core: fix pick_next_task 'max' tracking |
| |
Hi Peter,
On Mon, Aug 23, 2021 at 4:17 AM Peter Zijlstra <peterz@infradead.org> wrote: [snip] > + for_each_cpu(i, smt_mask) { > + rq_i = cpu_rq(i); > + p = rq_i->core_temp; > > - /* > - * If this sibling doesn't yet have a suitable task to > - * run; ask for the most eligible task, given the > - * highest priority task already selected for this > - * core. > - */ > - p = pick_task(rq_i, class, max, fi_before); > + if (!cookie_equals(p, cookie)) { > + p = NULL; > + if (cookie) > + p = sched_core_find(rq_i, cookie);
In the case that 'max' has a zero cookie, shouldn't we search for a match on this cpu if the original class pick ('p') had a non-zero cookie? We don't enqueue tasks with zero cookie in the core_tree, so I forget if there was some other reasoning here.
> if (!p) > - continue; > + p = idle_sched_class.pick_task(rq_i); > + }
| |