Re: [RFC 0/4] Introduce unbalance proactive reclaim

From: Huan Yang
Date: Wed Nov 08 2023 - 03:22:11 EST



在 2023/11/8 16:14, Yosry Ahmed 写道:
On Wed, Nov 8, 2023 at 12:11 AM Huang, Ying <ying.huang@xxxxxxxxx> wrote:
Huan Yang <link@xxxxxxxx> writes:

HI Huang, Ying

Thanks for reply.

在 2023/11/8 15:35, Huang, Ying 写道:
Huan Yang <link@xxxxxxxx> writes:

In some cases, we need to selectively reclaim file pages or anonymous
pages in an unbalanced manner.

For example, when an application is pushed to the background and frozen,
it may not be opened for a long time, and we can safely reclaim the
application's anonymous pages, but we do not want to touch the file pages.

This patchset extends the proactive reclaim interface to achieve
unbalanced reclamation. Users can control the reclamation tendency by
inputting swappiness under the original interface. Specifically, users
can input special values to extremely reclaim specific pages.
From mem_cgroup_swappiness(), cgroupv2 doesn't have per-cgroup
swappiness. So you need to add that firstly?
Sorry for this mistake, we always work on cgroupv1, so, not notice
this commit 4550c4e, thank your for point that.

I see this commit comment that `that's a different discussion`, but,
to implements this, I will try add.

Example:
echo "1G" 200 > memory.reclaim (only reclaim anon)
echo "1G" 0 > memory.reclaim (only reclaim file)
echo "1G" 1 > memory.reclaim (only reclaim file)

Note that when performing unbalanced reclamation, the cgroup swappiness
will be temporarily adjusted dynamically to the input value. Therefore,
if the cgroup swappiness is further modified during runtime, there may
be some errors.
If cgroup swappiness will be adjusted temporarily, why not just change
it via a script before/after proactive reclaiming?
IMO, this unbalance reclaim only takes effect for a single command,
so if it is pre-set using a script, the judgment of the reclamation tendency
may become complicated.
If swappiness == 0, then we will only reclaim file pages. If swappiness
== 200, then we may still reclaim file pages. So you need a way to
reclaim only anon pages?

If so, can we use some special swappiness value to specify that? I
don't know whether use 200 will cause regression. If so, we may need
some other value, e.g. >= 65536.
I don't think swappiness is the answer here. This has been discussed a
while back, please see my response. As you mentioned, swappiness may
be ignored by the kernel in some cases, and its behavior has
historically changed before.

For type base, reclaim can have direct tendencies as well. It's good. But, what if
we only want to make small adjustments to the reclamation ratio?
Of course, sometimes swappiness may become ineffective.