Hoard memory allocator: Difference between revisions

Content deleted Content added
m rm whitespace
See also: annlink
 
(34 intermediate revisions by 28 users not shown)
Line 1:
{{short description|Memory allocator}}
{{Infobox Softwaresoftware
|name = Hoard
|logoauthor = Emery =Berger, [[Kathryn S. McKinley]], Robert D. Blumofe, Paul R. Wilson
|screenshotdeveloper = Emery Berger
|caption released = {{Start date|1999|09|29}}
|latest release version = 3.7.113
|collapsible =
|latest release date = {{Start date and age|20072019|051|251}}
|author = Emery Berger
|operating system = [[Unix-likeLinux]], [[MicrosoftOS WindowsX]], and[[Microsoft othersWindows]]
|developer = Emery Berger <!-- ; Martin Bachtold ; Trey Boudreau ; John Calcote ; Robert Fleischman ; Bo Granlund ; John Hickin ; Paul Larson ; Maged Michael ; Kevin Mills ; Ganesan Rajagopal ; Benoit Rignault -->
|released = {{Start date|199x (???)}} <!-- {{Start date|1998|08|01}} -->
|discontinued =
|latest release version = 3.7.1
|latest release date = {{Start date and age|2007|05|25}}
|latest preview version =
|latest preview date = <!-- {{Start date and age|YYYY|MM|DD}} -->
|frequently updated = no
|programming language =
|operating system = [[Unix-like]], [[Microsoft Windows]] and others
|platform = [[Cross-platform]]
|size =
|language = [[C++]]
|status = Active
|genre = [[Memory allocation]]
|license = [[GNU General PublicApache License|GPL]] v2 and another one for [[proprietary software]]
|website = http://www.{{URL|hoard.org/}}
}}
The '''Hoard memory allocator''', or '''Hoard''', is a [[memory allocation|memory allocator]] for [[Linux]], [[SolarisOS (operating system)|SolarisX]], and [[Microsoft Windows]] and other [[operating systems]]. Hoard is designed to be efficient when used by [[Multithreading (computer architecture)|multithreaded]] applications on [[multiprocessor]] computers. Hoard is distributed under the [[GPLApache License]], butversion can be purchased for [[proprietary software]]2.0.
 
The '''Hoard memory allocator''', or '''Hoard''', is a [[memory allocation|memory allocator]] for [[Linux]], [[Solaris (operating system)|Solaris]], [[Microsoft Windows]] and other [[operating systems]]. Hoard is designed to be efficient when used by [[multithreaded]] applications on [[multiprocessor]] computers. Hoard is distributed under the [[GPL]], but can be purchased for [[proprietary software]].
 
