linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Morten Rasmussen <morten.rasmussen@arm.com>
To: Vincent Guittot <vincent.guittot@linaro.org>
Cc: Peter Zijlstra <peterz@infradead.org>,
	Ingo Molnar <mingo@redhat.com>,
	Valentin Schneider <valentin.schneider@arm.com>,
	Dietmar Eggemann <dietmar.eggemann@arm.com>,
	gaku.inami.xh@renesas.com,
	linux-kernel <linux-kernel@vger.kernel.org>
Subject: Re: [PATCHv4 12/12] sched/core: Disable SD_PREFER_SIBLING on asymmetric cpu capacity domains
Date: Fri, 6 Jul 2018 15:31:39 +0100	[thread overview]
Message-ID: <20180706143139.GE8596@e105550-lin.cambridge.arm.com> (raw)
In-Reply-To: <CAKfTPtDUa7nARKxT+hR_ci3J_exE85sZFT1oEM84akZ+i_-UgA@mail.gmail.com>

On Fri, Jul 06, 2018 at 12:18:17PM +0200, Vincent Guittot wrote:
> On Wed, 4 Jul 2018 at 12:18, Morten Rasmussen <morten.rasmussen@arm.com> wrote:
> >
> > The 'prefer sibling' sched_domain flag is intended to encourage
> > spreading tasks to sibling sched_domain to take advantage of more caches
> > and core for SMT systems. It has recently been changed to be on all
> > non-NUMA topology level. However, spreading across domains with cpu
> > capacity asymmetry isn't desirable, e.g. spreading from high capacity to
> > low capacity cpus even if high capacity cpus aren't overutilized might
> > give access to more cache but the cpu will be slower and possibly lead
> > to worse overall throughput.
> >
> > To prevent this, we need to remove SD_PREFER_SIBLING on the sched_domain
> > level immediately below SD_ASYM_CPUCAPACITY.
> 
> This makes sense. Nevertheless, this patch also raises a scheduling
> problem and break the 1 task per CPU policy that is enforced by
> SD_PREFER_SIBLING.

Scheduling one task per cpu when n_task == n_cpus on asymmetric
topologies is generally broken already and this patch set doesn't fix
that problem.

SD_PREFER_SIBLING might seem to help in very specific cases:
n_litte_cpus == n_big_cpus. In that case the little group might
classified as overloaded. It doesn't guarantee that anything gets pulled
as the grp_load/grp_capacity in the imbalance calculation on some system
still says the little cpus are more loaded than the bigs despite one of
them being idle. That depends on the little cpu capacities.

On systems where n_little_cpus != n_big_cpus SD_PREFER_SIBLING is broken
as it assumes the group_weight to be the same. This is the case on Juno
and several other platforms.

IMHO, SD_PREFER_SIBLING isn't the solution to this problem. It might
help for a limited subset of topologies/capacities but the right
solution is to change the imbalance calculation. As the name says, it is
meant to spread tasks and does so unconditionally. For asymmetric
systems we would like to consider cpu capacity before migrating tasks.

> When running the tests of your cover letter, 1 long
> running task is often co scheduled on a big core whereas short pinned
> tasks are still running and a little core is idle which is not an
> optimal scheduling decision

This can easily happen with SD_PREFER_SIBLING enabled too so I wouldn't
say that this patch breaks anything that isn't broken already. In fact
we this happening with and without this patch applied.

Morten

  reply	other threads:[~2018-07-06 14:31 UTC|newest]

