On Mon, Oct 19, 2020 at 09:43:16PM -0400, Joel Fernandes (Google) wrote: > From: Peter Zijlstra <[email protected]> > > Instead of only selecting a local task, select a task for all SMT > siblings for every reschedule on the core (irrespective which logical > CPU does the reschedule).
This: > > During a CPU hotplug event, schedule would be called with the hotplugged > CPU not in the cpumask. So use for_each_cpu(_wrap)_or to include the > current cpu in the task pick loop. > > There are multiple loops in pick_next_task that iterate over CPUs in > smt_mask. During a hotplug event, sibling could be removed from the > smt_mask while pick_next_task is running. So we cannot trust the mask > across the different loops. This can confuse the logic. Add a retry logic > if smt_mask changes between the loops. isn't entirely accurate anymore, is it?

