Re: [PATCH] mm/memcontrol: add per-memcg pgpgin/pswpin counter

From: jingxiang zeng
Date: Fri Sep 13 2024 - 04:06:33 EST


On Tue, 10 Sept 2024 at 15:10, Shakeel Butt <shakeel.butt@xxxxxxxxx> wrote:
>
> On Fri, Aug 30, 2024 at 04:22:44PM GMT, Jingxiang Zeng wrote:
> > From: Jingxiang Zeng <linuszeng@xxxxxxxxxxx>
> >
> > In proactive memory reclamation scenarios, it is necessary to
> > estimate the pswpin and pswpout metrics of the cgroup to
> > determine whether to continue reclaiming anonymous pages in
> > the current batch. This patch will collect these metrics and
> > expose them.
>
> Please explain a bit more on how these metrics will be used to make
> a decision to continue to do proactive reclaim or not.

Currently there is simply no way to know exactly how many anon page
was faulted in through SWAP for each cgroup. One may use
workingset refault as an indicator but it is inaccurate due to shadow reclaim.

We have a proactive reclaim agent that sets a forced swappiness
dynamically for each reclaim, so we can reclaim file or anon pages striclty.
Knowing the anon page swapin status is a huge win for estimating the
workload status.

And the swapout info is also important for getting an idea of how much
swapout is effective for a cgroup.

>
> >
> > Signed-off-by: Jingxiang Zeng <linuszeng@xxxxxxxxxxx>
> > ---
> > mm/memcontrol-v1.c | 2 ++
> > mm/memcontrol.c | 2 ++
> > mm/page_io.c | 4 ++++
> > 3 files changed, 8 insertions(+)
> >
> > diff --git a/mm/memcontrol-v1.c b/mm/memcontrol-v1.c
> > index b37c0d870816..44803cbea38a 100644
> > --- a/mm/memcontrol-v1.c
> > +++ b/mm/memcontrol-v1.c
> > @@ -2729,6 +2729,8 @@ static const char *const memcg1_stat_names[] = {
> > static const unsigned int memcg1_events[] = {
> > PGPGIN,
> > PGPGOUT,
> > + PSWPIN,
> > + PSWPOUT,
> > PGFAULT,
> > PGMAJFAULT,
> > };
>
> As Yosry said, no need to add these in v1.
>
> thanks,
> Shakeel
>