glibc/malloc
Cupertino Miranda cbfd798810 malloc: add tcache support for large chunk caching
Existing tcache implementation in glibc seems to focus in caching
smaller data size allocations, limiting the size of the allocation to
1KB.

This patch changes tcache implementation to allow to cache any chunk
size allocations.  The implementation adds extra bins (linked-lists)
which store chunks with different ranges of allocation sizes. Bin
selection is done in multiples in powers of 2 and chunks are inserted in
growing size ordering within the bin.  The last bin contains all other
sizes of allocations.

This patch although by default preserves the same implementation,
limitting caches to 1KB chunks, it now allows to increase the max size
for the cached chunks with the tunable glibc.malloc.tcache_max.

It also now verifies if chunk was mmapped, in which case __libc_free
will not add it to tcache.

Reviewed-by: Wilco Dijkstra  <Wilco.Dijkstra@arm.com>
2025-06-16 12:05:22 +00:00
..
Depend
Makefile malloc: Improved double free detection in the tcache 2025-05-12 11:58:30 +00:00
Versions
alloc_buffer_alloc_array.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
alloc_buffer_allocate.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
alloc_buffer_copy_bytes.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
alloc_buffer_copy_string.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
alloc_buffer_create_failure.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
arena.c malloc: Improve malloc initialization 2025-05-12 16:10:28 +00:00
dynarray-skeleton.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
dynarray.h Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
dynarray_at_failure.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
dynarray_emplace_enlarge.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
dynarray_finalize.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
dynarray_resize.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
dynarray_resize_clear.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
hooks.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
malloc-check.c malloc: Improve malloc initialization 2025-05-12 16:10:28 +00:00
malloc-debug.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
malloc-internal.h malloc: Improve malloc initialization 2025-05-12 16:10:28 +00:00
malloc.c malloc: add tcache support for large chunk caching 2025-06-16 12:05:22 +00:00
malloc.h Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
mallocbug.c
mcheck-impl.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
mcheck-init.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
mcheck.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
mcheck.h Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
memusage.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
memusage.sh Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
memusagestat.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
morecore.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
mtrace-impl.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
mtrace.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
mtrace.pl Update copyright dates not handled by scripts/update-copyrights 2025-01-01 11:22:09 -08:00
obstack.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
obstack.h Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
reallocarray.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
scratch_buffer_grow.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
scratch_buffer_grow_preserve.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
scratch_buffer_set_array_size.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
set-freeres.c elf: Merge __dl_libc_freemem into __rtld_libc_freeres 2025-02-02 20:10:09 +01:00
thread-freeres.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
tst-aligned-alloc-random-thread-cross.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
tst-aligned-alloc-random-thread.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
tst-aligned-alloc-random.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
tst-aligned-alloc-static.c
tst-aligned-alloc.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
tst-aligned_alloc-lib.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
tst-alloc_buffer.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
tst-calloc.c malloc: cleanup casts in tst-calloc 2025-01-25 05:34:05 +00:00
tst-compathooks-off.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
tst-compathooks-on.c
tst-dynarray-at-fail.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
tst-dynarray-fail.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
tst-dynarray-shared.h Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
tst-dynarray.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
tst-free-errno.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
tst-interpose-aux-nothread.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
tst-interpose-aux-thread.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
tst-interpose-aux.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
tst-interpose-aux.h Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
tst-interpose-nothread.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
tst-interpose-skeleton.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
tst-interpose-static-nothread.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
tst-interpose-static-thread.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
tst-interpose-thread.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
tst-mallinfo2.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
tst-malloc-alternate-path.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
tst-malloc-aux.h Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
tst-malloc-backtrace.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
tst-malloc-check.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
tst-malloc-fork-deadlock.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
tst-malloc-random.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
tst-malloc-stats-cancellation.c
tst-malloc-tcache-leak.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
tst-malloc-thread-exit.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
tst-malloc-thread-fail.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
tst-malloc-too-large.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
tst-malloc-usable-tunables.c
tst-malloc-usable.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
tst-malloc.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
tst-malloc_info.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
tst-mallocalign1.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
tst-mallocfork.c
tst-mallocfork2.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
tst-mallocfork3.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
tst-mallocstate.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
tst-mallopt.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
tst-memalign-2.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
tst-memalign-3.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
tst-memalign.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
tst-mtrace.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
tst-mtrace.sh Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
tst-mxfast.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
tst-obstack.c
tst-posix_memalign.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
tst-pvalloc-fortify.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
tst-pvalloc.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
tst-realloc.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
tst-reallocarray.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
tst-safe-linking.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
tst-scratch_buffer.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
tst-tcfree1.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
tst-tcfree2.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
tst-tcfree3.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
tst-tcfree4.c malloc: Improved double free detection in the tcache 2025-05-12 11:58:30 +00:00
tst-trim1.c
tst-valloc.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00