Click here for full text:
Fast Multiprocessor Memory Allocation and Garbage Collection
Keyword(s): garbage collection; memory allocation; multiprocessors; threads
Abstract: We extended our garbage collecting memory allocator to provide good performance for multi-threaded applications on multiprocessors. The basic design is similar to the approach previously pursued in . However, we concentrate on issues important to more common small-scale multiprocessors, and on specific issues not reported elsewhere. We argue that a reasonable level of garbage collector scalability can be achieved with relatively minor additions to the underlying collector code. Furthermore the scalable collector does not need to be appreciably slower on a uniprocessor. Since our collector can serve as a plug- in replacement for malloc/free, we have the opportunity to compare it to scalable malloc-free implementations, notably Hoard . Somewhat surprisingly, our collector significantly outperforms Hoard in some tests, a property that is mostly shared by the garbage collecting allocator in [ETY97]. We argue that garbage collectors currently require significantly less synchronization than explicit allocators, but that it may be possible to derive significantly faster explicit allocators from this observation. Speedy access to thread-local storage is a significant issue in the design of allocators that must conform to standard calling conventions. We present empirical evidence that at least in the presence of a garbage collector, this can often be accomplished faster in a thread-independent way than through the standard thread library facilities, casting some doubt on the utility of the latter.
Back to Index