Hoard: A Scalable Memory Allocator for Multithreaded Applications Ý £ £ Emery D. Berger£ Kathryn S. McKinley Robert D. Blumofe Paul R. Wilson Ý £ Department of Computer Sciences Department of Computer Science The University of Texas at Austin University of Massachusetts Austin, Texas 78712 Amherst, Massachusetts 01003 g femery, rdb, wilson @cs.utexas.edu
[email protected] ABSTRACT servers. Many of these applications make intensive use of dynamic Parallel, multithreaded C and C++ programs such as web servers, memory allocation. Unfortunately, the memory allocator is often a database managers, news servers, and scientific applications are be- bottleneck that severely limits program scalability on multiproces- coming increasingly prevalent. For these applications, the memory sor systems [21]. Existing serial memory allocators do not scale allocator is often a bottleneck that severely limits program perfor- well for multithreaded applications, and existing concurrent allo- mance and scalability on multiprocessor systems. Previous alloca- cators do not provide one or more of the following features, all of tors suffer from problems that include poor performance and scal- which are needed in order to attain scalable and memory-efficient ability, and heap organizations that introduce false sharing. Worse, allocator performance: many allocators exhibit a dramatic increase in memory consump- Speed. A memory allocator should perform memory operations tion when confronted with a producer-consumer pattern of object (i.e., malloc and free) about as fast as a state-of-the-art se- allocation and freeing. This increase in memory consumption can rial memory allocator. This feature guarantees good allocator range from a factor of È (the number of processors) to unbounded performance even when a multithreaded program executes memory consumption.