Re: [PATCH REBASED] mm, memcg: Make scan aggression always exclude protection

From: Chris Down
Date: Fri May 31 2019 - 15:31:27 EST


Michal Hocko writes:
On Thu 30-05-19 13:52:10, Chris Down wrote:
Michal Hocko writes:
> On Wed 29-05-19 23:44:53, Chris Down wrote:
> > Michal Hocko writes:
> > > Maybe I am missing something so correct me if I am wrong but the new
> > > calculation actually means that we always allow to scan even min
> > > protected memcgs right?
> >
> > We check if the memcg is min protected as a precondition for coming into
> > this function at all, so this generally isn't possible. See the
> > mem_cgroup_protected MEMCG_PROT_MIN check in shrink_node.
>
> OK, that is the part I was missing, I got confused by checking the min
> limit as well here. Thanks for the clarification. A comment would be
> handy or do we really need to consider min at all?

You mean as part of the reclaim pressure calculation? Yeah, we still need
it, because we might only set memory.min, but not set memory.low.

But then the memcg will get excluded as well right?

I'm not sure what you mean, could you clarify? :-)

The only thing we use memory.min for in this patch is potentially as the protection size, which we then use to determine reclaim pressure. We don't use this information if the cgroup is below memory.min, because you'll never come in here. This is for if you *do* have memory.min or memory.low set and you are *exceeding* it (or we are in low reclaim), in which case we want it (or memory.low if higher) considered as the protection size.