Allocating memory in a lock-free manner
The potential of multiprocessor systems is frequently not fully realized by their system services. Certain synchronization methods, such as lock-based ones, may limit the parallelism. It is signi cant to see the impact of wait/lock-free synchronization design in key services for multiprocessor systems, such as the memory allocation service. E cient, scalable memory allocators for multithreaded applications in multiprocessor systems is a signi cant goal of recent research projects. We propose a lock-free memory allocator, to enhance the parallelism in the system. Its architecture is inspired by Hoard, a successful concurrent memory allocator, with a modular, scalable design that preserves scalability and helps avoiding false sharing and heap blowup. Within our e ort on designing appropriate lock-free algorithms for the synchronization in this system, we propose a new non-blocking data structure called at-sets, supporting conventional \internal" operations as well as \inter-object" operations, for moving elements between at-sets. We implemented the memory allocator in a set of multiprocessor systems (UMA Sun Enterprise 450, ccNUMA Origin 2000 and ccNUMA Origin 3800) and studied its behaviour. The results show that the good properties of Hoard w.r.t. false-sharing and heap-blowup are preserved, while the scalability properties are enhanced even further with the help of lock-free synchronization.