==History==
In 2000, its author [[Emery Berger]] benchmarked some famous memory allocators and stated Hoard improves the performance of [[multithreaded]] applications by providing fast, [[scalable]] [[memory management]] functions ([[malloc]] and [[Free (programming)|free]]). In particular, it reduces contention for the heap (the central data structure used in [[dynamic memory allocation]]) caused when multiple threads allocate or free memory, and avoids the [[false sharing]] that can be introduced by memory allocators. At the same time, Hoard has strict bounds on [[fragmentation (computer)|fragmentation]].<ref name=Berger2000>{{citeCite journalconference | doi = 10.1145/378993.379232| title = Hoard: A Scalable Memory Allocator for Multithreaded Applications| work = Proceedings of the ninth international conference on Architectural support for programming languages and operating systems| conference = [[International Conference on Architectural Support for Programming Languages and Operating Systems|ASPLOS]]-IX| pages = 117–128| date=November 2000 | last1 = Berger | first1 = E. D. | last2 = McKinley | first2 = K. S. |author2-link = Kathryn S. McKinley| last3 = Blumofe | first3 = R. D. | last4 = Wilson | first4 = P. R. | isbn = 1-58113-317-0| url = http://www.cs.umass.edu/~emery/pubs/berger-asplos2000.pdf| citeseerx = 10.1.1.1.4174}}</ref>
 
Hoard continues to be maintained and improved, and is in use by a number of open source and commercial projects.<ref>{{cite web |title=An alternative Memory Allocator for the standard glibc |date=2007-09-16 |url=http://ineluttabile.it/node/6 |archiveurl=https://web.archive.org/web/20111007180846/http://ineluttabile.it/node/6 |archivedate=2011-10-07}}</ref><ref>{{cite web |title=GNU Common C++ Downloading |url=http://www.gnutelephony.org/index.php?title=GNU_Common_C%2B%2B&oldid=1105#Downloading}}</ref>
In 2000, its author [[Emery Berger]] benchmarked some famous memory allocators and stated Hoard improves the performance of [[multithreaded]] applications by providing fast, [[scalable]] [[memory management]] functions ([[malloc]] and [[Free (programming)|free]]). In particular, it reduces contention for the heap (the central data structure used in [[dynamic memory allocation]]) caused when multiple threads allocate or free memory, and avoids the [[false sharing]] that can be introduced by memory allocators. At the same time, Hoard has strict bounds on [[fragmentation (computer)|fragmentation]]<ref name=Berger2000>{{cite journal
| author = Berger, E.D.
| coauthors = McKinley, K.S.; Blumofe, R.D.; Wilson, P.R.
| year = 2000
| title = Hoard: a scalable memory allocator for multithreaded applications
| journal = ACM SIGPLAN Notices
| volume = 35
| issue = 11
| pages = 117–128
| url = http://portal.acm.org/citation.cfm?id=356989.357000
| accessdate = 2008-01-06
| doi = 10.1145/356989.357000
}}</ref><ref>above PDF freely available at http://www.cs.umass.edu/~emery/hoard/asplos2000.pdf</ref>.
 
It has also inspired changes to other memory allocators such as the one in [[OS X]] since February 2008 (first released in [[Mac OS X Snow Leopard]]).<ref>{{cite web |title=I'm a Mac (or, "Emery Inside") |date=26 October 2010|url=http://emeryblogger.com/2010/10/26/im-a-mac-or-emery-inside/}}</ref><ref>{{cite web |title=A look at how malloc works on the Mac |url=http://www.cocoawithlove.com/2010/05/look-at-how-malloc-works-on-mac.html}}</ref>
In 2004, Michael Maged implemented a new memory allocator and benchmarked it with Hoard and some other famous memory allocators. He stated its new memory allocator is more efficient than Hoard<ref name=Maged2003>{{cite journal
| author = Maged M. Michael
| coauthors = Thomas, J. Waston
| year = 2004
| title = Scalable Lock-Free Dynamic Memory Allocation
| journal = ACM SIGPLAN Notices
| volume = 39
| issue = 6
| pages = 35-46
| url = http://portal.acm.org/citation.cfm?id=996841.996848
| accessdate =
| doi = 10.1145/996841.996848
}}</ref><ref>above PDF freely available at http://www.research.ibm.com/people/m/michael/pldi-2004.pdf</ref>. Then Michael Maged contributed to improve Hoard's quality<ref>See THANKS file in source code</ref>.
 
==See also==
Nowadays, Hoard is still maintained and improved and softwares rely on it<ref>[http://ineluttabile.it/node/6 Toffanin Mauro's blog] Commercial [[Linux distribution]]s may use '''Hoard''' instead of [[GNU libc]]</ref><ref>[http://www.gnutelephony.org/index.php/GNU_Common_C%2B%2B#Downloading_and_Documentation GNU Telephony] GNU Common C++ uses lib'''hoard'''</ref>.
{{Portal|Free and open-source software}}
*{{annotated link|C dynamic memory allocation}}
*{{annotated link|Manual memory management}}
*{{annotated link|Dynamic memory allocation}}
*{{annotated link|mimalloc}}
 
==References==
Line 66 ⟶ 36:
* [http://www.cs.umass.edu/~emery Emery Berger], Hoard's author and a professor at the [[University of Massachusetts Amherst]].
 
{{Memory management}}
 
{{DEFAULTSORT:Hoard Memory Allocator}}
[[Category:Memory management]]
[[Category:Memory management software]]