linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: "David Hildenbrand (Red Hat)" <david@kernel.org>
To: Laurence Oberman <loberman@redhat.com>, linux-kernel@vger.kernel.org
Cc: linux-arch@vger.kernel.org, linux-mm@kvack.org,
	Will Deacon <will@kernel.org>,
	"Aneesh Kumar K.V" <aneesh.kumar@kernel.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	Nick Piggin <npiggin@gmail.com>,
	Peter Zijlstra <peterz@infradead.org>,
	Arnd Bergmann <arnd@arndb.de>,
	Muchun Song <muchun.song@linux.dev>,
	Oscar Salvador <osalvador@suse.de>,
	"Liam R. Howlett" <Liam.Howlett@oracle.com>,
	Lorenzo Stoakes <lorenzo.stoakes@oracle.com>,
	Vlastimil Babka <vbabka@suse.cz>, Jann Horn <jannh@google.com>,
	Pedro Falcato <pfalcato@suse.de>, Rik van Riel <riel@surriel.com>,
	Harry Yoo <harry.yoo@oracle.com>,
	Prakash Sangappa <prakash.sangappa@oracle.com>,
	Nadav Amit <nadav.amit@gmail.com>,
	Christophe Leroy <christophe.leroy@csgroup.eu>
Subject: Re: [PATCH RESEND v3 0/4] mm/hugetlb: fixes for PMD table sharing (incl. using mmu_gather)
Date: Thu, 25 Dec 2025 10:49:41 +0100	[thread overview]
Message-ID: <520e6f26-4624-4145-b959-ccde466dfda2@kernel.org> (raw)
In-Reply-To: <11ab64528debf3b3515e863610fc8b679a39189c.camel@redhat.com>

On 12/24/25 00:23, Laurence Oberman wrote:
> On Tue, 2025-12-23 at 22:40 +0100, David Hildenbrand (Red Hat) wrote:
>> One functional fix, one performance regression fix, and two related
>> comment fixes.
>>
>> I cleaned up my prototype I recently shared [1] for the performance
>> fix,
>> deferring most of the cleanups I had in the prototype to a later
>> point.
>> While doing that I identified the other things.
>>
>> The goal of this patch set is to be backported to stable trees
>> "fairly"
>> easily. At least patch #1 and #4.
>>
>> Patch #1 fixes hugetlb_pmd_shared() not detecting any sharing
>> Patch #2 + #3 are simple comment fixes that patch #4 interacts with.
>> Patch #4 is a fix for the reported performance regression due to
>> excessive
>> IPI broadcasts during fork()+exit().
>>
>> The last patch is all about TLB flushes, IPIs and mmu_gather.
>> Read: complicated
>>
>> I added as much comments + description that I possibly could, and I
>> am
>> hoping for review from Jann.
>>
>> There are plenty of cleanups in the future to be had + one reasonable
>> optimization on x86. But that's all out of scope for this series.
>>
>> Compile tested on plenty of architectures.
>>
>> Runtime tested, with a focus on fixing the performance regression
>> using
>> the original reproducer [2] on x86.
>>
>> [1]
>> https://lore.kernel.org/all/8cab934d-4a56-44aa-b641-bfd7e23bd673@kernel.org/
>> [2]
>> https://lore.kernel.org/all/8cab934d-4a56-44aa-b641-bfd7e23bd673@kernel.org/
>>
>> --
>>
>> v2 -> v3:
>> * Rebased to 6.19-rc2 and retested on x86
>> * Changes on last patch:
>>   * Introduce and use tlb_gather_mmu_vma() for properly setting up
>> mmu_gather
>>     for hugetlb -- thanks to Harry for pointing me once again at the
>> nasty
>>     hugetlb integration in mmu_gather
>>   * Move tlb_remove_huge_tlb_entry() after move_huge_pte()
>>   * For consistency, always call tlb_gather_mmu_vma() after
>>     flush_cache_range()
>>   * Don't pass mmu_gather to hugetlb_change_protection(), simply use
>>     a local one for now. (avoids messing with tlb_start_vma() /
>>     tlb_start_end())
>>   * Dropped Lorenzo's RB due to the changes
>>
>> v1 -> v2:
>> * Picked RB's/ACK's, hopefully I didn't miss any
>> * Added the initialization of fully_unshared_tables in
>> __tlb_gather_mmu()
>>    (Thanks Nadav!)
>> * Refined some comments based on Lorenzo's feedback.
>>
>> Cc: Will Deacon <will@kernel.org>
>> Cc: "Aneesh Kumar K.V" <aneesh.kumar@kernel.org>
>> Cc: Andrew Morton <akpm@linux-foundation.org>
>> Cc: Nick Piggin <npiggin@gmail.com>
>> Cc: Peter Zijlstra <peterz@infradead.org>
>> Cc: Arnd Bergmann <arnd@arndb.de>
>> Cc: Muchun Song <muchun.song@linux.dev>
>> Cc: Oscar Salvador <osalvador@suse.de>
>> Cc: "Liam R. Howlett" <Liam.Howlett@oracle.com>
>> Cc: Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
>> Cc: Vlastimil Babka <vbabka@suse.cz>
>> Cc: Jann Horn <jannh@google.com>
>> Cc: Pedro Falcato <pfalcato@suse.de>
>> Cc: Rik van Riel <riel@surriel.com>
>> Cc: Harry Yoo <harry.yoo@oracle.com>
>> Cc: Uschakow, Stanislav" <suschako@amazon.de>
>> Cc: Laurence Oberman <loberman@redhat.com>
>> Cc: Prakash Sangappa <prakash.sangappa@oracle.com>
>> Cc: Nadav Amit <nadav.amit@gmail.com>
>>
>> David Hildenbrand (Red Hat) (4):
>>    mm/hugetlb: fix hugetlb_pmd_shared()
>>    mm/hugetlb: fix two comments related to huge_pmd_unshare()
>>    mm/rmap: fix two comments related to huge_pmd_unshare()
>>    mm/hugetlb: fix excessive IPI broadcasts when unsharing PMD tables
>>      using mmu_gather
>>
>>   include/asm-generic/tlb.h |  77 +++++++++++++++++++++-
>>   include/linux/hugetlb.h   |  17 +++--
>>   include/linux/mm_types.h  |   1 +
>>   mm/hugetlb.c              | 131 +++++++++++++++++++++---------------
>> --
>>   mm/mmu_gather.c           |  33 ++++++++++
>>   mm/rmap.c                 |  45 ++++++-------
>>   6 files changed, 213 insertions(+), 91 deletions(-)
>>
>>
>> base-commit: b927546677c876e26eba308550207c2ddf812a43
> Hello David
> 
> For the V3 series, I re-ran the tests and the original reproducer and
> its clean. I see the same almost 6x improvement for the original
> reproducer
> 
> # uname -r
> 6.19.0-rc2-hugetlbv3+
> 
> Un-patched Result of reproducer Iteration completed in 3436 ms
> V3 Patched Result of reproducer Iteration completed in 639 ms
> 
> I also ran a test to map every hugepage I could access (460GB of them)
> then fill and validate and had no issues.
> 
> Tested-by: Laurence Oberman <loberman@redhat.com>

