mirror of
git://sourceware.org/git/glibc.git
synced 2024-11-21 01:12:26 +08:00
e4bc326dbb
In the per-thread arenas we apply trim_threshold-based checks to the extra space between the pad and the top_area. This isn't quite accurate and instead we should be harmonizing with the way in which trim_treshold is applied everywhere else like sysrtim and _int_free. The trimming check should be based on the size of the top chunk and only the size of the top chunk. The following patch harmonizes the trimming and make it consistent for the main arena and thread arenas. In the old code a large padding request might have meant that trimming was not triggered. Now trimming is considered first based on the chunk, then the pad is subtracted, and the remainder trimmed. This is how all the other trimmings operate. I didn't measure the performance difference of this change because it corrects what I consider to be a behavioural anomaly. We'll need some profile driven optimization to make this code better, and even there Ondrej and others have better ideas on how to speedup malloc. Tested on x86_64 with no regressions. Already reviewed by Siddhesh Poyarekar and Mel Gorman here and discussed here: https://sourceware.org/ml/libc-alpha/2015-05/msg00002.html |
||
---|---|---|
.. | ||
arena.c | ||
Depend | ||
hooks.c | ||
Makefile | ||
malloc.c | ||
malloc.h | ||
mallocbug.c | ||
mcheck-init.c | ||
mcheck.c | ||
mcheck.h | ||
memusage.c | ||
memusage.sh | ||
memusagestat.c | ||
morecore.c | ||
mtrace.c | ||
mtrace.pl | ||
obstack.c | ||
obstack.h | ||
scratch_buffer_grow_preserve.c | ||
scratch_buffer_grow.c | ||
scratch_buffer_set_array_size.c | ||
set-freeres.c | ||
thread-freeres.c | ||
tst-calloc.c | ||
tst-malloc-backtrace.c | ||
tst-malloc-usable.c | ||
tst-malloc.c | ||
tst-mallocfork.c | ||
tst-mallocstate.c | ||
tst-mallopt.c | ||
tst-mcheck.c | ||
tst-memalign.c | ||
tst-mtrace.c | ||
tst-mtrace.sh | ||
tst-obstack.c | ||
tst-posix_memalign.c | ||
tst-pvalloc.c | ||
tst-realloc.c | ||
tst-scratch_buffer.c | ||
tst-trim1.c | ||
tst-valloc.c | ||
Versions |