linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Johannes Weiner <hannes@cmpxchg.org>
To: Qi Zheng <zhengqi.arch@bytedance.com>
Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org
Subject: Re: CONFIG_PT_RECLAIM
Date: Thu, 27 Feb 2025 01:08:20 -0500	[thread overview]
Message-ID: <20250227060820.GC110982@cmpxchg.org> (raw)
In-Reply-To: <a77923d3-ce26-4e29-bb98-b908ce2355c2@bytedance.com>

On Thu, Feb 27, 2025 at 11:04:51AM +0800, Qi Zheng wrote:
> Hi Johannes,
> 
> On 2/27/25 2:30 AM, Johannes Weiner wrote:
> > Does PT_RECLAIM need to be configurable by the user?
> 
> The PT_RECLAIM will select MMU_GATHER_RCU_TABLE_FREE, but not all archs
> support MMU_GATHER_RCU_TABLE_FREE, and even before Rik's a37259732a7dc 
> ("x86/mm: Make MMU_GATHER_RCU_TABLE_FREE unconditional"), x86 only
> supports MMU_GATHER_RCU_TABLE_FREE in the case of PARAVIRT.
> 
> Therefore, PT_RECLAIM also implies the meaning of enabling
> MMU_GATHER_RCU_TABLE_FREE, so I made it user-configurable. And I just
> thought that as a new feature, it would be better to give users the
> ability to turn it on and off.

New *features*, yes - something that has a significant enough cost
that clearly not all users want to pay for the benefits.

But it's hard to imagine anybody would WANT to keep the page tables
around if they madvised away all the pages inside of them. It's a
great optimization, what would be a reason to opt out?

> > diff --git a/mm/Kconfig b/mm/Kconfig
> > index 2761098dbc1a..99383c93db33 100644
> > --- a/mm/Kconfig
> > +++ b/mm/Kconfig
> > @@ -1309,16 +1309,9 @@ config ARCH_SUPPORTS_PT_RECLAIM
> >   	def_bool n
> >   
> >   config PT_RECLAIM
> > -	bool "reclaim empty user page table pages"
> > -	default y
> > +	def_bool y
> >   	depends on ARCH_SUPPORTS_PT_RECLAIM && MMU && SMP
> >   	select MMU_GATHER_RCU_TABLE_FREE
> > -	help
> > -	  Try to reclaim empty user page table pages in paths other than munmap
> > -	  and exit_mmap path.
> > -
> > -	  Note: now only empty user PTE page table pages will be reclaimed.
> > -
> 
> Maybe keep the help information?

I don't find it very helpful :( Which "other paths?" It doesn't
explain any pros and cons, and why anybody might choose to enable or
disable it. The Note repeats what's in the sentence before it.

Maybe I'm missing something. Could this not just be an #ifdef block
inside mm/madvise.c, instead of living inside a new file with two new
config symbols?

#ifdef CONFIG_MMU_GATHER_RCU_TABLE_FREE
...
#endif

Is there an arch-specific feature that it requires besides
MMU_GATHER_RCU_TABLE_FREE such that only x86 supports it now?

And why *does* it require MMU_GATHER_RCU_TABLE_FREE?

Documentation/mm/process_addrs.rst explains why you need rcu, but
there is free_pte_defer() that THP was using long before x86 needed
MMU_GATHER_RCU_TABLE_FREE. It seems to me if you could use that, this
feature would also work fine on architectures that do not generally
need RCU for flush & frees otherwise. So is the main issue that there
just isn't an explicitly deferred variant of pte_free_tlb()?

If so, this is a fairly non-obvious dependency that should be
documented. It would help somebody trying to port this to a !RCU
mmu_gather arch.

And I apologize if all this was discussed before. But if it was, the
conclusions should be in the changelog or in code comments. This is a
very delicate synchronization scheme that I think deserves explicit
documentation somewhere.


  reply	other threads:[~2025-02-27  6:08 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-02-26 18:30 CONFIG_PT_RECLAIM Johannes Weiner
2025-02-27  3:04 ` CONFIG_PT_RECLAIM Qi Zheng
2025-02-27  6:08   ` Johannes Weiner [this message]
2025-02-27  6:58     ` CONFIG_PT_RECLAIM Qi Zheng
2025-02-27  7:40       ` CONFIG_PT_RECLAIM Qi Zheng
2025-02-27  9:54 ` CONFIG_PT_RECLAIM David Hildenbrand

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=20250227060820.GC110982@cmpxchg.org \
    --to=hannes@cmpxchg.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=zhengqi.arch@bytedance.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