Thanks a lot for the quick retest Laurence! I'd love to get some generic 
hugetlb testing on arm64 and powerpc, that do hugetlb TLB flushing stuff 
a bit more special.

I'll try doing some arm64 testing early in the new year myself.

-- 
Cheers

David


      reply	other threads:[~2025-12-25  9:49 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-12-23 21:40 David Hildenbrand (Red Hat)
2025-12-23 21:40 ` [PATCH RESEND v3 1/4] mm/hugetlb: fix hugetlb_pmd_shared() David Hildenbrand (Red Hat)
2025-12-23 21:40 ` [PATCH RESEND v3 2/4] mm/hugetlb: fix two comments related to huge_pmd_unshare() David Hildenbrand (Red Hat)
2025-12-23 21:40 ` [PATCH RESEND v3 3/4] mm/rmap: " David Hildenbrand (Red Hat)
2025-12-23 21:40 ` [PATCH RESEND v3 4/4] mm/hugetlb: fix excessive IPI broadcasts when unsharing PMD tables using mmu_gather David Hildenbrand (Red Hat)
2025-12-25  9:47   ` David Hildenbrand (Red Hat)
2025-12-29  2:30   ` Harry Yoo
2025-12-30 22:00     ` David Hildenbrand (Red Hat)
2025-12-23 23:23 ` [PATCH RESEND v3 0/4] mm/hugetlb: fixes for PMD table sharing (incl. using mmu_gather) Laurence Oberman
2025-12-25  9:49   ` David Hildenbrand (Red Hat) [this message]

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=520e6f26-4624-4145-b959-ccde466dfda2@kernel.org \
    --to=david@kernel.org \
    --cc=Liam.Howlett@oracle.com \
    --cc=akpm@linux-foundation.org \
    --cc=aneesh.kumar@kernel.org \
    --cc=arnd@arndb.de \
    --cc=christophe.leroy@csgroup.eu \
    --cc=harry.yoo@oracle.com \
    --cc=jannh@google.com \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=loberman@redhat.com \
    --cc=lorenzo.stoakes@oracle.com \
    --cc=muchun.song@linux.dev \
    --cc=nadav.amit@gmail.com \
    --cc=npiggin@gmail.com \
    --cc=osalvador@suse.de \
    --cc=peterz@infradead.org \
    --cc=pfalcato@suse.de \
    --cc=prakash.sangappa@oracle.com \
    --cc=riel@surriel.com \
    --cc=vbabka@suse.cz \
    --cc=will@kernel.org \
    /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