Hoard: A scalable memory allocator for multithreaded applications

Citation
Ed. Berger et al., Hoard: A scalable memory allocator for multithreaded applications, ACM SIGPL N, 35(11), 2000, pp. 117-128
Citations number
33
Categorie Soggetti
Computer Science & Engineering
Journal title
ACM SIGPLAN NOTICES
ISSN journal
15232867 → ACNP
Volume
35
Issue
11
Year of publication
2000
Pages
117 - 128
Database
ISI
SICI code
1523-2867(200011)35:11<117:HASMAF>2.0.ZU;2-B
Abstract
Parallel, multithreaded C and C++ programs such as web servers, database ma nagers, news servers, and scientific applications are becoming increasingly prevalent. For these applications, the memory allocator is often a bottlen eck that severely limits program performance and scalability on multiproces sor systems. Previous allocators suffer from problems that include poor per formance and scalability, and heap organizations that introduce false shari ng. Worse, many allocators exhibit a dramatic increase in memory consumptio n when confronted with a producer-consumer pattern of object allocation and freeing. This increase in memory consumption can range from a factor of P (the number of processors) to unbounded memory consumption. This paper introduces Hoard, a fast, highly scalable allocator that largely avoids false sharing and is memory efficient. Hoard is the first allocator to simultaneously solve the above problems. Hoard combines one global heap and per-processor heaps with a novel discipline that provably bounds memor y consumption and has very low synchronization costs in the common case. Ou r results on eleven programs demonstrate that Hoard yields low average frag mentation and improves overall program performance over the standard Solari s allocator by up to a factor of 60 on 14 processors, and up to a factor of 18 over the next best allocator we tested.