From: Dietmar Eggemann <dietmar.eggemann@arm.com>
To: Peter Zijlstra <peterz@infradead.org>
Cc: Morten Rasmussen <morten.rasmussen@arm.com>,
mingo@redhat.com, yuyang.du@intel.com,
vincent.guittot@linaro.org, mgalbraith@suse.de,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH v2 06/13] sched: Store maximum per-cpu capacity in root domain
Date: Wed, 13 Jul 2016 12:18:57 +0100 [thread overview]
Message-ID: <578623A1.5040808@arm.com> (raw)
In-Reply-To: <20160712114258.GK30154@twins.programming.kicks-ass.net>
On 12/07/16 12:42, Peter Zijlstra wrote:
> On Mon, Jul 11, 2016 at 05:16:06PM +0100, Dietmar Eggemann wrote:
>> On 11/07/16 11:18, Peter Zijlstra wrote:
>>> On Wed, Jun 22, 2016 at 06:03:17PM +0100, Morten Rasmussen wrote:
>>>> @@ -6905,11 +6906,19 @@ static int build_sched_domains(const struct cpumask *cpu_map,
>>>> /* Attach the domains */
>>>> rcu_read_lock();
>>>> for_each_cpu(i, cpu_map) {
>>>> + rq = cpu_rq(i);
>>>> sd = *per_cpu_ptr(d.sd, i);
>>>> cpu_attach_domain(sd, d.rd, i);
>>>> +
>>>> + if (rq->cpu_capacity_orig > rq->rd->max_cpu_capacity)
>>>> + rq->rd->max_cpu_capacity = rq->cpu_capacity_orig;
>>>> }
>>>
>>> Should you not set that _before_ cpu_attach_domain(), such that the
>>> state is up-to-date when its published?
>>
>> yes, much better.
>>
>>> Also, since its lockless, should we not use {READ,WRITE}_ONCE() with it?
>>
>> You mean for rq->rd->max_cpu_capacity ? IMHO, there is a data dependency
>> between the read and the write and the code only runs on one cpu.
>>
>> I assume here that this is related to item 2 'Overlapping loads and
>> stores within a particular CPU ...' in GUARANTEES of
>> doc/Documentation/memory-barriers.txt.
>>
>> Do I miss something?
>
> Well, the value 'rd->max_cpu_capacity' is read by all CPUs attached to
> the root_domain, right? So CPUs already attached can observe this change
> when we update the value, we want them to observe either the old or the
> new max value, not a random mix of bytes.
>
> {READ,WRITE}_ONCE() ensure whole word load/store, iow they avoid
> load/store-tearing.
>
OK, thanks, will add them.
So this maps to the point '(*) For aligned memory locations whose size
allows them to be accessed with a single memory-reference instruction,
prevents "load tearing" and "store tearing," ...' under 'The READ_ONCE()
and WRITE_ONCE() functions can prevent any number of optimizations ...'
section in the 'COMPILER BARRIER' paragraph in
Documentation/memory-barriers.txt.
next prev parent reply other threads:[~2016-07-13 11:19 UTC|newest]
Thread overview: 64+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-06-22 17:03 [PATCH v2 00/13] sched: Clean-ups and asymmetric cpu capacity support Morten Rasmussen
2016-06-22 17:03 ` [PATCH v2 01/13] sched: Fix power to capacity renaming in comment Morten Rasmussen
2016-08-10 18:03 ` [tip:sched/core] sched/core: " tip-bot for Morten Rasmussen
2016-06-22 17:03 ` [PATCH v2 02/13] sched/fair: Consistent use of prev_cpu in wakeup path Morten Rasmussen
2016-06-22 18:04 ` Rik van Riel
2016-06-23 9:56 ` Morten Rasmussen
2016-06-23 12:24 ` Rik van Riel
2016-08-10 18:03 ` [tip:sched/core] sched/fair: Make the use of prev_cpu consistent in the " tip-bot for Morten Rasmussen
2016-06-22 17:03 ` [PATCH v2 03/13] sched/fair: Optimize find_idlest_cpu() when there is no choice Morten Rasmussen
2016-07-13 12:20 ` Vincent Guittot
2016-08-10 18:03 ` [tip:sched/core] " tip-bot for Morten Rasmussen
2016-06-22 17:03 ` [PATCH v2 04/13] sched: Introduce SD_ASYM_CPUCAPACITY sched_domain topology flag Morten Rasmussen
2016-07-11 9:55 ` Peter Zijlstra
2016-07-11 10:42 ` Morten Rasmussen
2016-06-22 17:03 ` [PATCH v2 05/13] sched: Enable SD_BALANCE_WAKE for asymmetric capacity systems Morten Rasmussen
2016-07-11 10:04 ` Peter Zijlstra
2016-07-11 10:37 ` Morten Rasmussen
2016-07-11 11:04 ` Morten Rasmussen
2016-07-11 11:24 ` Peter Zijlstra
2016-07-12 14:26 ` Morten Rasmussen
2016-06-22 17:03 ` [PATCH v2 06/13] sched: Store maximum per-cpu capacity in root domain Morten Rasmussen
2016-07-11 10:18 ` Peter Zijlstra
2016-07-11 16:16 ` Dietmar Eggemann
2016-07-12 11:42 ` Peter Zijlstra
2016-07-13 11:18 ` Dietmar Eggemann [this message]
2016-07-13 12:40 ` Vincent Guittot
2016-07-13 13:48 ` Dietmar Eggemann
2016-07-13 16:37 ` Morten Rasmussen
2016-07-14 13:25 ` Vincent Guittot
2016-07-14 15:15 ` Morten Rasmussen
2016-07-15 11:46 ` Morten Rasmussen
2016-07-15 13:39 ` Vincent Guittot
2016-07-15 16:02 ` Morten Rasmussen
2016-07-18 12:48 ` Vincent Guittot
2016-07-18 15:11 ` Morten Rasmussen
2016-06-22 17:03 ` [PATCH v2 07/13] sched/fair: Let asymmetric cpu configurations balance at wake-up Morten Rasmussen
2016-07-11 11:13 ` Peter Zijlstra
2016-07-11 12:32 ` Morten Rasmussen
2016-07-13 12:56 ` Vincent Guittot
2016-07-13 16:14 ` Morten Rasmussen
2016-07-14 13:45 ` Vincent Guittot
2016-07-15 8:37 ` Morten Rasmussen
2016-06-22 17:03 ` [PATCH v2 08/13] sched/fair: Compute task/cpu utilization at wake-up more correctly Morten Rasmussen
2016-06-22 17:03 ` [PATCH v2 09/13] sched/fair: Consider spare capacity in find_idlest_group() Morten Rasmussen
2016-06-22 17:03 ` [PATCH v2 10/13] sched: Add per-cpu max capacity to sched_group_capacity Morten Rasmussen
2016-06-22 17:03 ` [PATCH v2 11/13] sched/fair: Avoid pulling tasks from non-overloaded higher capacity groups Morten Rasmussen
2016-06-23 21:20 ` Sai Gurrappadi
2016-06-30 7:49 ` Morten Rasmussen
2016-07-14 16:39 ` Sai Gurrappadi
2016-07-15 8:39 ` Morten Rasmussen
2016-07-12 12:59 ` Peter Zijlstra
2016-07-12 14:34 ` Morten Rasmussen
2016-06-22 17:03 ` [PATCH v2 12/13] arm: Set SD_ASYM_CPUCAPACITY for big.LITTLE platforms Morten Rasmussen
2016-06-22 17:03 ` [PATCH v2 13/13] arm: Update arch_scale_cpu_capacity() to reflect change to define Morten Rasmussen
2016-06-28 10:20 ` [PATCH v2 00/13] sched: Clean-ups and asymmetric cpu capacity support Koan-Sin Tan
2016-06-30 7:53 ` Morten Rasmussen
2016-07-08 7:35 ` KEITA KOBAYASHI
2016-07-08 8:18 ` Morten Rasmussen
2016-07-11 8:33 ` Morten Rasmussen
2016-07-11 12:44 ` Vincent Guittot
2016-07-12 13:25 ` Peter Zijlstra
2016-07-12 14:39 ` Morten Rasmussen
2016-07-13 12:06 ` Vincent Guittot
2016-07-13 15:54 ` 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=578623A1.5040808@arm.com \
--to=dietmar.eggemann@arm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mgalbraith@suse.de \
--cc=mingo@redhat.com \
--cc=morten.rasmussen@arm.com \
--cc=peterz@infradead.org \
--cc=vincent.guittot@linaro.org \
--cc=yuyang.du@intel.com \
/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.