From: Valentin Schneider <valentin.schneider@arm.com>
To: Vincent Guittot <vincent.guittot@linaro.org>
Cc: linux-kernel <linux-kernel@vger.kernel.org>,
Qais Yousef <qais.yousef@arm.com>,
Peter Zijlstra <peterz@infradead.org>,
Ingo Molnar <mingo@kernel.org>,
Dietmar Eggemann <dietmar.eggemann@arm.com>,
Morten Rasmussen <morten.rasmussen@arm.com>,
Quentin Perret <qperret@google.com>,
Pavan Kondeti <pkondeti@codeaurora.org>,
Rik van Riel <riel@surriel.com>,
Lingutla Chandrasekhar <clingutla@codeaurora.org>
Subject: Re: [PATCH v3 6/7] sched/fair: Filter out locally-unsolvable misfit imbalances
Date: Tue, 23 Mar 2021 18:51:27 +0000 [thread overview]
Message-ID: <87pmzpya8g.mognet@arm.com> (raw)
In-Reply-To: <CAKfTPtDiNKpVWM4Tw2z+z6g+G1nf5SK5wbdsdnyAhAK5=q+OBg@mail.gmail.com>
On 19/03/21 16:19, Vincent Guittot wrote:
> On Mon, 15 Mar 2021 at 20:18, Valentin Schneider
> <valentin.schneider@arm.com> wrote:
>> As stated the current behaviour is to classify groups as group_misfit_task
>> regardless of the dst_cpu's capacity. When we see a group_misfit_task
>> candidate group misfit task with higher per-CPU capacity than the local
>> group, we don't pick it as busiest.
>>
>> I initially thought not marking those as group_misfit_task was the right
>> thing to do, as they could then be classified as group_fully_busy or
>> group_has_spare. Consider:
>>
>> DIE [ ]
>> MC [ ][ ]
>> 0 1 2 3
>> L L B B
>>
>> arch_scale_capacity(L) < arch_scale_capacity(B)
>>
>> CPUs 0-1 are idle / lightly loaded
>> CPU2 has a misfit task and a few very small tasks
>> CPU3 has a few very small tasks
>>
>> When CPU0 is running load_balance() at DIE level, right now we'll classify
>> the [2-3] group as group_misfit_task and not pick it as busiest because the
>> local group has a lower CPU capacity.
>>
>> If we didn't do that, we could leave the misfit task alone and pull some
>> small task(s) from CPU2 or CPU3, which would be a good thing to
>
> Are you sure? the last check in update_sd_pick_busiest() should
> already filter this. So it should be enough to let it be classify
> correctly
>
> A group should be classified as group_misfit_task when there is a task
> to migrate in priority compared to some other groups. In your case,
> you tag it as group_misfit_task but in order to do the opposite, i.e.
> make sure to not select it. As mentioned above, this will be filter in
> the last check in update_sd_pick_busiest()
>
This hinges on sgc->min_capacity, which might be influenced by a CPU in the
candidate group being severely pressured by IRQ / thermal / RT / DL
pressure. That said, you have a point in that this check and the one in
find_busiest_queue() catches most scenarios I can think of.
Let me ponder about this some more, and if throw it at the test
infrastructure monster if I go down that route.
next prev parent reply other threads:[~2021-03-23 18:52 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-03-11 12:05 [PATCH v3 0/7] sched/fair: misfit task load-balance tweaks Valentin Schneider
2021-03-11 12:05 ` [PATCH v3 1/7] sched/fair: Ignore percpu threads for imbalance pulls Valentin Schneider
2021-03-16 15:49 ` Dietmar Eggemann
2021-03-16 16:03 ` Chandra Sekhar Lingutla
2021-03-16 18:59 ` Dietmar Eggemann
2021-03-16 17:31 ` Valentin Schneider
2021-03-16 19:06 ` Dietmar Eggemann
2021-03-11 12:05 ` [PATCH v3 2/7] sched/fair: Clean up active balance nr_balance_failed trickery Valentin Schneider
2021-03-17 10:52 ` Dietmar Eggemann
2021-03-11 12:05 ` [PATCH v3 3/7] sched/fair: Add more sched_asym_cpucapacity static branch checks Valentin Schneider
2021-03-15 14:18 ` Vincent Guittot
2021-03-15 19:24 ` Valentin Schneider
2021-03-11 12:05 ` [PATCH v3 4/7] sched/fair: Introduce a CPU capacity comparison helper Valentin Schneider
2021-03-15 14:24 ` Vincent Guittot
2021-03-15 19:24 ` Valentin Schneider
2021-03-31 11:34 ` Chandra Sekhar Lingutla
2021-03-11 12:05 ` [PATCH v3 5/7] sched/fair: Employ capacity_greater() throughout load_balance() Valentin Schneider
2021-03-31 11:35 ` Chandra Sekhar Lingutla
2021-03-11 12:05 ` [PATCH v3 6/7] sched/fair: Filter out locally-unsolvable misfit imbalances Valentin Schneider
2021-03-15 15:13 ` Vincent Guittot
2021-03-15 19:18 ` Valentin Schneider
2021-03-19 15:19 ` Vincent Guittot
2021-03-23 18:51 ` Valentin Schneider [this message]
2021-03-11 12:05 ` [PATCH v3 7/7] sched/fair: Relax task_hot() for misfit tasks Valentin Schneider
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87pmzpya8g.mognet@arm.com \
--to=valentin.schneider@arm.com \
--cc=clingutla@codeaurora.org \
--cc=dietmar.eggemann@arm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=morten.rasmussen@arm.com \
--cc=peterz@infradead.org \
--cc=pkondeti@codeaurora.org \
--cc=qais.yousef@arm.com \
--cc=qperret@google.com \
--cc=riel@surriel.com \
--cc=vincent.guittot@linaro.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.