Converge on one language.

Reviewed by:	phk
Submitted by:	Alex Nash <nash@mcs.com>
This commit is contained in:
Poul-Henning Kamp 1996-11-14 08:10:31 +00:00
parent 528baa6dcc
commit bcd92649c9
4 changed files with 20 additions and 19 deletions

View File

@ -6,7 +6,7 @@
.\" this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
.\" ----------------------------------------------------------------------------
.\"
.\" $Id: implementation.ms,v 1.2 1996/09/29 18:36:11 phk Exp $
.\" $Id: implementation.ms,v 1.3 1996/10/04 14:01:54 wosch Exp $
.\"
.ds RH Implementation
.NH
@ -171,6 +171,16 @@ It's amazing how few programs actually handle this condition correctly,
and consequently the havoc they can create is the more creative or
destructive.
.IP
.B Dump
Writes malloc statistics to a file called ``malloc.out'' prior
to process termination.
.IP
.B Hint
Pass a hint to the kernel about pages we no longer need through the
madvise(2) system call. This can help performance on machines that
page heavily by eliminating unnecessary page-ins and page-outs of
unused data.
.IP
.B Realloc
Always do a free and malloc when realloc(3) is called. The default
is to leave things alone if the size of the allocation is still in
@ -189,7 +199,7 @@ space after the allocation in the chunk will be filled with the
junk value to try to catch out of the chunk references.
.ds RH The road not taken.
.NH
The road yet not taken.
The road not yet taken.
.PP
A couple of avenues were explored that could be interesting in some
set of circumstances.
@ -197,15 +207,6 @@ set of circumstances.
Using mmap(2) instead of brk(2) was actually slower, since brk(2)
knows a lot of the things that mmap has to find out first.
.PP
A system call where we could tell the kernel that "we don't
need the contents of this page anymore" would allow us to
return the pages on the free list to the kernel and to instruct
the kernel that it doesn't need to page it out nor in.
It would save some page-out events, and the page-in would be replaced
by a zero-fill page.
This is, according to the VM goods in the FreeBSD camp, "easy",
and it will probably be attempted at some point in the future.
.PP
In general there is little room for further improvement of the
time-overhead of the malloc, further improvements will have to
be in the area of improving paging behaviour.

View File

@ -6,7 +6,7 @@
.\" this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
.\" ----------------------------------------------------------------------------
.\"
.\" $Id$
.\" $Id: intro.ms,v 1.1 1996/04/13 08:30:14 phk Exp $
.\"
.ds RH Introduction
.NH
@ -16,7 +16,7 @@ Most programs need to allocate storage dynamically in addition
to whatever static storage the compiler reserved at compile-time.
To C programmers this fact is rather obvious, but for many years
this was not an accepted and recognized fact, and many languages
still used today doesn't support this notion adequately.
still used today don't support this notion adequately.
.PP
The classic UNIX kernel provides two very simple and powerful
mechanisms for obtaining dynamic storage, the execution stack

View File

@ -6,13 +6,13 @@
.\" this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
.\" ----------------------------------------------------------------------------
.\"
.\" $Id: kernel.ms,v 1.1 1996/04/13 08:30:16 phk Exp $
.\" $Id: kernel.ms,v 1.2 1996/10/05 18:37:06 wosch Exp $
.\"
.ds RH The kernel and memory
.NH
The kernel and memory
.PP
Brk(2) isn't a particular convenient interface,
Brk(2) isn't a particularly convenient interface,
it was probably made more to fit the memory model of the
hardware being used, than to fill the needs of the programmers.
.PP

View File

@ -6,7 +6,7 @@
.\" this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
.\" ----------------------------------------------------------------------------
.\"
.\" $Id$
.\" $Id: performance.ms,v 1.1 1996/04/13 08:30:19 phk Exp $
.\"
.ds RH Performance
.NH
@ -63,15 +63,15 @@ For now we can simply say that it is the number of pages the process
needs in order to run at a sufficiently low paging rate in a congested
primary storage.
(If primary storage isn't congested, this is not really important
of course, but most systems would be better of using the pages for
of course, but most systems would be better off using the pages for
disk-cache or similar functions, so from that perspective it will
always be congested.)
If this number of pages is to small, the process will wait for the its
If the number of pages is too small, the process will wait for its
pages to be read from secondary storage much of the time, if it's too
big, the space could be used better for something else.
.PP
From the view of any single process, this number of pages is
"all of my pages", but from the point of view of the OS is should
"all of my pages", but from the point of view of the OS it should
be tuned to maximise the total throughput of all the processes on
the machine at the time.
This is usually done using various kinds of least-recently-used