source: proiecte/swift/trunk/lib/hoard-371/doc/src/documentation/content/xdocs/index.xml @ 176

Last change on this file since 176 was 176, checked in by (none), 14 years ago
  • imported repo from "guagal"
File size: 7.2 KB
Line 
1<?xml version="1.0" encoding="UTF-8"?>
2<!--
3  Copyright 2002-2004 The Apache Software Foundation
4
5  Licensed under the Apache License, Version 2.0 (the "License");
6  you may not use this file except in compliance with the License.
7  You may obtain a copy of the License at
8
9      http://www.apache.org/licenses/LICENSE-2.0
10
11  Unless required by applicable law or agreed to in writing, software
12  distributed under the License is distributed on an "AS IS" BASIS,
13  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  See the License for the specific language governing permissions and
15  limitations under the License.
16-->
17<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V2.0//EN" "http://forrest.apache.org/dtd/document-v20.dtd">
18<document> 
19  <header> 
20    <title>The Hoard Multiprocessor Memory Allocator</title> 
21  </header> 
22
23<!--
24  <articleinfo>
25    <author>
26        <firstname>Emery</firstname>
27        <surname>Berger</surname>
28        <affiliation>University of Massachusetts Amherst</affiliation>
29        <street>Department of Computer Science</street>
30        <city>Amherst</city>
31        <state>Massachusetts</state>
32        <country>USA</country>
33        <email>emery@cs.umass.edu</email>
34    </author>
35    <pubdate>2004-12-08</pubdate>
36    <copyright>
37        <year>2004</year>
38        <holder role="mailto:emery@cs.umass.edu">Emery Berger</holder>
39    </copyright>
40    <abstract>
41       Documentation for the Hoard scalable memory allocator, including build and usage directions for several platforms.
42    </abstract>
43  </articleinfo>
44-->
45
46  <body> 
47
48   <p class="quote">
49   ...if you'll be running on multiprocessor machines, ... <strong>use <a href="http://www.cs.umass.edu/~emery">Emery Berger</a>'s excellent Hoard multiprocessor memory management code</strong>. It's a drop-in replacement for the C and C++ memory routines and is very fast on multiprocessor machines.
50   <em><a href="http://www.nerdbooks.com/item.php?id=0735615365">Debugging Applications for Microsoft .NET and Microsoft Windows</a>, Microsoft Press, 2003</em>
51   </p>
52
53<!--
54   <p class="quote">
55   <strong>hoard:</strong>
56To amass and put away (anything valuable) for preservation, security,
57or future use; to treasure up: esp. money or wealth.
58   <em>Oxford English Dictionary</em>
59   </p>
60-->
61
62  <p>
63The Hoard memory allocator is a fast, scalable, and memory-efficient
64memory allocator for shared-memory multiprocessors. It runs on a
65variety of platforms, including Linux, Solaris, and Windows. Hoard is
66a drop-in replacement for malloc(), etc. No change to your source is
67necessary. Just link it in or set just one environment variable (see
68<a href="using.html">Using Hoard</a> for more
69information). <strong>Hoard can dramatically improve the performance
70of multithreaded programs running on multiprocessors.</strong>
71
72
73  </p>
74
75  <section>
76     <title>Why Hoard?</title>
77
78<p>
79There are a number of problems with existing memory allocators that make Hoard a better choice.
80</p>
81
82    <section>
83        <title>Contention</title>
84        <p>
85Multithreaded programs often do not scale because the heap is a
86bottleneck. When multiple threads simultaneously allocate or
87deallocate memory from the allocator, the allocator will serialize
88them. Programs making intensive use of the allocator actually slow
89down as the number of processors increases. Your program may be
90allocation-intensive without you realizing it, for instance, if your
91program makes many calls to the C++ Standard Template Library (STL).
92        </p>
93     </section>
94     <section>
95     <title>False Sharing</title>
96     <p>
97The allocator can cause other problems for multithreaded code. It can
98lead to <em>false sharing</em> in your application:
99threads on different CPUs can end up with memory in the same cache
100line, or chunk of memory. Accessing these falsely-shared cache lines
101is hundreds of times slower than accessing unshared cache lines.
102     </p>
103  </section>
104  <section>
105  <title>Blowup</title>
106  <p>
107Multithreaded programs can also lead the allocator to blowup memory
108consumption. This effect can multiply the amount of memory needed to
109run your application by the number of CPUs on your machine: four CPUs
110could mean that you need four times as much memory. Hoard is a fast
111allocator that solves all of these problems.
112  </p>
113  </section>
114  </section>
115
116<section>
117<title>Press</title>
118
119<p>
120<a href="http://www.intel.com/cd/ids/developer/asmo-na/eng/dc/xeon/43893.htm?page=4"><strong>Intel</strong> highlights the benefits of using Hoard</a> (a previous, slower version) on a 4-way Xeon system.
121</p>
122
123<p>
124<a href="http://developers.sun.com/solaris/articles/multiproc/multiproc.html"><strong>Sun</strong> concludes that Hoard is more space-efficient</a> than their own allocators.
125</p>
126
127</section>
128
129<!--
130  <section>
131  <title>How Do I Use Hoard?</title>
132  <p>
133Hoard 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. See <a href="using.html">Using Hoard</a> for more information.
134  </p>
135  </section>
136-->
137
138
139  <section>
140  <title>Who's Using Hoard?</title>
141  <p>
142Companies using Hoard in their products and servers include <a href="http://www.aol.com">AOL</a>, <a href="http://www.bt.com">British Telecom</a>, <a href="http://www.businessobjects.com">Business Objects</a>
143(formerly Crystal Decisions), <a href="http://www.entrust.com">Entrust</a>, <a href="http://www.novell.com">Novell</a>, <a href="http://www.openwave.com">OpenWave Systems</a> (for their
144Typhoon and Twister servers), and <a href="http://www.reuters.com">Reuters</a>.
145</p>
146
147<p>
148Open source projects using Hoard include the Bayonne GNU telephony
149server, the <a href="http://supertech.lcs.mit.edu/cilk/">Cilk</a> parallel
150programming language, the <a href="http://www.cs.dartmouth.edu/research/DaSSF/index.html">Dartmouth
151Scalable Simulation Framework</a>, and the <a href="http://www.gnu.org/software/commoncpp/">GNU Common C++</a>
152system.
153  </p>
154
155<p>
156Hoard is also a part of several major Linux distributions, including Debian and Novell's SuSe.
157</p>
158  </section>
159
160
161<section>
162<title>More Information</title>
163<p>
164The first place to look for Hoard-related information is at the Hoard
165web page, <a href="http://www.hoard.org">www.hoard.org</a>.
166</p>
167
168<p>
169There are two mailing lists you should join if you are a
170user of Hoard. If you are just interested in being informed of new
171releases, join the <a
172href="http://groups.yahoo.com/group/hoard-announce/">Hoard-Announce</a>
173list. For general Hoard discussion, join the <a
174href="http://groups.yahoo.com/group/hoard/">Hoard</a> mailing
175list. You can also search the archives of these lists.
176</p>
177</section>
178
179
180<section>
181<title>Technical Information</title>
182<p>
183For technical details of a previous version of Hoard, read <a href="http://www.cs.umass.edu/~emery/hoard/asplos2000.pdf">Hoard: A Scalable Memory Allocator for Multithreaded Applications</a>, 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.
184</p>
185</section>
186
187  </body>
188</document>
Note: See TracBrowser for help on using the repository browser.