Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 09 Dec 1999 11:24:13 -0600
From:      Emery Berger <emery@cs.utexas.edu>
To:        freebsd-hackers@FreeBSD.ORG
Cc:        Rayson Ho <raysonlogin@yahoo.com>
Subject:   Re: Faster Malloc
Message-ID:  <384FE5BD.8C0B4A88@cs.utexas.edu>

next in thread | raw e-mail | index | archive | help
Alfred Perlstein <bright@wintelcom.net> wrote:

(regarding Hoard: <http://www.cs.utexas.edu/users/emery/hoard>)

> This allocator is pretty much what the Dynix allocator is, it wouldn't be
> difficult to clean-room implement this with a BSD license.
>
> They should have given credit to Dynix or at least Uresh Vahalia
> (discussed on page 390 of his book Unix Internals section 12.9).

Hi all,

The DYNIX kernel allocator was by McKenney and Slingwine, and I'll be
citing them in a revised version of the paper.

While there are a number of differences between my allocator (Hoard) and
theirs, the most important are locality related. I'll just bring up one
here: false sharing. Using the McKenney & Slingwine allocator (or the
new Cilk allocator, discussed in my paper), a cache line can end up
distributed across every CPU's free list and repeatedly re-used. This
happens because freed blocks are placed back on a CPU's own freelist.
This effect has been observed in practice and can dramatically worsen
application performance.

Hoard prevents this effect. Each superblock is owned by exactly one
processor. When processor A free()'s a block from another CPU's
superblock, it is put back in the superblock, and so will not be re-used
by processor A's next malloc().

Regards,
-- Emery

--
Emery Berger                           | Parallel Programming
emery@cs.utexas.edu                    | & Multiprogramming MP Groups 
<http://www.cs.utexas.edu/users/emery>; | University of Texas at Austin


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?384FE5BD.8C0B4A88>