diff options
author | Wilco Dijkstra <wdijkstr@arm.com> | 2019-02-14 16:37:11 +0000 |
---|---|---|
committer | Wilco Dijkstra <wdijkstr@arm.com> | 2019-02-14 16:37:11 +0000 |
commit | 3904fd85d3fdf0573e9a1e12e32bcd8cb246f549 (patch) | |
tree | dd634a8a3a5c2fc316f203fafe64001f52e98172 | |
parent | 24ca04febef611ad942ad5ebe3a3c7011b10c550 (diff) | |
download | glibc-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-- | ChangeLog | 5 | ||||
-rw-r--r-- | benchtests/Makefile | 18 |
2 files changed, 18 insertions, 5 deletions
@@ -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 |