On 05.10.2007 [10:12:34 +1000], David Gibson wrote:
> On Thu, Oct 04, 2007 at 05:06:15PM -0700, Nishanth Aravamudan wrote:
> > On 05.10.2007 [09:37:06 +1000], David Gibson wrote:
> > > On Wed, Oct 03, 2007 at 09:43:39AM -0500, Mike Kistler wrote:
> > > > Thanks for the info.  Unfortunately,  I already have the code to
> > > > open and mmap a file in the hugetlbfs.  What I am looking for is an
> > > > allocator that will go on top of this with an explicit interface,
> > > > like huge_malloc(bytes).
> > > 
> > > Yeah, for that you'd need to look at some allocator library with a
> > > changable backend.  Heap Layers
> > > (http://www.cs.umass.edu/~emery/heaplayers.html) or Hoard
> > > (http://www.cs.umass.edu/~emery/hoard/index.html) perhaps?
> > 
> > Indeed, see below, but we specifically do not provide this
> > functionality (an interface into hugepage malloc).
> > 
> > > > My concern with sending *all* my mallocs to huge pages is that my
> > > > app has many mallocs will have no benefit from being satisfied from
> > > > large pages, and these could wind up fragmenting the large page
> > > > storage area to the point that the structures that really do need to
> > > > be in large pages won't fit there.
> > > 
> > > That doesn't sound all that likely, if put enough hugepages into the
> > > pool.  Worth a shot, surely, before deciding it won't work..
> > 
> > Just to clarify, libhugetlbfs doesn't technically override malloc()
> > itself. Or even provide an alternative malloc(). It simply notifies
> > glibc (via a function pointer) that we provide a source of memory for
> > dynamic allocations. So rather than going into arenas and all that,
> > glibc simply asks us for memory. From what I've seen, at least, this
> > means that as long as the so-far-allocated dynamic area is large enough,
> > glibc won't ask us for more hugepages to use. When the area needs to be
> > grown, we grow the hugetlb file that backs the heap. malloc() and brk()
> > transparently work the same way as before just the source of memory is
> > different.
> 
> Careful, malloc() will transparently be hugepage backed, brk() is a
> kernel call and will not.  brk() will either return normal pages, or
> simply fail, depending on linker layout and existing hugepage mappings
> (and arhcitecture).

I knew once I wrote a paragraph, I'd make a mistake. You're very right,
David.

Thanks,
Nish

-- 
Nishanth Aravamudan <[EMAIL PROTECTED]>
IBM Linux Technology Center

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
Libhugetlbfs-devel mailing list
Libhugetlbfs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/libhugetlbfs-devel

Reply via email to