From: Michal Hocko <mhocko@suse.com>
To: Yosry Ahmed <yosryahmed@google.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
Johannes Weiner <hannes@cmpxchg.org>,
Roman Gushchin <roman.gushchin@linux.dev>,
Shakeel Butt <shakeelb@google.com>,
Muchun Song <muchun.song@linux.dev>,
Ivan Babrou <ivan@cloudflare.com>, Tejun Heo <tj@kernel.org>,
linux-mm@kvack.org, cgroups@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH 3/3] mm: memcg: use non-unified stats flushing for userspace reads
Date: Fri, 25 Aug 2023 20:17:25 +0200 [thread overview]
Message-ID: <ZOjwNR2wv5mOdWv0@dhcp22.suse.cz> (raw)
In-Reply-To: <CAJD7tkYPyb+2zOKqctQw-vhuwYRg85e6v2Y44xWJofHZ+F+YQw@mail.gmail.com>
On Fri 25-08-23 08:14:54, Yosry Ahmed wrote:
> On Fri, Aug 25, 2023 at 12:05 AM Michal Hocko <mhocko@suse.com> wrote:
[...]
> > I might be wrong but the whole discussion so far suggests that the
> > global rstat lock should be reconsidered. From my personal experience
> > global locks easily triggerable from the userspace are just a receip for
> > problems. Stats reading shouldn't be interfering with the system runtime
> > as much as possible and they should be deterministic wrt runtime as
> > well.
>
> The problem is that the global lock also serializes the global
> counters that we flush to. I will talk from the memcg flushing
> perspective as that's what I am familiar with. I am not sure how much
> this is transferable to other flushers.
>
> On the memcg side (see mem_cgroup_css_rstat_flush()), the global lock
> synchronizes access to multiple counters, for this discussion what's
> most important are:
> - The global stat counters of the memcg being flushed (e.g.
> memcg->vmstats->state).
> - The pending stat counters of the parent being flushed (e.g.
> parent->vmstats->state_pending).
I haven't digested the rest of the email yet (Friday brain, sorry) but I
do not think you are adressing this particular part so let me ask before
I dive more into the following. I really do not follow the serialization
requirement here because the lock doesn't really serialize the flushing,
does it? At least not in a sense of a single caller to do the flushing
atomicaly from other flushers. It is possible that the current flusher
simply drops the lock midway and another one retakes the lock and
performs the operation again. So what additional flushing
synchronization does it provide and why cannot parallel flushers simply
compete over pcp spinlocks?
So what am I missing?
--
Michal Hocko
SUSE Labs
next prev parent reply other threads:[~2023-08-25 18:17 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-08-21 20:54 [PATCH 0/3] memcg: non-unified flushing for userspace stats Yosry Ahmed
2023-08-21 20:54 ` [PATCH 1/3] mm: memcg: properly name and document unified stats flushing Yosry Ahmed
2023-08-21 20:54 ` [PATCH 2/3] mm: memcg: add a helper for non-unified " Yosry Ahmed
2023-08-22 13:01 ` Michal Koutný
2023-08-22 16:00 ` Yosry Ahmed
2023-08-22 16:35 ` Michal Koutný
2023-08-22 16:48 ` Yosry Ahmed
2023-08-21 20:54 ` [PATCH 3/3] mm: memcg: use non-unified stats flushing for userspace reads Yosry Ahmed
2023-08-22 9:06 ` Michal Hocko
2023-08-22 15:30 ` Yosry Ahmed
2023-08-23 7:33 ` Michal Hocko
2023-08-23 14:55 ` Yosry Ahmed
2023-08-24 7:13 ` Michal Hocko
2023-08-24 18:15 ` Yosry Ahmed
2023-08-24 18:50 ` Yosry Ahmed
2023-08-25 7:05 ` Michal Hocko
2023-08-25 15:14 ` Yosry Ahmed
2023-08-25 18:17 ` Michal Hocko [this message]
2023-08-25 18:21 ` Yosry Ahmed
2023-08-25 18:43 ` Michal Hocko
2023-08-25 18:44 ` Michal Hocko
2023-08-28 15:47 ` Michal Hocko
2023-08-28 16:15 ` Yosry Ahmed
2023-08-28 17:00 ` Shakeel Butt
2023-08-28 17:07 ` Yosry Ahmed
2023-08-28 17:27 ` Waiman Long
2023-08-28 17:28 ` Yosry Ahmed
2023-08-28 17:35 ` Waiman Long
2023-08-28 17:43 ` Waiman Long
2023-08-28 18:35 ` Yosry Ahmed
2023-08-29 7:27 ` Michal Hocko
2023-08-29 15:05 ` Waiman Long
2023-08-29 15:17 ` Michal Hocko
2023-08-29 16:04 ` Yosry Ahmed
2023-08-29 18:44 ` Tejun Heo
2023-08-29 19:13 ` Yosry Ahmed
2023-08-29 19:36 ` Tejun Heo
2023-08-29 19:54 ` Yosry Ahmed
2023-08-29 20:12 ` Tejun Heo
2023-08-29 20:20 ` Yosry Ahmed
2023-08-31 9:05 ` Michal Hocko
2023-08-22 13:00 ` [PATCH 0/3] memcg: non-unified flushing for userspace stats Michal Koutný
2023-08-22 15:43 ` Yosry Ahmed
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=ZOjwNR2wv5mOdWv0@dhcp22.suse.cz \
--to=mhocko@suse.com \
--cc=akpm@linux-foundation.org \
--cc=cgroups@vger.kernel.org \
--cc=hannes@cmpxchg.org \
--cc=ivan@cloudflare.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=muchun.song@linux.dev \
--cc=roman.gushchin@linux.dev \
--cc=shakeelb@google.com \
--cc=tj@kernel.org \
--cc=yosryahmed@google.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox