mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Morten Rasmussen <morten.rasmussen@arm.com>
To: Quentin Perret <quentin.perret@arm.com>
Cc: peterz@infradead.org, mingo@redhat.com,
	valentin.schneider@arm.com, dietmar.eggemann@arm.com,
	vincent.guittot@linaro.org, gaku.inami.xh@renesas.com,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCHv3 1/9] sched: Add static_key for asymmetric cpu capacity optimizations
Date: Fri, 22 Jun 2018 15:36:24 +0100	[thread overview]
Message-ID: <20180622143624.GD8461@e105550-lin.cambridge.arm.com> (raw)
In-Reply-To: <20180622082222.GD23168@e108498-lin.cambridge.arm.com>

On Fri, Jun 22, 2018 at 09:22:22AM +0100, Quentin Perret wrote:
> Hi Morten,
> 
> On Wednesday 20 Jun 2018 at 10:05:41 (+0100), Morten Rasmussen wrote:
> > +static void update_asym_cpucapacity(int cpu)
> > +{
> > +	int enable = false;
> > +
> > +	rcu_read_lock();
> > +	if (lowest_flag_domain(cpu, SD_ASYM_CPUCAPACITY))
> > +		enable = true;
> > +	rcu_read_unlock();
> > +
> > +	if (enable) {
> > +		/* This expects to be hotplug-safe */
> > +		static_branch_enable_cpuslocked(&sched_asym_cpucapacity);
> > +	}
> > +}
> 
> What would happen if you hotplugged an entire cluster ? You'd loose the
> SD_ASYM_CPUCAPACITY flag but keep the static key is that right ? Should
> we care ?

I don't think we should care. The static key enables additional checks
and tweaks but AFAICT none of them requires the SD_ASYM_CPUCAPACITY to
be set and they should all be have no effect if that is the case. I
added the static key just avoid the overhead on systems where they would
have no effect. At least that is intention, I could course have broken
things by mistake.

> And also, Peter mentioned an issue with the EAS patches with multiple
> root_domains. Does that apply here as well ? What if you had a
> configuration with big and little CPUs in different root_domains for ex?
> 
> Should we disable the static key in the above cases ?

Exclusive cpusets are more tricky as the flags will be the same for
sched_domains at the same level. So we can't set the flag correctly if
someone configures the exclusive cpusets such that you have one
root_domain spanning big and a subset of little, and one spanning the
remaining little cpus if all topology levels are preserved. If we
imagine a three cluster system where 0-3 and 4-7 little clusters, and
8-11 is a big cluster with cpusets configured as 0-5 and 6-11. The first
set should _not_ have SD_ASYM_CPUCAPACITY set, while the second should.

I'm tempted to say we shouldn't care in this situation. Setting the
flags correctly in the three cluster example would require knowledge
about the cpuset configuration which we don't have in the arch code so
SD_ASYM_CPUCAPACITY flag detection would have be done by the
sched_domain build code. However, not setting the flag according to the
actual members of the exclusive cpuset means that homogeneous
sched_domains might have SD_ASYM_CPUCAPACITY set enabling potentially
wrong scheduling decisions.

We can actually end up with this problem just by hotplugging too. If you
unplug the entire big cluster in the three cluster example above, you
preserve DIE level which would have SD_ASYM_CPUCAPACITY set even though
we only have little cpus left.

As I see it, we have two choices: 1) Set the flags correctly for
exclusive cpusets which means some additional "fun" in the sched_domain
hierarchy set up, or 2) ignore it and make sure that setting
SD_ASYM_CPUCAPACITY on homogeneous sched_domains works fairly okay. The
latter seems easier.

Morten

  reply	other threads:[~2018-06-22 14:36 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-06-20  9:05 [PATCHv3 0/9] sched/fair: Migrate 'misfit' tasks on asymmetric capacity systems Morten Rasmussen
2018-06-20  9:05 ` [PATCHv3 1/9] sched: Add static_key for asymmetric cpu capacity optimizations Morten Rasmussen
2018-06-22  8:22   ` Quentin Perret
2018-06-22 14:36     ` Morten Rasmussen [this message]
2018-06-27 15:41       ` Dietmar Eggemann
2018-06-28  8:48         ` Morten Rasmussen
2018-06-28 17:16           ` Dietmar Eggemann
2018-07-02  8:36             ` Morten Rasmussen
2018-06-20  9:05 ` [PATCHv3 2/9] sched/fair: Add group_misfit_task load-balance type Morten Rasmussen
2018-06-20  9:05 ` [PATCHv3 3/9] sched: Add sched_group per-cpu max capacity Morten Rasmussen
2018-06-20  9:05 ` [PATCHv3 4/9] sched/fair: Consider misfit tasks when load-balancing Morten Rasmussen
2018-06-20  9:05 ` [PATCHv3 5/9] sched/fair: Kick nohz balance if rq->misfit_task Morten Rasmussen
2018-06-20  9:05 ` [PATCHv3 6/9] sched: Change root_domain->overload type to int Morten Rasmussen
2018-06-20  9:05 ` [PATCHv3 7/9] sched: Wrap rq->rd->overload accesses with READ/WRITE_ONCE Morten Rasmussen
2018-06-20  9:05 ` [PATCHv3 8/9] sched/fair: Set sd->overload when misfit Morten Rasmussen
2018-06-20  9:05 ` [PATCHv3 9/9] sched/fair: Don't move tasks to lower capacity cpus unless necessary Morten Rasmussen
2018-07-03  2:28 ` [PATCHv3 0/9] sched/fair: Migrate 'misfit' tasks on asymmetric capacity systems Gaku Inami
2018-07-04 10:33   ` Morten Rasmussen

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=20180622143624.GD8461@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=quentin.perret@arm.com \
    --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

all inboxes | Powered by JetHome®