Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 12 Apr 1995 14:34:05 +0300
From:      Kai Vorma <vode@snakemail.hut.fi>
To:        Nate Williams <nate@trout.sri.MT.net>
Cc:        hackers@FreeBSD.org
Subject:   Re: A better malloc() for FreeBSD
Message-ID:  <199504121134.OAA24547@vinkku.hut.fi>
In-Reply-To: <199504111955.NAA10123@trout.sri.MT.net>
References:  <vode@snakemail.hut.fi> <199504111955.NAA10123@trout.sri.MT.net>

next in thread | previous in thread | raw e-mail | index | archive | help
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%




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