On Fri, 4 Dec 2020 at 15:31, Mel Gorman <mgor...@techsingularity.net> wrote: > > On Fri, Dec 04, 2020 at 02:47:48PM +0100, Vincent Guittot wrote: > > > IIUC, select_idle_core and select_idle_cpu share the same > > > cpumask(select_idle_mask)? > > > If the target's sibling is removed from select_idle_mask from > > > select_idle_core(), > > > select_idle_cpu() will lose the chance to pick it up? > > > > This is only relevant for patch 10 which is not to be included IIUC > > what mel said in cover letter : "Patches 9 and 10 are stupid in the > > context of this series." > > > > Patch 10 was stupid in the context of the prototype because > select_idle_core always returned a CPU. A variation ended up being > reintroduced at the end of the Series Yet To Be Posted so that SMT siblings > are cleared during select_idle_core() but select_idle_cpu() still has a > mask with unvisited CPUs to consider if no idle cores are found. > > As far as I know, this would still be compatible with Aubrey's idle > cpu mask as long as it's visited and cleared between select_idle_core > and select_idle_cpu. It relaxes the contraints on Aubrey to some extent > because the idle cpu mask would be a hint so if the information is out > of date, an idle cpu may still be found the normal way.
But even without patch 10, just replacing sched_domain_span(sd) by sds_idle_cpus(sd->shared) will ensure that sis loops only on cpus that get a chance to be idle so select_idle_core is likely to return an idle_candidate > > -- > Mel Gorman > SUSE Labs