From: Yosry Ahmed <yosryahmed@google.com>
To: Minchan Kim <minchan@kernel.org>
Cc: Chris Li <chriscli@google.com>,
"Huang, Ying" <ying.huang@intel.com>,
Michal Hocko <mhocko@suse.com>,
Liu Shixin <liushixin2@huawei.com>, Yu Zhao <yuzhao@google.com>,
Andrew Morton <akpm@linux-foundation.org>,
Sachin Sant <sachinp@linux.ibm.com>,
Johannes Weiner <hannes@cmpxchg.org>,
Kefeng Wang <wangkefeng.wang@huawei.com>,
linux-mm@kvack.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v10] mm: vmscan: try to reclaim swapcache pages if no swap space
Date: Mon, 27 Nov 2023 13:56:26 -0800 [thread overview]
Message-ID: <CAJD7tkZNa_3mWYeix_Xc-BFRNVMkBF3uzL0JCkZOYw5ubAaj9w@mail.gmail.com> (raw)
In-Reply-To: <ZWUKziMl6cFV2uWN@google.com>
On Mon, Nov 27, 2023 at 1:32 PM Minchan Kim <minchan@kernel.org> wrote:
>
> On Mon, Nov 27, 2023 at 12:22:59AM -0800, Chris Li wrote:
> > On Mon, Nov 27, 2023 at 12:14 AM Huang, Ying <ying.huang@intel.com> wrote:
> > > > I agree with Ying that anonymous pages typically have different page
> > > > access patterns than file pages, so we might want to treat them
> > > > differently to reclaim them effectively.
> > > > One random idea:
> > > > How about we put the anonymous page in a swap cache in a different LRU
> > > > than the rest of the anonymous pages. Then shrinking against those
> > > > pages in the swap cache would be more effective.Instead of having
> > > > [anon, file] LRU, now we have [anon not in swap cache, anon in swap
> > > > cache, file] LRU
> > >
> > > I don't think that it is necessary. The patch is only for a special use
> > > case. Where the swap device is used up while some pages are in swap
> > > cache. The patch will kill performance, but it is used to avoid OOM
> > > only, not to improve performance. Per my understanding, we will not use
> > > up swap device space in most cases. This may be true for ZRAM, but will
> > > we keep pages in swap cache for long when we use ZRAM?
> >
> > I ask the question regarding how many pages can be freed by this patch
> > in this email thread as well, but haven't got the answer from the
> > author yet. That is one important aspect to evaluate how valuable is
> > that patch.
>
> Exactly. Since swap cache has different life time with page cache, they
> would be usually dropped when pages are unmapped(unless they are shared
> with others but anon is usually exclusive private) so I wonder how much
> memory we can save.
I think the point of this patch is not saving memory, but rather
avoiding an OOM condition that will happen if we have no swap space
left, but some pages left in the swap cache. Of course, the OOM
avoidance will come at the cost of extra work in reclaim to swap those
pages out.
The only case where I think this might be harmful is if there's plenty
of pages to reclaim on the file LRU, and instead we opt to chase down
the few swap cache pages. So perhaps we can add a check to only set
sc->swapcache_only if the number of pages in the swap cache is more
than the number of pages on the file LRU or similar? Just make sure we
don't chase the swapcache pages down if there's plenty to scan on the
file LRU?
>
> > Regarding running out of swap space. That is a good point, in server
> > workload we don't typically run out of swap device space anyway.
> >
> > Android uses ZRAM, the story might be different. Adding Minchan here.
>
> Swap is usually almost full in Android since it compacts(i.e., swapout)
> background apps aggressively.
next prev parent reply other threads:[~2023-11-27 21:57 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-11-21 9:06 Liu Shixin
2023-11-21 13:00 ` Michal Hocko
2023-11-22 6:41 ` Liu Shixin
2023-11-22 6:44 ` Yosry Ahmed
2023-11-22 6:57 ` Huang, Ying
2023-11-22 8:55 ` Michal Hocko
2023-11-22 8:52 ` Michal Hocko
2023-11-22 10:09 ` Michal Hocko
2023-11-22 10:39 ` Yosry Ahmed
2023-11-22 13:19 ` Michal Hocko
2023-11-22 20:13 ` Yosry Ahmed
2023-11-23 6:15 ` Huang, Ying
2023-11-24 16:30 ` Michal Hocko
2023-11-27 2:34 ` Huang, Ying
2023-11-27 7:42 ` Chris Li
2023-11-27 8:11 ` Huang, Ying
2023-11-27 8:22 ` Chris Li
2023-11-27 21:31 ` Minchan Kim
2023-11-27 21:56 ` Yosry Ahmed [this message]
2023-11-28 3:19 ` Huang, Ying
2023-11-28 3:27 ` Yosry Ahmed
2023-11-28 4:03 ` Huang, Ying
2023-11-28 4:13 ` Yosry Ahmed
2023-11-28 5:37 ` Huang, Ying
2023-11-28 5:41 ` Yosry Ahmed
2023-11-28 5:52 ` Huang, Ying
2023-11-28 22:37 ` Minchan Kim
2023-11-29 3:12 ` Huang, Ying
2023-11-29 10:22 ` Michal Hocko
2023-11-30 8:07 ` Huang, Ying
2023-11-28 23:45 ` Chris Li
2023-11-27 9:10 ` Michal Hocko
2023-11-28 1:31 ` Huang, Ying
2023-11-28 10:16 ` Michal Hocko
2023-11-28 22:45 ` Minchan Kim
2023-11-28 23:05 ` Yosry Ahmed
2023-11-28 23:15 ` Minchan Kim
2023-11-29 10:17 ` Michal Hocko
2023-12-13 23:13 ` Andrew Morton
2023-12-15 5:05 ` Huang, Ying
2023-12-15 19:24 ` Andrew Morton
2023-11-23 17:30 ` Chris Li
2023-11-23 17:19 ` Chris Li
2023-11-28 1:59 ` Liu Shixin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=CAJD7tkZNa_3mWYeix_Xc-BFRNVMkBF3uzL0JCkZOYw5ubAaj9w@mail.gmail.com \
--to=yosryahmed@google.com \
--cc=akpm@linux-foundation.org \
--cc=chriscli@google.com \
--cc=hannes@cmpxchg.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=liushixin2@huawei.com \
--cc=mhocko@suse.com \
--cc=minchan@kernel.org \
--cc=sachinp@linux.ibm.com \
--cc=wangkefeng.wang@huawei.com \
--cc=ying.huang@intel.com \
--cc=yuzhao@google.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox