From: Yosry Ahmed <yosryahmed@google.com>
To: Michal Hocko <mhocko@suse.com>
Cc: "Andrew Morton" <akpm@linux-foundation.org>,
"Shakeel Butt" <shakeelb@google.com>,
"Johannes Weiner" <hannes@cmpxchg.org>,
"Roman Gushchin" <roman.gushchin@linux.dev>,
"Muchun Song" <muchun.song@linux.dev>,
"Michal Koutný" <mkoutny@suse.com>,
linux-mm@kvack.org, cgroups@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH v2 0/2] mm: memcg: fix tracking of pending stats updates values
Date: Mon, 25 Sep 2023 10:11:05 -0700 [thread overview]
Message-ID: <CAJD7tkbWz7mx6mUrvFQHP10ncqL-iVwD4ymHTm=oXW5qGgrZtA@mail.gmail.com> (raw)
In-Reply-To: <ZRGQIhWF02SRzN4D@dhcp22.suse.cz>
On Mon, Sep 25, 2023 at 6:50 AM Michal Hocko <mhocko@suse.com> wrote:
>
> On Fri 22-09-23 17:57:38, Yosry Ahmed wrote:
> > While working on adjacent code [1], I realized that the values passed
> > into memcg_rstat_updated() to keep track of the magnitude of pending
> > updates is consistent. It is mostly in pages, but sometimes it can be in
> > bytes or KBs. Fix that.
>
> What kind of practical difference does this change make? Is it worth
> additional code?
As explained in patch 2's commit message, the value passed into
memcg_rstat_updated() is used for the "flush only if not worth it"
heuristic. As we have discussed in different threads in the past few
weeks, unnecessary flushes can cause increased global lock contention
and/or latency.
Byte-sized paths (percpu, slab, zswap, ..) feed bytes into the
heuristic, but those are interpreted as pages, which means we will
flush earlier than we should. This was noticed by code inspection. How
much does this matter in practice? I would say it depends on the
workload: how many percpu/slab allocations are being made vs. how many
flushes are requested.
On a system with 100 cpus, 25M of stat updates are needed for a flush
usually, but ~6K of slab/percpu updates will also (mistakenly) cause a
flush.
>
> > Patch 1 reworks memcg_page_state_unit() so that we can reuse it in patch
> > 2 to check and normalize the units of state updates.
> >
> > [1]https://lore.kernel.org/lkml/20230921081057.3440885-1-yosryahmed@google.com/
> >
> > v1 -> v2:
> > - Rebased on top of mm-unstable.
> >
> > Yosry Ahmed (2):
> > mm: memcg: refactor page state unit helpers
> > mm: memcg: normalize the value passed into memcg_rstat_updated()
> >
> > mm/memcontrol.c | 64 +++++++++++++++++++++++++++++++++++++++----------
> > 1 file changed, 51 insertions(+), 13 deletions(-)
> >
> > --
> > 2.42.0.515.g380fc7ccd1-goog
>
> --
> Michal Hocko
> SUSE Labs
next prev parent reply other threads:[~2023-09-25 17:11 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-09-22 17:57 Yosry Ahmed
2023-09-22 17:57 ` [PATCH v2 1/2] mm: memcg: refactor page state unit helpers Yosry Ahmed
2023-10-03 13:03 ` Johannes Weiner
2023-10-03 18:11 ` Michal Koutný
2023-10-03 19:47 ` Yosry Ahmed
2023-10-04 9:02 ` Michal Koutný
2023-10-04 16:58 ` Yosry Ahmed
2023-10-04 18:36 ` Johannes Weiner
2023-10-05 9:06 ` Michal Koutný
2023-10-05 9:31 ` Yosry Ahmed
2023-10-05 16:30 ` Michal Koutný
2023-10-05 17:30 ` Yosry Ahmed
2023-10-18 19:27 ` Andrew Morton
2023-09-22 17:57 ` [PATCH v2 2/2] mm: memcg: normalize the value passed into memcg_rstat_updated() Yosry Ahmed
2023-10-03 13:13 ` Johannes Weiner
2023-10-03 15:53 ` Yosry Ahmed
2023-10-03 18:22 ` Michal Koutný
2023-10-03 19:51 ` Yosry Ahmed
2023-09-25 13:50 ` [PATCH v2 0/2] mm: memcg: fix tracking of pending stats updates values Michal Hocko
2023-09-25 17:11 ` Yosry Ahmed [this message]
2023-10-03 7:57 ` Michal Hocko
2023-10-03 8:03 ` Yosry Ahmed
2023-10-03 8:09 ` Michal Hocko
2023-10-03 8:49 ` 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='CAJD7tkbWz7mx6mUrvFQHP10ncqL-iVwD4ymHTm=oXW5qGgrZtA@mail.gmail.com' \
--to=yosryahmed@google.com \
--cc=akpm@linux-foundation.org \
--cc=cgroups@vger.kernel.org \
--cc=hannes@cmpxchg.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mhocko@suse.com \
--cc=mkoutny@suse.com \
--cc=muchun.song@linux.dev \
--cc=roman.gushchin@linux.dev \
--cc=shakeelb@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