]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Add malloc micro benchmark
authorWilco Dijkstra <wdijkstr@arm.com>
Thu, 14 Feb 2019 16:37:11 +0000 (16:37 +0000)
committerWilco Dijkstra <wdijkstr@arm.com>
Thu, 14 Feb 2019 16:37:11 +0000 (16:37 +0000)
Add a malloc micro benchmark to enable accurate testing of the
various paths in malloc and free.  The benchmark does a varying
number of allocations of a given block size, then frees them again.

It tests 3 different scenarios: single-threaded using main arena,
multi-threaded using thread-arena, main arena with SINGLE_THREAD_P
false.

* benchtests/Makefile: Add malloc-simple benchmark.
* benchtests/bench-malloc-simple.c: New benchmark.

ChangeLog
benchtests/Makefile

index 4a3ec3d559df4c50fc504ba29cc18fa2739af2dd..ab9f593a555cbef88f2782b63a468cf5cda85994 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2019-02-14  Wilco Dijkstra  <wdijkstr@arm.com>
+
+       * benchtests/Makefile: Add malloc-simple benchmark.
+       * benchtests/bench-malloc-simple.c: New benchmark.
+
 2019-02-14  Siddhesh Poyarekar  <siddhesh@sourceware.org>
 
        * benchtests/bench-memmove.c (do_one_test): Remove unused
index 3339f2c770e67b7d6b848820971fcee607128b83..d00993eca4650f68be2aedf98e8aa0e599d6c72d 100644 (file)
@@ -90,7 +90,7 @@ CFLAGS-bench-trunc.c += -fno-builtin
 CFLAGS-bench-truncf.c += -fno-builtin
 
 ifeq (${BENCHSET},)
-bench-malloc := malloc-thread
+bench-malloc := malloc-thread malloc-simple
 else
 bench-malloc := $(filter malloc-%,${BENCHSET})
 endif
@@ -98,7 +98,7 @@ endif
 $(addprefix $(objpfx)bench-,$(bench-math)): $(libm)
 $(addprefix $(objpfx)bench-,$(math-benchset)): $(libm)
 $(addprefix $(objpfx)bench-,$(bench-pthread)): $(shared-thread-library)
-$(objpfx)bench-malloc-thread: $(shared-thread-library)
+$(addprefix $(objpfx)bench-,$(bench-malloc)): $(shared-thread-library)
 
 \f
 
@@ -171,7 +171,7 @@ bench-clean:
 ifneq ($(strip ${BENCHSET}),)
 VALIDBENCHSETNAMES := bench-pthread bench-math bench-string string-benchset \
    wcsmbs-benchset stdlib-benchset stdio-common-benchset math-benchset \
-   malloc-thread
+   malloc-thread malloc-simple
 INVALIDBENCHSETNAMES := $(filter-out ${VALIDBENCHSETNAMES},${BENCHSET})
 ifneq (${INVALIDBENCHSETNAMES},)
 $(info The following values in BENCHSET are invalid: ${INVALIDBENCHSETNAMES})
@@ -200,10 +200,18 @@ bench-set: $(binaries-benchset)
 
 bench-malloc: $(binaries-bench-malloc)
        for run in $^; do \
+         echo "$${run}"; \
+         if [ `basename $${run}` = "bench-malloc-thread" ]; then \
                for thr in 1 8 16 32; do \
                        echo "Running $${run} $${thr}"; \
-         $(run-bench) $${thr} > $${run}-$${thr}.out; \
-         done;\
+                       $(run-bench) $${thr} > $${run}-$${thr}.out; \
+               done;\
+         else \
+               for thr in 8 16 32 64 128 256 512 1024 2048 4096; do \
+                 echo "Running $${run} $${thr}"; \
+                 $(run-bench) $${thr} > $${run}-$${thr}.out; \
+               done;\
+         fi;\
        done
 
 # Build and execute the benchmark functions.  This target generates JSON