Thread overview: 49+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-07-04 10:17 [PATCHv4 00/12] sched/fair: Migrate 'misfit' tasks on asymmetric capacity systems Morten Rasmussen
2018-07-04 10:17 ` [PATCHv4 01/12] sched: Add static_key for asymmetric cpu capacity optimizations Morten Rasmussen
2018-07-31 10:59   ` Peter Zijlstra
2018-08-02 15:15     ` Morten Rasmussen
2018-09-10 10:13   ` [tip:sched/core] sched/topology: Add static_key for asymmetric CPU " tip-bot for Morten Rasmussen
2018-07-04 10:17 ` [PATCHv4 02/12] sched/fair: Add group_misfit_task load-balance type Morten Rasmussen
2018-09-10 10:13   ` [tip:sched/core] sched/fair: Add 'group_misfit_task' " tip-bot for Morten Rasmussen
2018-07-04 10:17 ` [PATCHv4 03/12] sched: Add sched_group per-cpu max capacity Morten Rasmussen
2018-09-10 10:14   ` [tip:sched/core] sched/fair: Add sched_group per-CPU " tip-bot for Morten Rasmussen
2018-07-04 10:17 ` [PATCHv4 04/12] sched/fair: Consider misfit tasks when load-balancing Morten Rasmussen
2018-09-10 10:14   ` [tip:sched/core] " tip-bot for Morten Rasmussen
2018-07-04 10:17 ` [PATCHv4 05/12] sched/fair: Kick nohz balance if rq->misfit_task_load Morten Rasmussen
2018-09-10 10:15   ` [tip:sched/core] " tip-bot for Valentin Schneider
2018-07-04 10:17 ` [PATCHv4 06/12] sched/fair: Change prefer_sibling type to bool Morten Rasmussen
2018-09-10 10:15   ` [tip:sched/core] sched/fair: Change 'prefer_sibling' " tip-bot for Valentin Schneider
2018-07-04 10:17 ` [PATCHv4 07/12] sched: Change root_domain->overload type to int Morten Rasmussen
2018-09-10 10:16   ` [tip:sched/core] sched/core: " tip-bot for Valentin Schneider
2018-07-04 10:17 ` [PATCHv4 08/12] sched: Wrap rq->rd->overload accesses with READ/WRITE_ONCE Morten Rasmussen
2018-09-10 10:17   ` [tip:sched/core] sched/fair: Wrap rq->rd->overload accesses with READ/WRITE_ONCE() tip-bot for Valentin Schneider
2018-07-04 10:17 ` [PATCHv4 09/12] sched/fair: Set rq->rd->overload when misfit Morten Rasmussen
2018-09-10 10:17   ` [tip:sched/core] " tip-bot for Valentin Schneider
2018-07-04 10:17 ` [PATCHv4 10/12] sched/fair: Don't move tasks to lower capacity cpus unless necessary Morten Rasmussen
2018-09-10 10:18   ` [tip:sched/core] sched/fair: Don't move tasks to lower capacity CPUs " tip-bot for Chris Redpath
2018-07-04 10:17 ` [PATCHv4 11/12] sched/core: Disable SD_ASYM_CPUCAPACITY for root_domains without asymmetry Morten Rasmussen
2018-07-05 13:31   ` Quentin Perret
2018-07-05 14:13     ` Morten Rasmussen
2018-07-05 15:03       ` Quentin Perret
2018-07-20 13:54         ` Morten Rasmussen
2018-07-04 10:17 ` [PATCHv4 12/12] sched/core: Disable SD_PREFER_SIBLING on asymmetric cpu capacity domains Morten Rasmussen
2018-07-06 10:18   ` Vincent Guittot
2018-07-06 14:31     ` Morten Rasmussen [this message]
2018-07-31 12:17       ` Vincent Guittot
2018-07-31 12:33         ` Valentin Schneider
2018-08-06 10:20           ` Vincent Guittot
2018-08-06 10:53             ` Valentin Schneider
2018-08-10  9:30               ` Vincent Guittot
2018-09-10 10:18   ` [tip:sched/core] sched/core: Disable SD_PREFER_SIBLING on asymmetric CPU " tip-bot for Morten Rasmussen
2018-07-06 10:18 ` [PATCHv4 00/12] sched/fair: Migrate 'misfit' tasks on asymmetric capacity systems Vincent Guittot
2018-07-09 15:08   ` Morten Rasmussen
2018-07-26 17:14     ` Valentin Schneider
2018-07-30 14:30       ` Dietmar Eggemann
2018-07-31 12:13         ` Vincent Guittot
2018-07-31 12:14           ` Dietmar Eggemann
2018-07-31 12:11     ` Vincent Guittot
2018-07-31 12:00 ` Peter Zijlstra
2018-07-31 12:10   ` Valentin Schneider
2018-07-31 12:50     ` Morten Rasmussen
2018-08-17  1:57 ` Joel Fernandes
2018-08-20  2:50 ` Gaku Inami

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=20180706143139.GE8596@e105550-lin.cambridge.arm.com \
    --to=morten.rasmussen@arm.com \
    --cc=dietmar.eggemann@arm.com \
    --cc=gaku.inami.xh@renesas.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=peterz@infradead.org \
    --cc=valentin.schneider@arm.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).