From: Tejun Heo <tj@kernel.org>
To: Michal Hocko <mhocko@kernel.org>
Cc: Johannes Weiner <hannes@cmpxchg.org>,
Chris Down <chris@chrisdown.name>,
Andrew Morton <akpm@linux-foundation.org>,
Roman Gushchin <guro@fb.com>, Dennis Zhou <dennis@kernel.org>,
linux-kernel@vger.kernel.org, cgroups@vger.kernel.org,
linux-mm@kvack.org, kernel-team@fb.com
Subject: Re: [PATCH 2/2] mm: Consider subtrees in memory.events
Date: Mon, 28 Jan 2019 07:41:50 -0800 [thread overview]
Message-ID: <20190128154150.GQ50184@devbig004.ftw2.facebook.com> (raw)
In-Reply-To: <20190128151859.GO18811@dhcp22.suse.cz>
Hello, Michal.
On Mon, Jan 28, 2019 at 04:18:59PM +0100, Michal Hocko wrote:
> How do you make an atomic snapshot of the hierarchy state? Or you do
> not need it because event counters are monotonic and you are willing to
> sacrifice some lost or misinterpreted events? For example, you receive
> an oom event while the two children increase the oom event counter. How
> do you tell which one was the source of the event and which one is still
> pending? Or is the ordering unimportant in general?
Hmm... This is straightforward stateful notification. Imagine the
following hierarchy. The numbers are the notification counters.
A:0
/ \
B:0 C:0
Let's say B generates an event, soon followed by C. If A's counter is
read after both B and C's events, nothing is missed.
Let's say it ends up generating two notifications and we end up
walking down inbetween B and C's events. It would look like the
following.
A:1
/ \
B:1 C:0
We first see A's 0 -> 1 and then start scanning the subtrees to find
out the origin. We will notice B but let's say we visit C before C's
event gets registered (otherwise, nothing is missed).
But, no matter where you put C's event and notification, the
followings hold.
1. A's count will be different from what was seen before.
2. There will be another notification queued on A.
IOW, it's guaranteed that we'll notice and re-scan if we don't see C's
event this time. The worst that can happen is scanning spuriously but
that's true even for local events.
This isn't a novel thing. It's how aggregated stateful notifications
usually work (e.g. a lot of hardware interrupts behave this way). The
notification is just saying "something might have changed here, please
take a look" and the interlocking is achieved by following specific
orders when propagating and reading the events.
> I can imagine you can live with this model, but having a hierarchical
> reporting without a source of the event just sounds too clumsy from my
> POV. But I guess this is getting tangent to the original patch.
It seems like your opinion is mostly based on misunderstanding. Let's
keep the discussion focused on API stability.
Thanks.
--
tejun
next prev parent reply other threads:[~2019-01-28 15:41 UTC|newest]
Thread overview: 55+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-01-23 22:31 Chris Down
2019-01-24 0:24 ` Roman Gushchin
2019-01-24 1:03 ` Chris Down
2019-01-24 8:22 ` Michal Hocko
2019-01-24 15:21 ` Tejun Heo
2019-01-24 15:51 ` Michal Hocko
2019-01-24 16:00 ` Johannes Weiner
2019-01-24 17:01 ` Michal Hocko
2019-01-24 18:23 ` Johannes Weiner
2019-01-25 8:42 ` Michal Hocko
2019-01-25 16:51 ` Tejun Heo
2019-01-25 17:37 ` Michal Hocko
2019-01-25 17:37 ` Michal Hocko
2019-01-25 18:28 ` Tejun Heo
2019-01-28 12:51 ` Michal Hocko
2019-01-28 14:28 ` Tejun Heo
2019-01-28 14:52 ` Michal Hocko
2019-01-28 14:54 ` Tejun Heo
2019-01-28 15:18 ` Michal Hocko
2019-01-28 15:41 ` Tejun Heo [this message]
2019-01-28 17:05 ` Michal Hocko
2019-01-28 17:05 ` Michal Hocko
2019-01-28 17:49 ` Tejun Heo
2019-01-28 17:49 ` Tejun Heo
2019-01-29 14:43 ` Michal Hocko
2019-01-29 14:52 ` Tejun Heo
2019-01-30 16:50 ` Michal Hocko
2019-01-30 17:06 ` Tejun Heo
2019-01-30 17:41 ` Michal Hocko
2019-01-30 17:52 ` Tejun Heo
2019-01-30 18:16 ` Michal Hocko
2019-01-30 19:11 ` Shakeel Butt
2019-01-30 19:27 ` Johannes Weiner
2019-01-30 19:30 ` Johannes Weiner
2019-01-30 19:37 ` Shakeel Butt
2019-01-30 19:23 ` Johannes Weiner
2019-01-30 20:05 ` Michal Hocko
2019-01-30 21:31 ` Johannes Weiner
2019-01-31 8:58 ` Michal Hocko
2019-01-31 16:22 ` Johannes Weiner
2019-02-01 10:27 ` Michal Hocko
2019-02-01 16:34 ` Johannes Weiner
2019-01-28 15:59 ` Shakeel Butt
2019-01-28 15:59 ` Shakeel Butt
2019-01-28 16:05 ` Tejun Heo
2019-01-28 16:05 ` Tejun Heo
2019-01-28 16:08 ` Shakeel Butt
2019-01-28 16:08 ` Shakeel Butt
2019-01-28 16:12 ` Tejun Heo
2019-01-28 16:12 ` Tejun Heo
2019-01-28 14:30 ` Tejun Heo
2019-02-08 22:43 ` [PATCH v2 1/2] mm: Rename ambiguously named memory.stat counters and functions Chris Down
2019-02-08 22:44 ` [PATCH v2 2/2] mm: Consider subtrees in memory.events Chris Down
2019-02-11 19:01 ` Johannes Weiner
2019-02-11 18:55 ` [PATCH v2 1/2] mm: Rename ambiguously named memory.stat counters and functions Johannes Weiner
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=20190128154150.GQ50184@devbig004.ftw2.facebook.com \
--to=tj@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=cgroups@vger.kernel.org \
--cc=chris@chrisdown.name \
--cc=dennis@kernel.org \
--cc=guro@fb.com \
--cc=hannes@cmpxchg.org \
--cc=kernel-team@fb.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mhocko@kernel.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