source: proiecte/swift/trunk/lib/hoard-371/doc/index.html @ 176

Last change on this file since 176 was 176, checked in by (none), 14 years ago
  • imported repo from "guagal"
File size: 10.7 KB
Line 
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
2<html>
3<head>
4<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
5<meta content="Apache Forrest" name="Generator">
6<meta name="Forrest-version" content="0.6">
7<meta name="Forrest-skin-name" content="pelt">
8<title>The Hoard Multiprocessor Memory Allocator</title>
9<link type="text/css" href="skin/basic.css" rel="stylesheet">
10<link media="screen" type="text/css" href="skin/screen.css" rel="stylesheet">
11<link media="print" type="text/css" href="skin/print.css" rel="stylesheet">
12<link type="text/css" href="skin/profile.css" rel="stylesheet">
13<script src="skin/getBlank.js" language="javascript" type="text/javascript"></script><script src="skin/getMenu.js" language="javascript" type="text/javascript"></script><script src="skin/fontsize.js" language="javascript" type="text/javascript"></script>
14<link rel="shortcut icon" href="">
15</head>
16<body onload="init()">
17<script type="text/javascript">ndeSetTextSize();</script>
18<div id="top">
19<!--+
20    |header
21    +-->
22<div class="header">
23<!--+
24    |start group logo
25    +-->
26<div class="grouplogo">
27<a href="http://www.hoard.org"><img class="logoImage" alt="Hoard" src="images/hoard-logo.jpg" title="The Hoard Multiprocessor Memory Allocator"></a>
28</div>
29<!--+
30    |end group logo
31    +-->
32<!--+
33    |start Project Logo
34    +-->
35<div class="projectlogoA1">
36<a href=""></a>
37</div>
38<!--+
39    |end Project Logo
40    +-->
41<!--+
42    |start Tabs
43    +-->
44<ul id="tabs"></ul>
45<!--+
46    |end Tabs
47    +-->
48</div>
49</div>
50<div id="main">
51<div id="publishedStrip">
52<!--+
53    |start Subtabs
54    +-->
55<div id="level2tabs"></div>
56<!--+
57    |end Endtabs
58    +-->
59<script type="text/javascript" language="JavaScript"><!--
60              document.write("Published: " + document.lastModified);
61              //  --></script>
62</div>
63<!--+
64    |breadtrail
65    +-->
66<div class="breadtrail">
67             
68             &nbsp;
69           </div>
70<!--+
71    |start Menu, mainarea
72    +-->
73<!--+
74    |start Menu
75    +-->
76<div id="menu">
77<div onclick="SwitchMenu('menu_selected_1.1', 'skin/')" id="menu_selected_1.1Title" class="menutitle" style="background-image: url('skin/images/chapter_open.gif');">Table of Contents</div>
78<div id="menu_selected_1.1" class="selectedmenuitemgroup" style="display: block;">
79<div class="menupage">
80<div class="menupagetitle">Home</div>
81</div>
82<div class="menuitem">
83<a title="Download Hoard" href="download.html">Download</a>
84</div>
85<div class="menuitem">
86<a title="Screenshots" href="screenshot.html">Screenshots</a>
87</div>
88<div class="menuitem">
89<a title="How to Use Hoard" href="using.html">Using Hoard</a>
90</div>
91<div class="menuitem">
92<a title="How to Build Hoard" href="building.html">Building Hoard</a>
93</div>
94<div class="menuitem">
95<a title="FAQs" href="faqs.html">FAQs</a>
96</div>
97<div class="menuitem">
98<a title="License Info" href="licensing.html">Licensing Info</a>
99</div>
100</div>
101<div id="credit"></div>
102<div id="roundbottom">
103<img style="display: none" class="corner" height="15" width="15" alt="" src="skin/images/rc-b-l-15-1body-2menu-3menu.png"></div>
104<!--+
105  |alternative credits
106  +-->
107</div>
108<!--+
109    |end Menu
110    +-->
111<!--+
112    |start content
113    +-->
114<div id="content">
115<div id="skinconf-txtlink"></div>
116<h1>The Hoard Multiprocessor Memory Allocator</h1>
117<div id="minitoc-area">
118<ul class="minitoc">
119<li>
120<a href="#Why+Hoard%3F">Why Hoard?</a>
121<ul class="minitoc">
122<li>
123<a href="#Contention">Contention</a>
124</li>
125<li>
126<a href="#False+Sharing">False Sharing</a>
127</li>
128<li>
129<a href="#Blowup">Blowup</a>
130</li>
131</ul>
132</li>
133<li>
134<a href="#Press">Press</a>
135</li>
136<li>
137<a href="#Who%27s+Using+Hoard%3F">Who's Using Hoard?</a>
138</li>
139<li>
140<a href="#More+Information">More Information</a>
141</li>
142<li>
143<a href="#Technical+Information">Technical Information</a>
144</li>
145</ul>
146</div> 
147
148   
149<p class="quote">
150   ...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.
151   <em><a href="http://www.nerdbooks.com/item.php?id=0735615365">Debugging Applications for Microsoft .NET and Microsoft Windows</a>, Microsoft Press, 2003</em>
152   
153</p>
154
155<!--
156   <p class="quote">
157   <strong>hoard:</strong>
158To amass and put away (anything valuable) for preservation, security,
159or future use; to treasure up: esp. money or wealth.
160   <em>Oxford English Dictionary</em>
161   </p>
162-->
163
164 
165<p>
166The Hoard memory allocator is a fast, scalable, and memory-efficient
167memory allocator for shared-memory multiprocessors. It runs on a
168variety of platforms, including Linux, Solaris, and Windows. Hoard is
169a drop-in replacement for malloc(), etc. No change to your source is
170necessary. Just link it in or set just one environment variable (see
171<a href="using.html">Using Hoard</a> for more
172information). <strong>Hoard can dramatically improve the performance
173of multithreaded programs running on multiprocessors.</strong>
174
175
176 
177</p>
178
179 
180<a name="N1002C"></a><a name="Why+Hoard%3F"></a>
181<h2 class="boxed">Why Hoard?</h2>
182<div class="section">
183<p>
184There are a number of problems with existing memory allocators that make Hoard a better choice.
185</p>
186<a name="N10035"></a><a name="Contention"></a>
187<h3 class="boxed">Contention</h3>
188<p>
189Multithreaded programs often do not scale because the heap is a
190bottleneck. When multiple threads simultaneously allocate or
191deallocate memory from the allocator, the allocator will serialize
192them. Programs making intensive use of the allocator actually slow
193down as the number of processors increases. Your program may be
194allocation-intensive without you realizing it, for instance, if your
195program makes many calls to the C++ Standard Template Library (STL).
196        </p>
197<a name="N1003F"></a><a name="False+Sharing"></a>
198<h3 class="boxed">False Sharing</h3>
199<p>
200The allocator can cause other problems for multithreaded code. It can
201lead to <em>false sharing</em> in your application:
202threads on different CPUs can end up with memory in the same cache
203line, or chunk of memory. Accessing these falsely-shared cache lines
204is hundreds of times slower than accessing unshared cache lines.
205     </p>
206<a name="N1004C"></a><a name="Blowup"></a>
207<h3 class="boxed">Blowup</h3>
208<p>
209Multithreaded programs can also lead the allocator to blowup memory
210consumption. This effect can multiply the amount of memory needed to
211run your application by the number of CPUs on your machine: four CPUs
212could mean that you need four times as much memory. Hoard is a fast
213allocator that solves all of these problems.
214  </p>
215</div>
216
217
218<a name="N10057"></a><a name="Press"></a>
219<h2 class="boxed">Press</h2>
220<div class="section">
221<p>
222
223<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.
224</p>
225<p>
226
227<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.
228</p>
229</div>
230
231<!--
232  <section>
233  <title>How Do I Use Hoard?</title>
234  <p>
235Hoard 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.
236  </p>
237  </section>
238-->
239
240
241 
242<a name="N10072"></a><a name="Who%27s+Using+Hoard%3F"></a>
243<h2 class="boxed">Who's Using Hoard?</h2>
244<div class="section">
245<p>
246Companies 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>
247(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
248Typhoon and Twister servers), and <a href="http://www.reuters.com">Reuters</a>.
249</p>
250<p>
251Open source projects using Hoard include the Bayonne GNU telephony
252server, the <a href="http://supertech.lcs.mit.edu/cilk/">Cilk</a> parallel
253programming language, the <a href="http://www.cs.dartmouth.edu/research/DaSSF/index.html">Dartmouth
254Scalable Simulation Framework</a>, and the <a href="http://www.gnu.org/software/commoncpp/">GNU Common C++</a>
255system.
256  </p>
257<p>
258Hoard is also a part of several major Linux distributions, including Debian and Novell's SuSe.
259</p>
260</div>
261
262
263
264<a name="N100AA"></a><a name="More+Information"></a>
265<h2 class="boxed">More Information</h2>
266<div class="section">
267<p>
268The first place to look for Hoard-related information is at the Hoard
269web page, <a href="http://www.hoard.org">www.hoard.org</a>.
270</p>
271<p>
272There are two mailing lists you should join if you are a
273user of Hoard. If you are just interested in being informed of new
274releases, join the <a href="http://groups.yahoo.com/group/hoard-announce/">Hoard-Announce</a>
275list. For general Hoard discussion, join the <a href="http://groups.yahoo.com/group/hoard/">Hoard</a> mailing
276list. You can also search the archives of these lists.
277</p>
278</div>
279
280
281
282<a name="N100C3"></a><a name="Technical+Information"></a>
283<h2 class="boxed">Technical Information</h2>
284<div class="section">
285<p>
286For 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.
287</p>
288</div>
289
290 
291</div>
292<!--+
293    |end content
294    +-->
295<div class="clearboth">&nbsp;</div>
296</div>
297<div id="footer">
298<!--+
299    |start bottomstrip
300    +-->
301<div class="lastmodified">
302<script type="text/javascript"><!--
303document.write("Last Published: " + document.lastModified);
304//  --></script>
305</div>
306<div class="copyright">
307 Copyright &copy; 2005 Emery Berger.</div>
308<div id="logos">
309<a href="http://forrest.apache.org/"><img border="0" title="Built with Apache Forrest" alt="Built with Apache Forrest - logo" src="images/built-with-forrest-button.png" style="width: 88px;height: 31px;"></a>
310</div>
311<div id="feedback">
312    Send feedback about the website to:
313  <a id="feedbackto" href="mailto:emery@cs.umass.edu?subject=Feedback,index.html">emery@cs.umass.edu</a>
314</div>
315<!--+
316    |end bottomstrip
317    +-->
318</div>
319</body>
320</html>
Note: See TracBrowser for help on using the repository browser.