Messages in this thread | | | From | Valentin Schneider <> | Subject | Re: [PATCH 3/8] sched/fair: Tweak misfit-related capacity checks | Date | Mon, 08 Feb 2021 17:49:00 +0000 |
| |
On 08/02/21 16:29, Vincent Guittot wrote: > On Fri, 5 Feb 2021 at 21:07, Valentin Schneider > <valentin.schneider@arm.com> wrote: >> >> Perhaps I can still keep 5/8 with something like >> >> if (!rq->misfit_task_load) >> return false; >> >> do { >> if (capacity_greater(group->sgc->max_capacity, rq->cpu_capacity)) >> return true; >> >> group = group->next; >> } while (group != sd->groups); > > I don't catch what you want to achieve with this while loop compared > to the original condition which is : > trigger a load_balance : > - if there is CPU with higher original capacity > - or if the capacity of this cpu has significantly reduced because of > pressure and there is maybe others with more capacity even if it's one > with highest original capacity >
If we had a root-domain-wide (dynamic) capacity maximum, we could make check_misfit_status() return false if the CPU *is* pressured but there is no better alternative - e.g. if all other CPUs are pressured even worse.
This isn't a correctness issue as the nohz load-balance will just not migrate the misfit task, but it would be nice to prevent the nohz kick altogether.
I might ditch this for now and revisit it later.
>> >> return false; >> >> This works somewhat well for big.LITTLE, but for DynamIQ systems under a >> single L3 this ends up iterating over all the CPUs :/
| |