Re: [PATCH v4] mm: vmpressure: don't count proactive reclaim in vmpressure

From: Michal Hocko
Date: Thu Jul 21 2022 - 07:44:24 EST


On Wed 20-07-22 11:02:56, Yosry Ahmed wrote:
> On Wed, Jul 20, 2022 at 10:50 AM Shakeel Butt <shakeelb@xxxxxxxxxx> wrote:
> >
> > On Wed, Jul 20, 2022 at 2:24 AM Michal Hocko <mhocko@xxxxxxxx> wrote:
> > >
> > [...]
> > >
> > > I think what we are missing here is
> > > - explain that this doesn't have any effect on existing users of
> > > vmpressure user interface because that is cgroup v1 and memory.reclaim
> > > is v2 feature. This is a trivial statement but quite useful for future
> > > readers of this commit
> > > - explain the effect on the networking layer and typical usecases
> > > memory.reclaim is used for currently and ideally document that.
> >
> > I agree with the above two points (Yosry, please address those) but
> > the following third point is orthogonal and we don't really need to
> > have an answer for this patch to be accepted.
> >
>
> That's great feedback, thanks Michal and Shakeel!
>
> How do you feel about the following commit message instead? Does it
> address your concerns?:
>
> memory.reclaim is a cgroup v2 interface that allows users to
> proactively reclaim memory from a memcg, without real memory pressure.
> Reclaim operations invoke vmpressure, which is used in cgroup v1 to
> notify userspace of reclaim efficiency, and used in both v1 and v2 as
> a signal for a memcg being under memory pressure for networking (see
> mem_cgroup_under_socket_pressure()). For the former, vmpressure
> notifications in v1 are not affected by this change since
> memory.reclaim is a v2 feature.
>
> For the latter, the effects of the vmpressure signal (according to
> Shakeel [1]) are as follows:
> 1. Reducing send and receive buffers of the current socket.
> 2. May drop packets on the rx path.
> 3. May throttle current thread on the tx path.
>
> Since proactive reclaim is invoked directly by userspace, not by
> memory pressure, it makes sense not to throttle networking. Hence,
> this change makes sure that proactive reclaim caused by memory.reclaim
> does not trigger vmpressure.

OK, looks much better. Please also add a note to the documentation about
this side effect.

Thanks!
--
Michal Hocko
SUSE Labs