linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: "Pankaj Raghav (Samsung)" <kernel@pankajraghav.com>
To: Dave Hansen <dave.hansen@intel.com>
Cc: Pankaj Raghav <p.raghav@samsung.com>,
	 Suren Baghdasaryan <surenb@google.com>,
	Ryan Roberts <ryan.roberts@arm.com>,
	 Vlastimil Babka <vbabka@suse.cz>,
	Baolin Wang <baolin.wang@linux.alibaba.com>,
	 Borislav Petkov <bp@alien8.de>, Ingo Molnar <mingo@redhat.com>,
	 "H . Peter Anvin" <hpa@zytor.com>, Zi Yan <ziy@nvidia.com>,
	Mike Rapoport <rppt@kernel.org>,
	 Dave Hansen <dave.hansen@linux.intel.com>,
	Michal Hocko <mhocko@suse.com>,
	 David Hildenbrand <david@redhat.com>,
	Lorenzo Stoakes <lorenzo.stoakes@oracle.com>,
	 Andrew Morton <akpm@linux-foundation.org>,
	Thomas Gleixner <tglx@linutronix.de>,
	 Nico Pache <npache@redhat.com>, Dev Jain <dev.jain@arm.com>,
	 "Liam R . Howlett" <Liam.Howlett@oracle.com>,
	Jens Axboe <axboe@kernel.dk>,
	linux-kernel@vger.kernel.org,  linux-mm@kvack.org,
	linux-block@vger.kernel.org, willy@infradead.org, x86@kernel.org,
	 linux-fsdevel@vger.kernel.org,
	"Darrick J . Wong" <djwong@kernel.org>,
	mcgrof@kernel.org,  gost.dev@samsung.com, hch@lst.de
Subject: Re: [RFC 2/3] mm: add STATIC_PMD_ZERO_PAGE config option
Date: Tue, 27 May 2025 20:00:50 +0200	[thread overview]
Message-ID: <5dv5hsfvbdwyjlkxaeo2g43v6n4xe6ut7pjf6igrv7b25y2m5a@blllpcht5euu> (raw)
In-Reply-To: <626be90e-fa54-4ae9-8cad-d3b7eb3e59f7@intel.com>

On Tue, May 27, 2025 at 09:37:50AM -0700, Dave Hansen wrote:
> > diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
> > index 055204dc211d..96f99b4f96ea 100644
> > --- a/arch/x86/Kconfig
> > +++ b/arch/x86/Kconfig
> > @@ -152,6 +152,7 @@ config X86
> >  	select ARCH_WANT_OPTIMIZE_HUGETLB_VMEMMAP	if X86_64
> >  	select ARCH_WANT_HUGETLB_VMEMMAP_PREINIT if X86_64
> >  	select ARCH_WANTS_THP_SWAP		if X86_64
> > +	select ARCH_WANTS_STATIC_PMD_ZERO_PAGE if X86_64
> 
> I don't think this should be the default. There are lots of little
> x86_64 VMs sitting around and 2MB might be significant to them.

This is the feedback I wanted. I will make it optional.

> > +config ARCH_WANTS_STATIC_PMD_ZERO_PAGE
> > +	bool
> > +
> > +config STATIC_PMD_ZERO_PAGE
> > +	def_bool y
> > +	depends on ARCH_WANTS_STATIC_PMD_ZERO_PAGE
> > +	help
> > +	  Typically huge_zero_folio, which is a PMD page of zeroes, is allocated
> > +	  on demand and deallocated when not in use. This option will always
> > +	  allocate huge_zero_folio for zeroing and it is never deallocated.
> > +	  Not suitable for memory constrained systems.
> 
> "Static" seems like a weird term to use for this. I was really expecting
> to see a 2MB object that gets allocated in .bss or something rather than
> a dynamically allocated page that's just never freed.

My first proposal was along those lines[0] (sorry I messed up version
while sending the patches). David Hilderbrand suggested to leverage the
infrastructure we already have in huge_memory.

