linuxppc-dev.lists.ozlabs.org archive mirror
 help / color / mirror / Atom feed
* [PATCH RFC 0/5] mm/autonuma: replace savedwrite infrastructure
@ 2022-09-26 15:26 David Hildenbrand
  2022-09-26 15:26 ` [PATCH RFC 1/5] mm/mprotect: allow clean exclusive anon pages to be writable David Hildenbrand
                   ` (4 more replies)
  0 siblings, 5 replies; 6+ messages in thread
From: David Hildenbrand @ 2022-09-26 15:26 UTC (permalink / raw)
  To: linux-kernel
  Cc: Andrea Arcangeli, David Hildenbrand, linuxppc-dev,
	Anshuman Khandual, Dave Chinner, Mel Gorman, Peter Xu, linux-mm,
	Hugh Dickins, Nadav Amit, Nicholas Piggin, Mike Rapoport,
	Andrew Morton, Linus Torvalds, Vlastimil Babka

As discussed in my talk at LPC, we can reuse the same mechanism for
deciding whether to map a pte writable when upgrading permissions via
mprotect() -- e.g., PROT_READ -> PROT_READ|PROT_WRITE -- to replace the
savedwrite infrastructure used for NUMA hinting faults (e.g., PROT_NONE
-> PROT_READ|PROT_WRITE). Instead of maintaining previous write permissions
for a pte/pmd, we re-determine if the pte/pmd can be writable.

The big benefit is that we have a common logic for deciding whether we can
map a pte/pmd writable on protection changes.

For private mappings, there should be no difference -- from
what I understand, that is what autonuma benchmarks care about.

I ran autonumabench on a system with 2 NUMA nodes, 96 GiB each via:
	perf stat --null --repeat 10

The numa1 benchmark is quite noisy in my environment. I suspect that there
is no actual change in performance, even though the numbers indicate that
this series might improve performance slightly.

numa1:
	mm-stable:   156.75 +- 11.67 seconds time elapsed  ( +-  7.44% )
	mm-stable++: 147.50 +- 9.35 seconds time elapsed  ( +-  6.34% )

numa2:
	mm-stable:   15.9834 +- 0.0589 seconds time elapsed  ( +-  0.37% )
	mm-stable++: 16.1467 +- 0.0946 seconds time elapsed  ( +-  0.59% )

It is worth noting that for shared writable mappings that require
writenotify, we will only avoid write faults if the pte/pmd is dirty
(inherited from the older mprotect logic). If we ever care about optimizing
that further, we'd need a different mechanism to identify whether the FS
still needs to get notified on the next write access. In any case, such an
optimiztion will then not be autonuma-specific, but mprotect() permission
upgrades would similarly benefit from it.

Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Mel Gorman <mgorman@techsingularity.net>
Cc: Dave Chinner <david@fromorbit.com>
Cc: Nadav Amit <namit@vmware.com>
Cc: Peter Xu <peterx@redhat.com>
Cc: Andrea Arcangeli <aarcange@redhat.com>
Cc: Hugh Dickins <hughd@google.com>
Cc: Vlastimil Babka <vbabka@suse.cz>
Cc: Michael Ellerman <mpe@ellerman.id.au>
Cc: Nicholas Piggin <npiggin@gmail.com>
Cc: Mike Rapoport <rppt@kernel.org>
Cc: Anshuman Khandual <anshuman.khandual@arm.com>

David Hildenbrand (4):
  mm/mprotect: minor can_change_pte_writable() cleanups
  mm/huge_memory: try avoiding write faults when changing PMD protection
  mm/autonuma: use can_change_(pte|pmd)_writable() to replace savedwrite
  mm: remove unused savedwrite infrastructure

Nadav Amit (1):
  mm/mprotect: allow clean exclusive anon pages to be writable

 arch/powerpc/include/asm/book3s/64/pgtable.h | 80 +-------------------
 arch/powerpc/kvm/book3s_hv_rm_mmu.c          |  2 +-
 include/linux/mm.h                           |  2 +
 include/linux/pgtable.h                      | 24 ------
 mm/debug_vm_pgtable.c                        | 32 --------
 mm/huge_memory.c                             | 66 ++++++++++++----
 mm/ksm.c                                     |  9 +--
 mm/memory.c                                  | 19 ++++-
 mm/mprotect.c                                | 23 +++---
 9 files changed, 93 insertions(+), 164 deletions(-)

-- 
2.37.3


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2022-09-26 15:30 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-09-26 15:26 [PATCH RFC 0/5] mm/autonuma: replace savedwrite infrastructure David Hildenbrand
2022-09-26 15:26 ` [PATCH RFC 1/5] mm/mprotect: allow clean exclusive anon pages to be writable David Hildenbrand
2022-09-26 15:26 ` [PATCH RFC 2/5] mm/mprotect: minor can_change_pte_writable() cleanups David Hildenbrand
2022-09-26 15:26 ` [PATCH RFC 3/5] mm/huge_memory: try avoiding write faults when changing PMD protection David Hildenbrand
2022-09-26 15:26 ` [PATCH RFC 4/5] mm/autonuma: use can_change_(pte|pmd)_writable() to replace savedwrite David Hildenbrand
2022-09-26 15:26 ` [PATCH RFC 5/5] mm: remove unused savedwrite infrastructure David Hildenbrand

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).