mirror of
https://github.com/torvalds/linux.git
synced 2026-11-06 21:58:01 +01:00
tools/mm: move gup_test from selftests/mm to tools/mm
Move tools/testing/selftests/mm/gup_test.c to tools/mm/gup_bench.c. This is the first step in separating its benchmarking and functional testing components. Later patches will make this a purely benchmarking tool and introduce a new functional selftest under selftests/mm. Include hugepage_settings.h directly instead of vm_util.h and use getpagesize() instead of psize(). Adjust the Makefiles in both locations and add gup_bench to tools/mm/.gitignore. Remove the gup_test invocations from run_vmtests.sh and update MAINTAINERS. Also remove the gup_test reference from Documentation/core-api/pin_user_pages.rst. The selftest added later in the series is standalone and does not need per command documentation here. Link: https://lore.kernel.org/20260918112234.195857-5-sarthak.sharma@arm.com Signed-off-by: Sarthak Sharma <sarthak.sharma@arm.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Suggested-by: David Hildenbrand (Arm) <david@kernel.org> Acked-by: Mike Rapoport (Microsoft) <rppt@kernel.org> Acked-by: David Hildenbrand (Arm) <david@kernel.org> Tested-by: Muhammad Usama Anjum <usama.anjum@arm.com> Cc: Anshuman Khandual <anshuman.khandual@arm.com> Cc: Baolin Wang <baolin.wang@linux.alibaba.com> Cc: Barry Song <baohua@kernel.org> Cc: Dev Jain <dev.jain@arm.com> Cc: Jason Gunthorpe <jgg@ziepe.ca> Cc: John Hubbard <jhubbard@nvidia.com> Cc: Jonathan Corbet <corbet@lwn.net> Cc: Lance Yang <lance.yang@linux.dev> Cc: Leon Romanovsky <leon@kernel.org> Cc: Liam R. Howlett <liam@infradead.org> Cc: Lorenzo Stoakes <ljs@kernel.org> Cc: Mark Brown <broonie@kernel.org> Cc: Michal Hocko <mhocko@suse.com> Cc: Nico Pache <npache@redhat.com> Cc: Peter Xu <peterx@redhat.com> Cc: Ryan Roberts <ryan.roberts@arm.com> Cc: Shuah Khan <shuah@kernel.org> Cc: Suren Baghdasaryan <surenb@google.com> Cc: Zi Yan <ziy@nvidia.com>
This commit is contained in:
parent
32449ec2cc
commit
f1e88f2886
|
|
@ -226,15 +226,6 @@ will be pinned longterm, and whose data will be accessed.
|
|||
|
||||
Unit testing
|
||||
============
|
||||
This file::
|
||||
|
||||
tools/testing/selftests/mm/gup_test.c
|
||||
|
||||
has the following new calls to exercise the new pin*() wrapper functions:
|
||||
|
||||
* PIN_FAST_BENCHMARK (./gup_test -a)
|
||||
* PIN_BASIC_TEST (./gup_test -b)
|
||||
|
||||
You can monitor how many total dma-pinned pages have been acquired and released
|
||||
since the system was booted, via two new /proc/vmstat entries: ::
|
||||
|
||||
|
|
|
|||
|
|
@ -17191,8 +17191,8 @@ T: git git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm
|
|||
F: mm/gup.c
|
||||
F: mm/gup_test.c
|
||||
F: mm/gup_test.h
|
||||
F: tools/mm/gup_bench.c
|
||||
F: tools/testing/selftests/mm/gup_longterm.c
|
||||
F: tools/testing/selftests/mm/gup_test.c
|
||||
|
||||
MEMORY MANAGEMENT - KSM (Kernel Samepage Merging)
|
||||
M: Andrew Morton <akpm@linux-foundation.org>
|
||||
|
|
|
|||
1
tools/mm/.gitignore
vendored
1
tools/mm/.gitignore
vendored
|
|
@ -3,3 +3,4 @@ slabinfo
|
|||
page-types
|
||||
page_owner_sort
|
||||
thp_swap_allocator_test
|
||||
gup_bench
|
||||
|
|
|
|||
|
|
@ -3,13 +3,15 @@
|
|||
#
|
||||
include ../scripts/Makefile.include
|
||||
|
||||
BUILD_TARGETS=page-types slabinfo page_owner_sort page_owner_filter thp_swap_allocator_test
|
||||
BUILD_TARGETS=page-types slabinfo page_owner_sort page_owner_filter
|
||||
BUILD_TARGETS += thp_swap_allocator_test gup_bench
|
||||
INSTALL_TARGETS = $(BUILD_TARGETS) thpmaps
|
||||
|
||||
LIB_DIR = ../lib/api
|
||||
LIBS = $(LIB_DIR)/libapi.a
|
||||
GUP_BENCH_OBJS = gup_bench.c ../lib/mm/hugepage_settings.c ../lib/mm/file_utils.c
|
||||
|
||||
CFLAGS += -Wall -Wextra -I../lib/ -pthread
|
||||
CFLAGS += -Wall -Wextra -I../lib/ -I../.. -pthread
|
||||
LDFLAGS += $(LIBS) -pthread
|
||||
|
||||
all: $(BUILD_TARGETS)
|
||||
|
|
@ -22,8 +24,11 @@ $(LIBS):
|
|||
%: %.c
|
||||
$(CC) $(CFLAGS) -o $@ $< $(LDFLAGS)
|
||||
|
||||
gup_bench: $(GUP_BENCH_OBJS) $(LIBS)
|
||||
$(CC) $(CFLAGS) -o $@ $(GUP_BENCH_OBJS) $(LDFLAGS)
|
||||
|
||||
clean:
|
||||
$(RM) page-types slabinfo page_owner_sort page_owner_filter thp_swap_allocator_test
|
||||
$(RM) page-types slabinfo page_owner_sort page_owner_filter thp_swap_allocator_test gup_bench
|
||||
make -C $(LIB_DIR) clean
|
||||
|
||||
sbindir ?= /usr/sbin
|
||||
|
|
|
|||
|
|
@ -12,8 +12,8 @@
|
|||
#include <pthread.h>
|
||||
#include <assert.h>
|
||||
#include <mm/gup_test.h>
|
||||
#include "kselftest.h"
|
||||
#include "vm_util.h"
|
||||
#include <mm/hugepage_settings.h>
|
||||
#include "../testing/selftests/kselftest.h"
|
||||
|
||||
#define MB (1UL << 20)
|
||||
|
||||
|
|
@ -140,7 +140,7 @@ int main(int argc, char **argv)
|
|||
case 'n':
|
||||
nr_pages = atoi(optarg);
|
||||
if (nr_pages < 0)
|
||||
nr_pages = size / psize();
|
||||
nr_pages = size / getpagesize();
|
||||
break;
|
||||
case 't':
|
||||
thp = 1;
|
||||
|
|
@ -254,7 +254,7 @@ int main(int argc, char **argv)
|
|||
madvise(p, size, MADV_NOHUGEPAGE);
|
||||
|
||||
/* Fault them in here, from user space. */
|
||||
for (; (unsigned long)p < gup.addr + size; p += psize())
|
||||
for (; (unsigned long)p < gup.addr + size; p += getpagesize())
|
||||
p[0] = 0;
|
||||
|
||||
tid = malloc(sizeof(pthread_t) * nthreads);
|
||||
|
|
@ -59,7 +59,6 @@ endif
|
|||
TEST_GEN_FILES = cow
|
||||
TEST_GEN_FILES += compaction_test
|
||||
TEST_GEN_FILES += gup_longterm
|
||||
TEST_GEN_FILES += gup_test
|
||||
TEST_GEN_FILES += hmm-tests
|
||||
TEST_GEN_FILES += hugetlb-madvise
|
||||
TEST_GEN_FILES += hugetlb-mmap
|
||||
|
|
|
|||
|
|
@ -148,30 +148,6 @@ test_selected() {
|
|||
fi
|
||||
}
|
||||
|
||||
run_gup_matrix() {
|
||||
# -t: thp=on, -T: thp=off, -H: hugetlb=on
|
||||
local hugetlb_mb=256
|
||||
|
||||
for huge in -t -T "-H -m $hugetlb_mb"; do
|
||||
# -u: gup-fast, -U: gup-basic, -a: pin-fast, -b: pin-basic, -L: pin-longterm
|
||||
for test_cmd in -u -U -a -b -L; do
|
||||
# -w: write=1, -W: write=0
|
||||
for write in -w -W; do
|
||||
# -S: shared
|
||||
for share in -S " "; do
|
||||
# -n: How many pages to fetch together? 512 is special
|
||||
# because it's default thp size (or 2M on x86), 123 to
|
||||
# just test partial gup when hit a huge in whatever form
|
||||
for num in "-n 1" "-n 512" "-n 123" "-n -1"; do
|
||||
CATEGORY="gup_test" run_test ./gup_test \
|
||||
$huge $test_cmd $write $share $num
|
||||
done
|
||||
done
|
||||
done
|
||||
done
|
||||
done
|
||||
}
|
||||
|
||||
# filter 64bit architectures
|
||||
ARCH64STR="arm64 mips64 parisc64 ppc64 ppc64le riscv64 s390x sparc64 x86_64"
|
||||
if [ -z "$ARCH" ]; then
|
||||
|
|
@ -293,18 +269,6 @@ fi
|
|||
|
||||
CATEGORY="mmap" run_test ./map_fixed_noreplace
|
||||
|
||||
if $RUN_ALL; then
|
||||
run_gup_matrix
|
||||
else
|
||||
# get_user_pages_fast() benchmark
|
||||
CATEGORY="gup_test" run_test ./gup_test -u -n 1
|
||||
CATEGORY="gup_test" run_test ./gup_test -u -n -1
|
||||
# pin_user_pages_fast() benchmark
|
||||
CATEGORY="gup_test" run_test ./gup_test -a -n 1
|
||||
CATEGORY="gup_test" run_test ./gup_test -a -n -1
|
||||
fi
|
||||
# Dump pages 0, 19, and 4096, using pin_user_pages:
|
||||
CATEGORY="gup_test" run_test ./gup_test -ct -F 0x1 0 19 0x1000
|
||||
CATEGORY="gup_test" run_test ./gup_longterm
|
||||
|
||||
CATEGORY="userfaultfd" run_test ./uffd-unit-tests
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user