diff options
author | John Dyson <dyson@FreeBSD.org> | 1996-05-18 22:33:13 +0000 |
---|---|---|
committer | John Dyson <dyson@FreeBSD.org> | 1996-05-18 22:33:13 +0000 |
commit | 14bf02f8f44e0f9a102f88f3427e02fc9749073f (patch) | |
tree | dbf6eff759d3415dc087510db3e393a3d01f9ef2 /sys/kern/kern_malloc.c | |
parent | 9957f860967a72a01b890c6f40b2c3df4d5e05c3 (diff) | |
download | src-14bf02f8f44e0f9a102f88f3427e02fc9749073f.tar.gz src-14bf02f8f44e0f9a102f88f3427e02fc9749073f.zip |
Minor performance improvement to kern_malloc.c that increases the
probability of reuse of recently freed memory. This improves cache
hit stats on cached memory, and improves at least fork speed consistancy.
Notes
Notes:
svn path=/head/; revision=15817
Diffstat (limited to 'sys/kern/kern_malloc.c')
-rw-r--r-- | sys/kern/kern_malloc.c | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/sys/kern/kern_malloc.c b/sys/kern/kern_malloc.c index b348a3cbdd67..5375d6dde8c6 100644 --- a/sys/kern/kern_malloc.c +++ b/sys/kern/kern_malloc.c @@ -31,7 +31,7 @@ * SUCH DAMAGE. * * @(#)kern_malloc.c 8.3 (Berkeley) 1/4/94 - * $Id: kern_malloc.c,v 1.21 1996/05/02 14:20:20 phk Exp $ + * $Id: kern_malloc.c,v 1.22 1996/05/10 19:28:48 wollman Exp $ */ #include <sys/param.h> @@ -351,12 +351,28 @@ free(addr, type) wakeup((caddr_t)ksp); ksp->ks_inuse--; #endif +#ifdef OLD_MALLOC_MEMORY_POLICY if (kbp->kb_next == NULL) kbp->kb_next = addr; else ((struct freelist *)kbp->kb_last)->next = addr; freep->next = NULL; kbp->kb_last = addr; +#else + /* + * Return memory to the head of the queue for quick reuse. This + * can improve performance by improving the probability of the + * item being in the cache when it is reused. + */ + if (kbp->kb_next == NULL) { + kbp->kb_next = addr; + kbp->kb_last = addr; + freep->next = NULL; + } else { + freep->next = kbp->kb_next; + kbp->kb_next = addr; + } +#endif splx(s); } |