From: Tejun Heo <tj@kernel.org>
To: Mel Gorman <mgorman@techsingularity.net>
Cc: Peter Zijlstra <peterz@infradead.org>,
Ingo Molnar <mingo@redhat.com>,
Davidlohr Bueso <dave@stgolabs.net>,
LKML <linux-kernel@vger.kernel.org>
Subject: Re: Cgroup memory barrier usage and call frequency from scheduler
Date: Thu, 9 Apr 2020 15:27:25 -0400 [thread overview]
Message-ID: <20200409192725.GC37608@mtj.thefacebook.com> (raw)
In-Reply-To: <20200409182055.GM3818@techsingularity.net>
Hello,
On Thu, Apr 09, 2020 at 07:20:55PM +0100, Mel Gorman wrote:
> > Given
> >
> > A C
> > --- ---
> > B D
> >
> > the code is trying to guarantee that either B sees C or D sees A, so it does
> > need full ordering.
> >
>
> Ok, still not particularly clear given where they are used and how
> it's related to updated_children but like you say later it's "kinda
> irrelevant" :)
Hahaha, yeah, just to make sure that I am understanding it correctly:
There are two parties - "updater" updating the local stat and trying to queue
itself on the updated list, "reader" walking the updated list trying to
collect all the numbers which changed since it last walked it.
There are two misbehaviors which can result from lack of interlocking:
1. If the updater puts itself on the list and the reader takes it off the list
and then reads a stale value, the reader may end up reporting a stale value
to user possibly breaking synchronity of events. This can be addressed by
adding matching (data-dependency) barriers - wmb in updater, rmb in reader.
2. If the updater checking whether it's already on the list races against
reader clearing it from the updated list, while the current on-going read
is correct, the updater may incorrectly skip adding itself to the updated
list and the next read may miss the event. This can be addressed by
interlocking both directions - either the reader sees the new value or the
updater sees itself cleared off the updated list - mb between stat update
and "am I already on the updated list?" check in updater, mb between
clearing the updater off the updated list and reading the stats in reader.
Thanks.
--
tejun
next prev parent reply other threads:[~2020-04-09 19:27 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-04-09 15:44 Cgroup memory barrier usage and call frequency from scheduler Mel Gorman
2020-04-09 16:49 ` Peter Zijlstra
2020-04-09 17:21 ` Mel Gorman
2020-04-09 17:56 ` Tejun Heo
2020-04-09 18:20 ` Mel Gorman
2020-04-09 19:27 ` Tejun Heo [this message]
[not found] ` <20200409154413.GK3818-3eNAlZScCAx27rWaFMvyedHuzzzSOjJt@public.gmane.org>
2020-04-09 19:08 ` [PATCH cgroup/for-5.7-fixes] Revert "cgroup: Add memory barriers to plug cgroup_rstat_updated() race window" Tejun Heo
2020-04-09 19:08 ` Tejun Heo
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=20200409192725.GC37608@mtj.thefacebook.com \
--to=tj@kernel.org \
--cc=dave@stgolabs.net \
--cc=linux-kernel@vger.kernel.org \
--cc=mgorman@techsingularity.net \
--cc=mingo@redhat.com \
--cc=peterz@infradead.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.