Messages in this thread |  | | Date | Wed, 4 Aug 2021 11:26:13 +0100 | From | Mel Gorman <> | Subject | Re: [PATCH 8/9] sched/fair: select idle cpu from idle cpumask for task wakeup |
| |
On Mon, Aug 02, 2021 at 10:41:13AM +0000, Song Bao Hua (Barry Song) wrote: > Hi Mel, Aubrey, > A similar thing Yicong and me has discussed is having a mask or a count for > idle cores. And then we can only scan idle cores in this mask in > select_idle_cpu(). >
Either approach would require a lot of updates.
> A obvious problem is that has_idle_cores is a bool, it can seriously lag > from the real status. I mean, after system enters the status without idle > cores, has_idle_cores could be still true. >
True.
> Right now, we are setting has_idle_cores to true while cpu enters idle > and its smt sibling is also idle. But we are setting has_idle_cores to > false only after we scan all cores in a llc. > > So we have thought for a while to provide an idle core mask. But never > really made a workable patch. > > Mel's patch7/9 limits the number of cores which will be scanned in > select_idle_cpu(), it might somehow alleviate the problem we redundantly > scan all cores while we actually have no idle core even has_idle_cores > is true. >
I prototyped a patch that tracked the location of a known idle core and use it as a starting hint for a search. It's cleared if the core is selected for use. Unfortunately, it was not a universal win so was dropped for the moment but either way, improving the accurate of has_idle_cores without being too expensive would be niuce.
> However, if we can get idle core mask, it could be also good to > select_idle_core()? Maybe after that, we don't have to enforce > proportional scan limits while scanning for an idle core? >
To remove the limits entirely, it would have to be very accurate and it's hard to see how that can be done without having a heavily updated shared cache line.
-- Mel Gorman SUSE Labs
|  |