The Hoard Multiprocessor Memory Allocator
by Emery Berger

"Hoard performs the fastest for multi-threaded code that does a lot of dynamic memory allocation and deallocation, and is therefore suitable for multi-processor environments." Solaris Developer Connection, August 2000  

hoard: (v.) To amass and put away (anything valuable)
for preservation, security, or future use;
to treasure up: esp. money or wealth.

(Oxford English Dictionary)

What's Hoard?

Hoard is a fast, scalable and memory-efficient allocator for multiprocessors. Hoard solves the heap contention problem caused when multiple threads call dynamic memory allocation functions like malloc() and free() (or new and delete). Hoard can dramatically improve the performance of multithreaded programs running on multiprocessors.

Download

Download Hoard (latest release: v2.1.0, Dec 24 2001) [NEWS, FAQs]. Hoard has been released under a modified version of the LGPL, so you can freely distribute code dynamically linked with Hoard.

Commercial licenses for Hoard are also available. Please send me e-mail for more information.

How Do I Use It?

Hoard is a drop-in replacement for malloc(), etc. No change to your source is necessary. Just link it in or set just one environment variable.

Press

Read Sun's article about Hoard on the Solaris Developer's Connection entitled A Comparison of Memory Allocators in Multiprocessors.

Users

Users of Hoard include AOL, Novell, British Telecom, Coyote Systems (for their BEMEngine product) and bCandid Corporation (for their Typhoon & Twister servers). Open source projects using Hoard include Ardour, the Bayonne GNU telephony server and the GNU Common C++ system.

Publications

Read Hoard: A Scalable Memory Allocator for Multithreaded Applications, by Emery D. Berger, Kathryn S. McKinley, Robert D. Blumofe, and Paul R. Wilson. The Ninth International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS-IX). Cambridge, MA, November 2000.
Powerpoint presentation

Questions

Visit the FAQs list. The Hoard mailing-list is a good place to look for answers to any questions you might have, and if you can't find answers there, mail me at emery@cs.utexas.edu.

Systems

Supported systems include:
* Windows NT/2000/XP * RedHat Linux 6.0 and above * Solaris 7 and above * IRIX * AIX

Speedups with Hoard

Multiple threads, random allocation and freeing; some objects allocated by one thread are freed by another.
Tests if the allocator avoids false sharing of heap objects.
Multiple threads allocating and freeing same-sized objects.

Mailing Lists

To keep informed about Hoard, subscribe to the Hoard-Announce mailing list.

For general Hoard discussion, subscribe to the Hoard mailing list.

The Hoard Memory Allocator, by Emery Berger Last updated May 11, 2002 Nedstat Basic - Free web site statistics