From: David Hildenbrand <david@redhat.com>
To: linux-kernel@vger.kernel.org
Cc: linux-mm@kvack.org, David Hildenbrand <david@redhat.com>,
Andrew Morton <akpm@linux-foundation.org>,
Shuah Khan <shuah@kernel.org>, Hugh Dickins <hughd@google.com>,
Vlastimil Babka <vbabka@suse.cz>, Peter Xu <peterx@redhat.com>,
Andrea Arcangeli <aarcange@redhat.com>,
"Matthew Wilcox (Oracle)" <willy@infradead.org>,
Jason Gunthorpe <jgg@nvidia.com>,
John Hubbard <jhubbard@nvidia.com>
Subject: [PATCH v2 0/9] mm/ksm: break_ksm() cleanups and fixes
Date: Fri, 21 Oct 2022 12:11:32 +0200 [thread overview]
Message-ID: <20221021101141.84170-1-david@redhat.com> (raw)
This series cleans up and fixes break_ksm(). In summary, we no longer
use fake write faults to break COW but instead FAULT_FLAG_UNSHARE. Further,
we move away from using follow_page() --- that we can hopefully remove
completely at one point --- and use new walk_page_range_vma() instead.
Fortunately, we can get rid of VM_FAULT_WRITE and FOLL_MIGRATION in common
code now.
Extend the existing ksm tests by an unmerge benchmark, and a some new
unmerge tests.
Add a selftest to measure MADV_UNMERGEABLE performance. In my setup
(AMD Ryzen 9 3900X), running the KSM selftest to test unmerge performance
on 2 GiB (taskset 0x8 ./ksm_tests -D -s 2048), this results in a
performance degradation of ~6% -- 7% (old: ~5250 MiB/s, new: ~4900 MiB/s).
I don't think we particularly care for now, but it's good to be aware
of the implication.
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Shuah Khan <shuah@kernel.org>
Cc: Hugh Dickins <hughd@google.com>
Cc: Vlastimil Babka <vbabka@suse.cz>
Cc: Peter Xu <peterx@redhat.com>
Cc: Andrea Arcangeli <aarcange@redhat.com>
Cc: "Matthew Wilcox (Oracle)" <willy@infradead.org>
Cc: Jason Gunthorpe <jgg@nvidia.com>
Cc: John Hubbard <jhubbard@nvidia.com>
v1 -> v2:
* "selftests/vm: add KSM unmerge tests"
-> Add new unmerge tests
* "mm/ksm: fix KSM COW breaking with userfaultfd-wp via FAULT_FLAG_UNSHARE"
-> Simplify patch description now that we have a selftest
* "mm/pagewalk: don't trigger test_walk() in walk_page_vma()"
-> Added
* "mm/pagewalk: add walk_page_range_vma()"
-> Don't call test_walk()
* "mm/ksm: convert break_ksm() to use walk_page_range_vma()"
-> Simplify and fix missing unlock, fix missing "static"
David Hildenbrand (9):
selftests/vm: add test to measure MADV_UNMERGEABLE performance
mm/ksm: simplify break_ksm() to not rely on VM_FAULT_WRITE
mm: remove VM_FAULT_WRITE
selftests/vm: add KSM unmerge tests
mm/ksm: fix KSM COW breaking with userfaultfd-wp via
FAULT_FLAG_UNSHARE
mm/pagewalk: don't trigger test_walk() in walk_page_vma()
mm/pagewalk: add walk_page_range_vma()
mm/ksm: convert break_ksm() to use walk_page_range_vma()
mm/gup: remove FOLL_MIGRATION
include/linux/mm.h | 1 -
include/linux/mm_types.h | 3 -
include/linux/pagewalk.h | 5 +
mm/gup.c | 55 +---
mm/huge_memory.c | 2 +-
mm/ksm.c | 78 +++--
mm/memory.c | 9 +-
mm/pagewalk.c | 27 +-
tools/testing/selftests/vm/Makefile | 2 +
.../selftests/vm/ksm_functional_tests.c | 279 ++++++++++++++++++
tools/testing/selftests/vm/ksm_tests.c | 76 ++++-
tools/testing/selftests/vm/run_vmtests.sh | 2 +
tools/testing/selftests/vm/vm_util.c | 10 +
tools/testing/selftests/vm/vm_util.h | 1 +
14 files changed, 456 insertions(+), 94 deletions(-)
create mode 100644 tools/testing/selftests/vm/ksm_functional_tests.c
base-commit: 9abf2313adc1ca1b6180c508c25f22f9395cc780
--
2.37.3
next reply other threads:[~2022-10-21 10:12 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-10-21 10:11 David Hildenbrand [this message]
2022-10-21 10:11 ` [PATCH v2 1/9] selftests/vm: add test to measure MADV_UNMERGEABLE performance David Hildenbrand
2022-10-21 10:11 ` [PATCH v2 2/9] mm/ksm: simplify break_ksm() to not rely on VM_FAULT_WRITE David Hildenbrand
2022-10-21 10:11 ` [PATCH v2 3/9] mm: remove VM_FAULT_WRITE David Hildenbrand
2022-10-21 10:11 ` [PATCH v2 4/9] selftests/vm: add KSM unmerge tests David Hildenbrand
2022-10-21 10:11 ` [PATCH v2 5/9] mm/ksm: fix KSM COW breaking with userfaultfd-wp via FAULT_FLAG_UNSHARE David Hildenbrand
2022-10-21 10:11 ` [PATCH v2 6/9] mm/pagewalk: don't trigger test_walk() in walk_page_vma() David Hildenbrand
2022-10-21 10:11 ` [PATCH v2 7/9] mm/pagewalk: add walk_page_range_vma() David Hildenbrand
2022-10-21 10:11 ` [PATCH v2 8/9] mm/ksm: convert break_ksm() to use walk_page_range_vma() David Hildenbrand
2022-10-21 10:11 ` [PATCH v2 9/9] mm/gup: remove FOLL_MIGRATION David Hildenbrand
2022-10-21 19:57 ` [PATCH v2 0/9] mm/ksm: break_ksm() cleanups and fixes Andrew Morton
2022-10-24 13:32 ` 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=20221021101141.84170-1-david@redhat.com \
--to=david@redhat.com \
--cc=aarcange@redhat.com \
--cc=akpm@linux-foundation.org \
--cc=hughd@google.com \
--cc=jgg@nvidia.com \
--cc=jhubbard@nvidia.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=peterx@redhat.com \
--cc=shuah@kernel.org \
--cc=vbabka@suse.cz \
--cc=willy@infradead.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 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.