From: SeongJae Park <sj@kernel.org>
To: Barry Song <21cnbao@gmail.com>
Cc: SeongJae Park <sj@kernel.org>, Minchan Kim <minchan@kernel.org>,
akpm@linux-foundation.org, damon@lists.linux.dev,
linux-mm@kvack.org, linux-kernel@vger.kernel.org,
mhocko@suse.com, hannes@cmpxchg.org,
Barry Song <v-songbaohua@oppo.com>
Subject: Re: [PATCH RFC] mm: madvise: pageout: ignore references rather than clearing young
Date: Sat, 24 Feb 2024 12:54:52 -0800 [thread overview]
Message-ID: <20240224205453.47096-1-sj@kernel.org> (raw)
In-Reply-To: <CAGsJ_4w5JF8zjsM=vEiArUpnvN9LjAdnUn98mEUJSAhg4Y9XjQ@mail.gmail.com>
On Sun, 25 Feb 2024 04:01:40 +0800 Barry Song <21cnbao@gmail.com> wrote:
> On Sun, Feb 25, 2024 at 3:07 AM SeongJae Park <sj@kernel.org> wrote:
> >
> > Hi Barry,
> >
> > On Sat, 24 Feb 2024 12:37:59 +0800 Barry Song <21cnbao@gmail.com> wrote:
> >
> > [...]
> > >
> > > BTW,
> > > Hi SeongJae,
> > > I am not quite sure if damon also needs this, so I have kept damon as is by
> > > setting ignore_references = false. MADV_PAGEOUT is an explicit hint users
> > > don't want the memory to be reclaimed, I don't know if it is true for damon as
> > > well. If you have some comments, please chime in.
> >
> > Thank you for calling my name :)
> >
> > For DAMON's usecase, the document simply says the behavior would be same to
> > MADV_PAGEOUT, so if we conclude to change MADV_PAGEOUT, I think same change
> > should be made for DAMON's usecase, or update DAMON document.
>
> Hi SeongJae,
>
> I don't find similar clearing pte young in damon_pa_pageout(), so i
> guess damon's
> behaviour is actually different with MADV_PAGEOUT which has pte-clearing. damon
> is probably the best-effort but MADV_PAGEOUT isn't .
>
> static unsigned long damon_pa_pageout(struct damon_region *r, struct damos *s)
> {
> unsigned long addr, applied;
> LIST_HEAD(folio_list);
>
> for (addr = r->ar.start; addr < r->ar.end; addr += PAGE_SIZE) {
> struct folio *folio = damon_get_folio(PHYS_PFN(addr));
> ....
>
> if (damos_pa_filter_out(s, folio))
> goto put_folio;
>
> folio_clear_referenced(folio);
> folio_test_clear_young(folio);
> if (!folio_isolate_lru(folio))
> goto put_folio;
> if (folio_test_unevictable(folio))
> folio_putback_lru(folio);
> else
> list_add(&folio->lru, &folio_list);
> put_folio:
> folio_put(folio);
> }
> applied = reclaim_pages(&folio_list);
> cond_resched();
> return applied * PAGE_SIZE;
> }
>
> am i missing something?
Thank you for checking this again. You're right.
Technically speaking, DAMON's usage of MADV_PAGEOUT is in vaddr.c. paddr.c is
using not MADV_PAGEOUT but reclaim_pages(). Usage of reclaim_pages() from
paddr is different from that of MADV_PAGEOUT since paddr doesn't clear PTE. I
was confused from the difference between vaddr and paddr. I actually wanted to
document the difference but haven't had a time for that yet. Thank you for
letting me remind this.
So, your change on MADV_PAGEOUT will make an effect to vaddr, and I think it's
ok. Your change on reclaim_pages() could make an effect to paddr, depending on
the additional parameter's value. I now think it would better to make no
effect here. That is, let's keep the change for paddr.c in your patch as is.
Thanks,
SJ
>
> >
> >
> > Thanks,
> > SJ
> >
>
> Thanks
> Barry
next prev parent reply other threads:[~2024-02-24 20:54 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-02-23 4:15 [PATCH RFC] mm: madvise: pageout: ignore references rather than clearing young Barry Song
2024-02-23 22:09 ` Minchan Kim
2024-02-23 22:20 ` Barry Song
2024-02-23 23:24 ` Minchan Kim
2024-02-24 4:37 ` Barry Song
2024-02-24 19:07 ` SeongJae Park
2024-02-24 20:01 ` Barry Song
2024-02-24 20:54 ` SeongJae Park [this message]
2024-02-24 21:54 ` Barry Song
2024-02-24 20:12 ` SeongJae Park
2024-02-24 20:33 ` Barry Song
2024-02-24 21:02 ` SeongJae Park
2024-02-24 19:02 ` SeongJae Park
2024-02-24 19:50 ` Barry Song
2024-02-24 20:02 ` SeongJae Park
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=20240224205453.47096-1-sj@kernel.org \
--to=sj@kernel.org \
--cc=21cnbao@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=damon@lists.linux.dev \
--cc=hannes@cmpxchg.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mhocko@suse.com \
--cc=minchan@kernel.org \
--cc=v-songbaohua@oppo.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.