Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 23 Feb 2002 15:12:36 -0800 (PST)
From:      Matthew Dillon <dillon@apollo.backplane.com>
To:        Terry Lambert <tlambert2@mindspring.com>
Cc:        Alfred Perlstein <alfred@FreeBSD.ORG>, Bosko Milekic <bmilekic@unixdaemons.com>, Seigo Tanimura <tanimura@r.dl.itc.u-tokyo.ac.jp>, current@FreeBSD.ORG, John Baldwin <jhb@FreeBSD.ORG>
Subject:   Re: malloc_bucket() idea (was Re: How to fix malloc.)
Message-ID:  <200202232312.g1NNCaH54765@apollo.backplane.com>
References:  <200201051752.g05Hq3gG074525@silver.carrots.uucp.r.dl.itc.u-tokyo.ac.jp> <XFMail.020114020307.jhb@FreeBSD.org> <200201241022.g0OAMISM093913@faber.r.dl.itc.u-tokyo.ac.jp> <20020124024534.V13686@elvis.mu.org> <200202131739.g1DHdZT5023794@rina.r.dl.itc.u-tokyo.ac.jp> <200202190945.g1J9j9kg076110@rina.r.dl.itc.u-tokyo.ac.jp> <200202232051.g1NKpE741310@apollo.backplane.com> <20020223211449.GJ80761@elvis.mu.org> <200202232243.g1NMhZP49110@apollo.backplane.com> <3C78200E.EC89C4E1@mindspring.com>

next in thread | previous in thread | raw e-mail | index | archive | help

:OTOH, A per CPU bucket list means no bucket mtx would be necessary;
:without that, it's just replacing one type of contention for another,
:I think, until you start making mutex selection indeterminate.  8^(.
:
:Really, this delayed freeing idea is starting to get uglier than
:just going to per CPU pools...
:
:-- Terry

    Well, if we want to rewrite malloc() a per-cpu pool inside a critical
    section would not be that difficult.  The 'bucket' array would
    simply be placed in the per-cpu area.  However, with malloc() we still
    have a serious problem with the malloc_type structure statistics.  There
    would have to be per-cpu information for those as well.

    critical_enter() isn't much better then a mutex.  It can
    be optimized to get rid of the inline cli & sti however.  Actually, it
    can be optimized trivially for i386, all we have to do is check the
    critical nesting count from the interrupt code and set the 
    interrupts-disabled bit in the returned (supervisor mode) frame.

    critical_enter() and critical_exit() would then be nearly perfect.

					-Matt
					Matthew Dillon 
					<dillon@backplane.com>

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




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200202232312.g1NNCaH54765>