freebsd-skq/sys
dg bcc23094ea First round of changes from John Dyson and myself to the VM system. This
set improves performance and fixes the following problems (description
from John Dyson):

1.	Growing swap space problem in both static usage and
	in situations with lots of fork/execs in heavy paging
	situations.

2.	Sparse swap space allocation (internal fragmentation.)

3.	General swap_pager slowness.

Additionally, the new swap_pager also provides hooks for multi-page
I/O that is currently being developed (in early testing phases.)

Problem #1 is a result of a problem where objects cannot be collapsed
once a pager has been allocated for them.  This problem has been solved
by relaxing the restriction by allowing the pages contained in a shadow
object's pager be copied to the parent object's pager.  The copy is
afforded by manipulating pointers to the disk blocks on the swap space.
Since an improved swap_pager has already been developed with the data
structures to support the copy operation, this new swap_pager has been
introduced.  Also, shadow object bypass in the collapse code has been
enhanced to support checking for pages on disk.  The vm_pageout daemon
has also been modified to defer creation of an object's pager when the
object's shadow is paging.  This allows efficient immediate collapsing
of a shadow into a parent object under many circumstances without the
creation of an intermediate pager.

Problem #2 is solved by the allocation data structures and algorithms
in the new swap_pager.  Additionally, a newer version of this new swap_pager
is being tested that permits multiple page I/O and mitigation of the
fragmentation problems associated with allocation of large contiguous blocks
of swap space.

Problem #3 is addressed by better algorithms and a fix of a couple of bugs
in the swap_pager.  Additionally, this new pager has a growth path allowing
multi-page inputs from disk.  Approximately 50% performance improvement can
be expected under certain circumstances when using this pager in the standard
single page mode.

(Actually, I've seen more like twice the speed in my tests. -DLG)
1993-12-22 12:51:39 +00:00
..
alpha/include Put back the $Id$ string 1993-10-28 06:11:38 +00:00
amd64 Changed pointer type from caddr_t to void * for fillw, insw, outsw, and 1993-12-21 21:27:04 +00:00
conf Added support for X.25 as a network-layer protocol under ISO TP class 0, as 1993-12-19 22:45:13 +00:00
ddb Make everything compile with -Wtraditional. Make it easier to distribute 1993-12-19 00:55:01 +00:00
dev Use separate fields for format GAP and read/write GAP. 1993-12-21 05:09:21 +00:00
i386 Changed pointer type from caddr_t to void * for fillw, insw, outsw, and 1993-12-21 21:27:04 +00:00
isa Use separate fields for format GAP and read/write GAP. 1993-12-21 05:09:21 +00:00
kern First round of changes from John Dyson and myself to the VM system. This 1993-12-22 12:51:39 +00:00
powerpc/include adding libc/quad: 1993-12-19 05:14:46 +00:00
scsi Make everything compile with -Wtraditional. Make it easier to distribute 1993-12-19 00:55:01 +00:00
sys Separate read/write and format GAPs. 1993-12-21 05:11:10 +00:00