From: Quentin Perret <quentin.perret@arm.com>
To: Morten Rasmussen <morten.rasmussen@arm.com>
Cc: Joel Fernandes <joelaf@google.com>,
Patrick Bellasi <patrick.bellasi@arm.com>,
Dietmar Eggemann <dietmar.eggemann@arm.com>,
LKML <linux-kernel@vger.kernel.org>,
Peter Zijlstra <peterz@infradead.org>,
Thara Gopinath <thara.gopinath@linaro.org>,
Linux PM <linux-pm@vger.kernel.org>,
Chris Redpath <chris.redpath@arm.com>,
Valentin Schneider <valentin.schneider@arm.com>,
"Rafael J . Wysocki" <rjw@rjwysocki.net>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Vincent Guittot <vincent.guittot@linaro.org>,
Viresh Kumar <viresh.kumar@linaro.org>,
Todd Kjos <tkjos@google.com>
Subject: Re: [RFC PATCH 5/6] sched/fair: Select an energy-efficient CPU on task wake-up
Date: Sat, 24 Mar 2018 01:22:06 +0000 [thread overview]
Message-ID: <20180324012205.GA1317@queper01-VirtualBox> (raw)
In-Reply-To: <20180323154745.GP4589@e105550-lin.cambridge.arm.com>
On Friday 23 Mar 2018 at 15:47:45 (+0000), Morten Rasmussen wrote:
> On Thu, Mar 22, 2018 at 01:10:22PM -0700, Joel Fernandes wrote:
> > On Wed, Mar 21, 2018 at 8:35 AM, Patrick Bellasi
> > <patrick.bellasi@arm.com> wrote:
> > > [...]
> > >
> > >> @@ -6555,6 +6613,14 @@ select_task_rq_fair(struct task_struct *p, int prev_cpu, int sd_flag, int wake_f
> > >> break;
> > >> }
> > >>
> > >> + /*
> > >> + * Energy-aware task placement is performed on the highest
> > >> + * non-overutilized domain spanning over cpu and prev_cpu.
> > >> + */
> > >> + if (want_energy && !sd_overutilized(tmp) &&
> > >> + cpumask_test_cpu(prev_cpu, sched_domain_span(tmp)))
> > >> + energy_sd = tmp;
> > >> +
> > >
> > > Not entirely sure, but I was trying to understand if we can avoid to
> > > modify the definition of want_affine (in the previous chunk) and move
> > > this block before the previous "if (want_affine..." (in mainline but
> > > not in this chunk), which will became an else, e.g.
> > >
> > > if (want_energy && !sd_overutilized(tmp) &&
> > > // ...
> > > else if (want_energy && !sd_overutilized(tmp) &&
> > > // ...
> > >
> > > Isn't that the same?
> > >
> > > Maybe there is a code path I'm missing... but otherwise it seems a
> > > more self contained modification of select_task_rq_fair...
> >
> > Just replying to this here Patrick instead of the other thread.
> >
> > I think this is the right place for the block from Quentin quoted
> > above because we want to search for the highest domain that is
> > !overutilized and look among those for the candidates. So from that
> > perspective, we can't move the block to the beginning and it seems to
> > be in the right place. My main concern on the other thread was
> > different, I was talking about the cases where sd_flag & tmp->flags
> > don't match. In that case, sd = NULL would trump EAS and I was
> > wondering if that's the right thing to do...
>
> You mean if SD_BALANCE_WAKE isn't set on sched_domains?
>
> The current code seems to rely on that flag to be set to work correctly.
> Otherwise, the loop might bail out on !want_affine and we end up doing
> the find_energy_efficient_cpu() on the lowest level sched_domain even if
> there is higher level one which isn't over-utilized.
>
> However, SD_BALANCE_WAKE should be set if SD_ASYM_CPUCAPACITY is set so
> sd == NULL shouldn't be possible? This only holds as long as we only
> want EAS for asymmetric systems.
That's correct, we are under the assumption that the SD_ASYM_CPUCAPACITY
flag is set somewhere in the hierarchy here. If a sched domain has this
flag set, SD_BALANCE_WAKE is propagated to all lower sched domains
(see sd_init() in kernel/sched/topology.c) so we should be fine.
next prev parent reply other threads:[~2018-03-24 1:22 UTC|newest]
Thread overview: 55+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-03-20 9:43 [RFC PATCH 0/6] Energy Aware Scheduling Dietmar Eggemann
2018-03-20 9:43 ` [RFC PATCH 1/6] sched/fair: Create util_fits_capacity() Dietmar Eggemann
2018-03-20 9:43 ` [RFC PATCH 2/6] sched: Introduce energy models of CPUs Dietmar Eggemann
2018-03-20 9:52 ` Greg Kroah-Hartman
2018-03-21 0:45 ` Quentin Perret
2018-03-25 13:48 ` Quentin Perret
2018-03-26 22:26 ` Dietmar Eggemann
2018-04-09 12:01 ` Peter Zijlstra
2018-04-09 13:45 ` Quentin Perret
2018-04-09 15:32 ` Peter Zijlstra
2018-04-09 16:42 ` Quentin Perret
2018-04-10 6:55 ` Rafael J. Wysocki
2018-04-10 9:31 ` Quentin Perret
2018-04-10 10:20 ` Rafael J. Wysocki
2018-03-20 9:43 ` [RFC PATCH 3/6] sched: Add over-utilization/tipping point indicator Dietmar Eggemann
2018-04-09 9:40 ` Peter Zijlstra
2018-04-09 9:47 ` Peter Zijlstra
2018-04-09 9:53 ` Dietmar Eggemann
2018-04-09 11:49 ` Peter Zijlstra
2018-03-20 9:43 ` [RFC PATCH 4/6] sched/fair: Introduce an energy estimation helper function Dietmar Eggemann
2018-03-21 9:04 ` Juri Lelli
2018-03-21 12:26 ` Patrick Bellasi
2018-03-21 12:59 ` Juri Lelli
2018-03-21 13:55 ` Quentin Perret
2018-03-21 15:15 ` Juri Lelli
2018-03-21 16:26 ` Morten Rasmussen
2018-03-21 17:02 ` Juri Lelli
2018-03-21 14:02 ` Quentin Perret
2018-03-21 21:15 ` Dietmar Eggemann
2018-03-21 12:39 ` Patrick Bellasi
2018-03-21 14:26 ` Quentin Perret
2018-03-21 14:50 ` Juri Lelli
2018-03-21 15:54 ` Patrick Bellasi
2018-03-22 5:05 ` Quentin Perret
2018-03-20 9:43 ` [RFC PATCH 5/6] sched/fair: Select an energy-efficient CPU on task wake-up Dietmar Eggemann
2018-03-21 15:35 ` Patrick Bellasi
2018-03-22 20:10 ` Joel Fernandes
2018-03-23 15:47 ` Morten Rasmussen
2018-03-24 1:13 ` Joel Fernandes
2018-03-24 1:34 ` Quentin Perret
2018-03-24 6:06 ` Joel Fernandes
2018-03-24 6:06 ` Joel Fernandes
2018-03-24 1:22 ` Quentin Perret [this message]
2018-03-25 1:52 ` Quentin Perret
2018-03-22 16:27 ` Joel Fernandes
2018-03-22 18:06 ` Patrick Bellasi
2018-03-22 20:19 ` Joel Fernandes
2018-03-24 1:47 ` Quentin Perret
2018-03-25 0:12 ` Joel Fernandes
2018-03-23 16:00 ` Morten Rasmussen
2018-03-24 0:36 ` Joel Fernandes
2018-03-25 1:38 ` Quentin Perret
2018-03-20 9:43 ` [RFC PATCH 6/6] drivers: base: arch_topology.c: Enable EAS for arm/arm64 platforms Dietmar Eggemann
2018-03-20 9:49 ` Greg Kroah-Hartman
2018-03-20 15:20 ` Dietmar Eggemann
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=20180324012205.GA1317@queper01-VirtualBox \
--to=quentin.perret@arm.com \
--cc=chris.redpath@arm.com \
--cc=dietmar.eggemann@arm.com \
--cc=gregkh@linuxfoundation.org \
--cc=joelaf@google.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=morten.rasmussen@arm.com \
--cc=patrick.bellasi@arm.com \
--cc=peterz@infradead.org \
--cc=rjw@rjwysocki.net \
--cc=thara.gopinath@linaro.org \
--cc=tkjos@google.com \
--cc=valentin.schneider@arm.com \
--cc=vincent.guittot@linaro.org \
--cc=viresh.kumar@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.