phkmalloc/2

"zero' and 'junk' options to help find and diagnose malloc abuse.
EXTRA_SANITY defaults "junk" to on.
Don't dump the internal state, unless EXTRA_SANITY.
General code cleanup.
Error messages cleaned up a bit, more checking earlier.
EXTRA_SANITY is default at this time (just in case).
Performance (without EXTRA_SANITY) is better, beats gnumalloc in
both time & space most of the time:

	# In-memory test.
	./malloc 50000000 2000 8192
	159.2u 1.5s 2:41.85 99.3% 5+7742k 0+0io 0pf+0w
	./gnumalloc 50000000 2000 8192
	272.6u 0.4s 4:35.01 99.3% 5+8533k 0+0io 0pf+0w

	# Swap-space test.
	./malloc 500000 14000 8192
	6.5u 4.1s 4:08.87 4.3% 5+49209k 0+0io 9772pf+0w
	./gnumalloc 500000 14000 8192
	16.2u 14.5s 15:36.14 3.2% 5+54100k 0+0io 47651pf+0w

	# Small items test.
	./malloc 20000000 20000 2048
	67.0u 0.3s 1:07.83 99.2% 5+18199k 0+0io 4pf+0w
	./gnumalloc 20000000 20000 2048
	66.2u 0.3s 1:07.03 99.3% 5+18107k 0+0io 0pf+0w

SANITY is not an option anymore. (!!)
This commit is contained in:
Poul-Henning Kamp 1995-10-08 18:44:20 +00:00
parent eec7e07a40
commit 7aa70c9e8e
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=11338
2 changed files with 380 additions and 321 deletions

View file

@ -111,25 +111,6 @@ is zero and
is not a null pointer, the object it points to is freed.
.Pp
.Pp
The default is to compile with the ``SANITY'' option,
which trades a couple of percent of performance for rather rigorous
sanity checking of the arguments passed to
.Xr free
and
.Xr realloc .
.Pp
If compiled without the ``SANITY'' option and the argument does not
match a pointer earlier returned by the
.Xr calloc ,
.Xr malloc ,
or
.Xr realloc
function, or if the space has been deallocated by a call to
.Fn free
or
.Xr realloc ,
general havoc will be imminent.
.Sh ENVIRONMENT
This malloc will check the environment for a variable called
.Em MALLOC_OPTIONS
@ -139,15 +120,31 @@ Flags are single letters, uppercase means on, lowercase means off.
.It A
``abort'' malloc will coredump the process, rather that tollerate failure.
This is a very handy debugging aid, since the core file will represent the
time of failure, rather than when the NULL pointer was accessed.
time of failure,
rather than when the NULL pointer was accessed.
.It D
``dump'' malloc will dump statistics in a file called ``malloc.out'' at exit.
.It J
``junk'' fill some junk into the area allocated.
Currently junk is bytes of 0xd0, this is pronounced ``Duh'' :-)
.It R
``realloc'' always reallocate when
.Fn realloc
is called, even if the initial allocation was big enough.
This can substantially aid in compacting memory.
.It Z
``zero'' fill some junk into the area allocated (see ``J''),
except for the exact length the user asked for, which is zerod.
.El
.Pp
The ``J'' and ``Z'' is mostly for testing and debugging,
if a program changes behaviour if either of these options are used,
it is buggy.
.Sh RETURN VALUES
The
.Fn malloc

File diff suppressed because it is too large Load diff