From d6742bfbd3ecadd2bde38ccbb2351bd5c19ede1d Mon Sep 17 00:00:00 2001 From: Jason Evans Date: Wed, 27 Aug 2008 02:00:53 +0000 Subject: Add thread-specific caching for small size classes, based on magazines. This caching allows for completely lock-free allocation/deallocation in the steady state, at the expense of likely increased memory use and fragmentation. Reduce the default number of arenas to 2*ncpus, since thread-specific caching typically reduces arena contention. Modify size class spacing to include ranges of 2^n-spaced, quantum-spaced, cacheline-spaced, and subpage-spaced size classes. The advantages are: fewer size classes, reduced false cacheline sharing, and reduced internal fragmentation for allocations that are slightly over 512, 1024, etc. Increase RUN_MAX_SMALL, in order to limit fragmentation for the subpage-spaced size classes. Add a size-->bin lookup table for small sizes to simplify translating sizes to size classes. Include a hard-coded constant table that is used unless custom size class spacing is specified at run time. Add the ability to disable tiny size classes at compile time via MALLOC_TINY. --- lib/libthr/thread/thr_exit.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'lib/libthr/thread') diff --git a/lib/libthr/thread/thr_exit.c b/lib/libthr/thread/thr_exit.c index 4b31a606137f..4e14311a7df3 100644 --- a/lib/libthr/thread/thr_exit.c +++ b/lib/libthr/thread/thr_exit.c @@ -36,6 +36,7 @@ #include #include "un-namespace.h" +#include "libc_private.h" #include "thr_private.h" void _pthread_exit(void *status); @@ -95,6 +96,9 @@ _pthread_exit(void *status) _thread_cleanupspecific(); } + /* Tell malloc that the thread is exiting. */ + _malloc_thread_cleanup(); + if (!_thr_isthreaded()) exit(0); -- cgit v1.3