From owner-freebsd-hackers Wed Apr 12 04:34:47 1995 Return-Path: hackers-owner Received: (from majordom@localhost) by freefall.cdrom.com (8.6.10/8.6.6) id EAA10389 for hackers-outgoing; Wed, 12 Apr 1995 04:34:47 -0700 Received: from vinkku.hut.fi (vode@vinkku.hut.fi [130.233.245.1]) by freefall.cdrom.com (8.6.10/8.6.6) with ESMTP id EAA10383 for ; Wed, 12 Apr 1995 04:34:44 -0700 Received: (from vode@localhost) by vinkku.hut.fi (8.6.11/8.6.7) id OAA24547; Wed, 12 Apr 1995 14:34:05 +0300 Date: Wed, 12 Apr 1995 14:34:05 +0300 From: Kai Vorma Message-Id: <199504121134.OAA24547@vinkku.hut.fi> To: Nate Williams Cc: hackers@FreeBSD.org Subject: Re: A better malloc() for FreeBSD In-Reply-To: <199504111955.NAA10123@trout.sri.MT.net> References: <199504111955.NAA10123@trout.sri.MT.net> Reply-To: Kai.Vorma@hut.fi Sender: hackers-owner@FreeBSD.org Precedence: bulk Nate Williams writes: > > I'm in agreement with you. The current malloc implementation is very > fast, but I think replacing malloc would make the system faster since > there would be less swapping due to less memory use. > > If you could get some hard numbers re: performance I think we might have > more to stand on when the time comes to integrate it into the system. Here you have some numbers. I think all mallocs are fast enough although dlmalloc is superior in simumalloc/1. ..vode --------------------------------------------------------------------------- Test machine: 486DX/2 66, 256cache, 16MB RAM, FreeBSD-2.1D mtest.c for (i = 0; i < 1000000; i++) { p1 = malloc(20); p2 = malloc(2048); p3 = malloc(100000); free (p2); free (p1); p4 = malloc(100); free (p4); free (p3); } 25.093s real 24.981s user 0.039s system 99% ./mtest.csri 25.103s real 24.957s user 0.031s system 99% ./mtest.csri 25.147s real 25.019s user 0.054s system 99% ./mtest.csri 12.709s real 12.647s user 0.054s system 99% ./mtest.BSD 12.753s real 12.668s user 0.023s system 99% ./mtest.BSD 12.755s real 12.647s user 0.054s system 99% ./mtest.BSD 12.095s real 11.953s user 0.062s system 99% ./mtest.dl 12.067s real 11.990s user 0.031s system 99% ./mtest.dl 12.136s real 12.025s user 0.054s system 99% ./mtest.dl --------------------------------------------------------------------------- simumalloc.c (from CSRI-malloc distribution) - basically does for i (1 .. t) { malloc (rnd(s) * sizeof(word)) freeall(l) /* free all blocks whose lifetime has been expired */ } 1 simumalloc -t 200000 -s 512 -l 20000 2 simumalloc -t 200000 -s 512 -l 10000 3 simumalloc -t 200000 -s 512 -l 2000 4 simumalloc -t 200000 -s 512 -l 500 5 simumalloc -t 200000 -s 512 -l 20 6 simumalloc -t 200000 -s 512 -l 2 7 simumalloc -t 5000 -s 512 -a 8 simumalloc -t 200000 -s 4096 -l 500 9 simumalloc -t 200000 -s 4096 -l 2000 BSD-malloc 1 [ interrupted after 25 minutes of constant paging.. ] 2 Sbrked 7386044, MaxAlloced 5292552, Wastage 0.28 3.851s real 3.087s user 0.670s system 97% 3 Sbrked 1614780, MaxAlloced 1108524, Wastage 0.31 3.129s real 2.893s user 0.218s system 99% 4 Sbrked 467900, MaxAlloced 309384, Wastage 0.34 3.010s real 2.876s user 0.125s system 99% 5 Sbrked 78780, MaxAlloced 26176, Wastage 0.67 2.603s real 2.463s user 0.132s system 99% 6 Sbrked 46012, MaxAlloced 5756, Wastage 0.87 2.454s real 2.359s user 0.078s system 99% 7 Sbrked 6988732, MaxAlloced 5140464, Wastage 0.26 0.701s real 0.116s user 0.551s system 95% 8 Sbrked 4174780, MaxAlloced 2492676, Wastage 0.40 3.247s real 2.933s user 0.313s system 99% CSRI-malloc 1 [ interrupted after 25 minutes of constant paging.. ] 2 Sbrked 5935352, MaxAlloced 5292552, Wastage 0.11 12.862s real 12.168s user 0.632s system 99% 3 Sbrked 1246096, MaxAlloced 1108524, Wastage 0.11 5.007s real 4.758s user 0.210s system 99% 4 Sbrked 352514, MaxAlloced 309384, Wastage 0.12 3.940s real 3.760s user 0.163s system 99% 5 Sbrked 28693, MaxAlloced 26176, Wastage 0.09 3.197s real 3.072s user 0.109s system 99% 6 Sbrked 8198, MaxAlloced 5756, Wastage 0.30 3.272s real 3.178s user 0.078s system 99% 7 Sbrked 5181136, MaxAlloced 5140464, Wastage 0.01 0.586s real 0.179s user 0.381s system 95% 8 Sbrked 2966116, MaxAlloced 2492676, Wastage 0.16 4.293s real 3.987s user 0.289s system 99% 9 Sbrked 10758352, MaxAlloced 8960644, Wastage 0.17 12.868s real 5.871s user 1.083s system 54% Doug Lea's malloc 1 Sbrked 11018240, MaxAlloced 10470000, Wastage 0.05 133.908s real 5.964s user 2.417s system 6% 2 Sbrked 5619712, MaxAlloced 5292552, Wastage 0.06 4.279s real 3.833s user 0.445s system 99% 3 Sbrked 1245184, MaxAlloced 1108524, Wastage 0.11 3.633s real 3.420s user 0.195s system 99% 4 Sbrked 368640, MaxAlloced 309384, Wastage 0.16 3.439s real 3.304s user 0.124s system 99% 5 Sbrked 32768, MaxAlloced 26176, Wastage 0.20 3.964s real 3.836s user 0.093s system 99% 6 Sbrked 8192, MaxAlloced 5756, Wastage 0.30 3.990s real 3.860s user 0.116s system 99% 7 Sbrked 5193728, MaxAlloced 5140464, Wastage 0.01 0.590s real 0.143s user 0.413s system 94% 8 Sbrked 2891776, MaxAlloced 2492676, Wastage 0.14 5.077s real 4.779s user 0.288s system 99% 9 Sbrked 9953280, MaxAlloced 8960644, Wastage 0.10 10.273s real 6.048s user 0.864s system 67%