aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWilco Dijkstra <wdijkstr@arm.com>2019-02-14 16:37:11 +0000
committerWilco Dijkstra <wdijkstr@arm.com>2019-02-14 16:37:11 +0000
commit3904fd85d3fdf0573e9a1e12e32bcd8cb246f549 (patch)
treedd634a8a3a5c2fc316f203fafe64001f52e98172
parent24ca04febef611ad942ad5ebe3a3c7011b10c550 (diff)
downloadglibc-3904fd85d3fdf0573e9a1e12e32bcd8cb246f549.zip
glibc-3904fd85d3fdf0573e9a1e12e32bcd8cb246f549.tar.gz
glibc-3904fd85d3fdf0573e9a1e12e32bcd8cb246f549.tar.bz2
Add malloc micro benchmark
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.
-rw-r--r--ChangeLog5
-rw-r--r--benchtests/Makefile18
2 files changed, 18 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index 4a3ec3d..ab9f593 100644
--- 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
diff --git a/benchtests/Makefile b/benchtests/Makefile
index 3339f2c..d00993e 100644
--- a/benchtests/Makefile
+++ b/benchtests/Makefile
@@ -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)
@@ -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