> 
> >  menuconfig TRANSPARENT_HUGEPAGE
> >  	bool "Transparent Hugepage Support"
> >  	depends on HAVE_ARCH_TRANSPARENT_HUGEPAGE && !PREEMPT_RT
> > diff --git a/mm/memory.c b/mm/memory.c
> > index 11edc4d66e74..ab8c16d04307 100644
> > --- a/mm/memory.c
> > +++ b/mm/memory.c
> > @@ -203,9 +203,17 @@ static void put_huge_zero_page(void)
> >  	BUG_ON(atomic_dec_and_test(&huge_zero_refcount));
> >  }
> >  
> > +/*
> > + * If STATIC_PMD_ZERO_PAGE is enabled, @mm can be NULL, i.e, the huge_zero_folio
> > + * is not associated with any mm_struct.
> > +*/
> 
> I get that callers have to handle failure. But isn't this pretty nasty
> for mm==NULL callers to be *guaranteed* to fail? They'll generate code
> for the success case that will never even run.
> 

The idea was to still have dynamic allocation possible even if this
config was disabled.

You are right that if this config is disabled, the callers with NULL mm
struct are guaranteed to fail, but we are not generating extra code
because there are still users who want dynamic allocation.

Do you think it is better to have the code with inside an #ifdef instead
of using the IS_ENABLED primitive?

[1] https://lore.kernel.org/linux-fsdevel/20250516101054.676046-2-p.raghav@samsung.com/

--
Pankaj


  reply	other threads:[~2025-05-27 18:01 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-05-27  5:04 [RFC 0/3] " Pankaj Raghav
2025-05-27  5:04 ` [RFC 1/3] mm: move huge_zero_folio from huge_memory.c to memory.c Pankaj Raghav
2025-05-27  5:04 ` [RFC 2/3] mm: add STATIC_PMD_ZERO_PAGE config option Pankaj Raghav
2025-05-27 16:37   ` Dave Hansen
2025-05-27 18:00     ` Pankaj Raghav (Samsung) [this message]
2025-05-27 18:30       ` Dave Hansen
2025-05-27 19:28         ` Pankaj Raghav (Samsung)
2025-05-28 20:36       ` David Hildenbrand
2025-06-02  5:03   ` Christoph Hellwig
2025-06-02 14:49     ` Pankaj Raghav
2025-06-02 20:28       ` David Hildenbrand
2025-06-02 20:32         ` David Hildenbrand
2025-05-27  5:04 ` [RFC 3/3] block: use mm_huge_zero_folio in __blkdev_issue_zero_pages() Pankaj Raghav
2025-06-02  5:05   ` Christoph Hellwig
2025-06-02 15:34     ` Pankaj Raghav

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=5dv5hsfvbdwyjlkxaeo2g43v6n4xe6ut7pjf6igrv7b25y2m5a@blllpcht5euu \
    --to=kernel@pankajraghav.com \
    --cc=Liam.Howlett@oracle.com \
    --cc=akpm@linux-foundation.org \
    --cc=axboe@kernel.dk \
    --cc=baolin.wang@linux.alibaba.com \
    --cc=bp@alien8.de \
    --cc=dave.hansen@intel.com \
    --cc=dave.hansen@linux.intel.com \
    --cc=david@redhat.com \
    --cc=dev.jain@arm.com \
    --cc=djwong@kernel.org \
    --cc=gost.dev@samsung.com \
    --cc=hch@lst.de \
    --cc=hpa@zytor.com \
    --cc=linux-block@vger.kernel.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=lorenzo.stoakes@oracle.com \
    --cc=mcgrof@kernel.org \
    --cc=mhocko@suse.com \
    --cc=mingo@redhat.com \
    --cc=npache@redhat.com \
    --cc=p.raghav@samsung.com \
    --cc=rppt@kernel.org \
    --cc=ryan.roberts@arm.com \
    --cc=surenb@google.com \
    --cc=tglx@linutronix.de \
    --cc=vbabka@suse.cz \
    --cc=willy@infradead.org \
    --cc=x86@kernel.org \
    --cc=ziy@nvidia.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