Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 13 Mar 2002 22:37:58 -0800 (PST)
From:      Matthew Dillon <dillon@apollo.backplane.com>
To:        David Greenman <dg@root.com>
Cc:        Poul-Henning Kamp <phk@critter.freebsd.dk>, John Indra <maverick@office.naver.co.id>, freebsd-current@FreeBSD.ORG
Subject:   Re: malloc() and the stock Perl in -CURRENT (and -STABLE)
Message-ID:  <200203140637.g2E6bw438311@apollo.backplane.com>
References:  <20020314104525.B8244@office.naver.co.id> <40628.1016085846@critter.freebsd.dk> <20020313222518.J27616@nexus.root.com>

next in thread | previous in thread | raw e-mail | index | archive | help
:>The above perl program results in a loop more or less like:
:...
:>
:>Now, if you read _any_ malloc(3) man page, they will tell you that there
:>is no way it can be guaranteed that this does not result in a lot of
:>copying.
:
:   Um, except that copying isn't what is causing the problem. The performance
:problem is apparantly caused by tens of thousands of page faults per second as
:the memory is freed and immediately reallocated again from the kernel. Doesn't
:phkmalloc keep a small pool of allocations around to avoid problems like
:this?
:
:-DG
:
:David Greenman
:Co-founder, The FreeBSD Project - http://www.freebsd.org

    I can significantly reduce page faulting for the above test
    (rewritten in C below) with the following:

rm /etc/malloc.conf
ln -s ">>>>>>>>>>>>" /etc/malloc.conf

    That cuts it down by a factor of 15 to 25.

					-Matt
					Matthew Dillon 
					<dillon@backplane.com>


#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

int
main(int ac, char **av)
{
    char *ptr = NULL;
    int i;

    for (i = 2; i < 1000000; ++i)
	ptr = realloc(ptr, i);
    return(0);
}


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?200203140637.g2E6bw438311>