[v6,3/3] malloc: add testing for large tcache support.

Message ID 20250415134920.287189-4-cupertino.miranda@oracle.com (mailing list archive)
State New
Headers
Series malloc: tcache improvements |

Checks

Context Check Description
redhat-pt-bot/TryBot-apply_patch success Patch applied to master at the time it was sent
linaro-tcwg-bot/tcwg_glibc_build--master-arm success Build passed
redhat-pt-bot/TryBot-32bit success Build for i686
linaro-tcwg-bot/tcwg_glibc_check--master-arm success Test passed
linaro-tcwg-bot/tcwg_glibc_build--master-aarch64 fail Patch failed to apply

Commit Message

Cupertino Miranda April 15, 2025, 1:49 p.m. UTC
  This patch adds large tcache support tests by re-executing
all of the malloc tests, using the tunables:
  glibc.malloc.tcache_max=1048576
  glibc.mallc.tcache_max_large_capacity=4194304
Test names are prefixed with "largetcache".
---
 Rules           | 19 +++++++++++++++++++
 malloc/Makefile | 15 +++++++++++++++
 2 files changed, 34 insertions(+)
  

Patch

diff --git a/Rules b/Rules
index ae23070845..0f8ff9e61b 100644
--- a/Rules
+++ b/Rules
@@ -153,6 +153,7 @@  tests: $(addprefix $(objpfx),$(filter-out $(tests-unsupported), \
 					  $(tests-malloc-check:%=%-malloc-check) \
 					  $(tests-malloc-hugetlb1:%=%-malloc-hugetlb1) \
 					  $(tests-malloc-hugetlb2:%=%-malloc-hugetlb2)) \
+					  $(tests-malloc-largetcache:%=%-malloc-largetcache)) \
 			     $(test-srcs)) $(tests-special) \
 			     $(tests-printers-programs)
 xtests: tests $(xtests-special)
@@ -165,6 +166,7 @@  tests: $(tests:%=$(objpfx)%.out) $(tests-internal:%=$(objpfx)%.out) \
        $(tests-malloc-check:%=$(objpfx)%-malloc-check.out) \
        $(tests-malloc-hugetlb1:%=$(objpfx)%-malloc-hugetlb1.out) \
        $(tests-malloc-hugetlb2:%=$(objpfx)%-malloc-hugetlb2.out) \
+       $(tests-malloc-largetcache:%=$(objpfx)%-malloc-largetcache.out) \
        $(tests-special) $(tests-printers-out)
 xtests: tests $(xtests:%=$(objpfx)%.out) $(xtests-special)
 endif # $(run-built-tests) != no
@@ -179,6 +181,7 @@  tests-expected = $(tests) $(tests-internal) $(tests-printers) \
 	$(tests-container) $(tests-malloc-check:%=%-malloc-check) \
 	$(tests-malloc-hugetlb1:%=%-malloc-hugetlb1) \
 	$(tests-malloc-hugetlb2:%=%-malloc-hugetlb2) \
+	$(tests-malloc-largetcache:%=%-malloc-largetcache) \
 	$(tests-mcheck:%=%-mcheck)
 xtests-expected = $(xtests)
 endif # $(run-built-tests) != no
@@ -211,6 +214,7 @@  binaries-mcheck-tests = $(tests-mcheck:%=%-mcheck)
 binaries-malloc-check-tests = $(tests-malloc-check:%=%-malloc-check)
 binaries-malloc-hugetlb1-tests = $(tests-malloc-hugetlb1:%=%-malloc-hugetlb1)
 binaries-malloc-hugetlb2-tests = $(tests-malloc-hugetlb2:%=%-malloc-hugetlb2)
+binaries-malloc-largetcache-tests = $(tests-malloc-largetcache:%=%-malloc-largetcache)
 else
 binaries-all-notests =
 binaries-all-tests = $(tests) $(tests-internal) $(xtests) $(test-srcs)
@@ -224,6 +228,7 @@  binaries-mcheck-tests =
 binaries-malloc-check-tests =
 binaries-malloc-hugetlb1-tests =
 binaries-malloc-hugetlb2-tests =
+binaries-malloc-largetcache-tests =
 endif
 
 binaries-pie = $(binaries-pie-tests) $(binaries-pie-notests)
@@ -290,6 +295,14 @@  $(addprefix $(objpfx),$(binaries-malloc-hugetlb2-tests)): %-malloc-hugetlb2: %.o
 	$(+link-tests)
 endif
 
+ifneq "$(strip $(binaries-malloc-largetcache-tests))" ""
+$(addprefix $(objpfx),$(binaries-malloc-largetcache-tests)): %-malloc-largetcache: %.o \
+  $(link-extra-libs-tests) \
+  $(sort $(filter $(common-objpfx)lib%,$(link-libc))) \
+  $(addprefix $(csu-objpfx),start.o) $(+preinit) $(+postinit)
+	$(+link-tests)
+endif
+
 ifneq "$(strip $(binaries-pie-tests))" ""
 $(addprefix $(objpfx),$(binaries-pie-tests)): %: %.o \
   $(link-extra-libs-tests) \
@@ -339,6 +352,12 @@  $(1)-malloc-hugetlb2-ENV += GLIBC_TUNABLES=glibc.malloc.hugetlb=2
 endef
 $(foreach t,$(tests-malloc-hugetlb2),$(eval $(call malloc-hugetlb2-ENVS,$(t))))
 
+# All malloc-largetcache tests will be run with GLIBC_TUNABLE=glibc.malloc.tcache_max=1048576:glibc.mallc.tcache_max_large_capacity=4194304
+define malloc-largetcache-ENVS
+$(1)-malloc-largetcache-ENV += GLIBC_TUNABLES=glibc.malloc.tcache_max=1048576:glibc.mallc.tcache_max_large_capacity=4194304
+endef
+$(foreach t,$(tests-malloc-largetcache),$(eval $(call malloc-largetcache-ENVS,$(t))))
+
 # mcheck tests need the debug DSO to support -lmcheck.
 define mcheck-ENVS
 $(1)-mcheck-ENV = LD_PRELOAD=$(common-objpfx)/malloc/libc_malloc_debug.so
diff --git a/malloc/Makefile b/malloc/Makefile
index e2b2c1ae1b..a62252a489 100644
--- a/malloc/Makefile
+++ b/malloc/Makefile
@@ -147,6 +147,21 @@  tests-malloc-hugetlb1 = \
 tests-malloc-hugetlb2 = \
 	$(filter-out $(tests-exclude-hugetlb2), $(tests))
 
+tests-exclude-largetcache = \
+  tst-compathooks-off \
+  tst-compathooks-on \
+  tst-interpose-thread \
+  tst-interpose-nothread \
+  tst-interpose-static-nothread \
+  tst-interpose-static-thread \
+  tst-mallocstate \
+  tst-malloc-backtrace \
+  tst-malloc-usable \
+  tst-malloc-usable-tunables
+
+tests-malloc-largetcache = \
+	$(filter-out $(tests-exclude-largetcache), $(tests))
+
 # -lmcheck needs __malloc_initialize_hook, which was deprecated in 2.24.
 ifeq ($(have-GLIBC_2.23)$(build-shared),yesyes)
 # Tests that don't play well with mcheck.  They are either bugs in mcheck or