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.
|
|
|