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>