Re: [PATCH] mm: bump PGSTEAL*/PGSCAN*/ALLOCSTALL counters in memcg reclaim

From: Roman Gushchin
Date: Tue May 30 2017 - 09:21:44 EST


On Tue, May 30, 2017 at 02:24:36PM +0200, Michal Hocko wrote:
> On Mon 29-05-17 14:01:41, Roman Gushchin wrote:
> > Historically, PGSTEAL*/PGSCAN*/ALLOCSTALL counters were used to
> > account only for global reclaim events, memory cgroup targeted reclaim
> > was ignored.
> >
> > It doesn't make sense anymore, because the whole reclaim path
> > is designed around cgroups. Also, per-cgroup counters can exceed the
> > corresponding global counters, what can be confusing.
>
> The whole reclaim is designed around cgroups but the source of the
> memory pressure is different. I agree that checking global_reclaim()
> for PGSTEAL_KSWAPD doesn't make much sense because we are _always_ in
> the global reclaim context but counting ALLOCSTALL even for targetted
> memcg reclaim is more confusing than helpful. We usually consider this
> counter to see whether the kswapd catches up with the memory demand
> and the global direct reclaim is indicator it doesn't. The similar
> applies to other counters as well.
>
> So I do not think this is correct. What is the problem you are trying to
> solve here anyway.

This is a follow-up patch after the discussion here:
https://lkml.org/lkml/2017/5/16/706.

I can agree with you, that a per-cgroup ALLOCSTALL is something different
from a global one, and it's better to keep them separated.

But what about PGSTEAL*/PGSCAN* counters, isn't it better to make them
reflect __all__ reclaim activity, no matter what was a root cause?

Thanks!

Roman