cvs commit: src/sys/sys uio.h sfbuf.h pipe.h src/sys/kern sys_pipe.c src/sys/i386/i386 uio_machdep.c src/sys/conf files.i386
Matthew Dillon
dillon at crater.dragonflybsd.org
Sun Mar 28 00:26:25 PST 2004
dillon 2004/03/28 00:25:55 PST
DragonFly src repository
Modified files:
sys/sys uio.h sfbuf.h pipe.h
sys/kern sys_pipe.c
sys/conf files.i386
Added files:
sys/i386/i386 uio_machdep.c
Log:
Import Alan Cox's /usr/src/sys/kern/sys_pipe.c 1.171. This rips out
writer-side KVA mappings and replaces them with writer-side vm_page wiring
(left intact from before) plus reader-side SF_BUF copies.
Import 1.141, which is a simple patch which removes a blocking condition
when space is available in the pipe's write buffer which was causing
non-blocking I/O select-based writes to spin-wait unnecessarily. 1.171
rips out writer-side KVA mappings and replaces them
Import FreeBSD-5.x's uiomove_fromphys(), which sys_pipe.c now uses. This
procedure could become very useful in a number of DragonFly subsystems.
This greatly improves PIPE performance for the direct-mapped case (moderate
to large reads and writes). Additionally, recent scheduler fixes greatly
improve PIPE performance for both the direct-mapped and small-buffer cases.
NOTE: wired page limits for pipes have not yet been imported, and the heavy
use of sf_buf's may require some tuning in the many-pipes case.
BLKSIZE BEFORE AFTER
MBytes/s MBytes/s Tests on AMD64/3200+ FN85 MB
------- ------ ------ (64KB L1, 1MB L2)
256KB 1900 2200
64KB 1800 2200
16KB 1650 2500-3000
8KB 1400 2300
4KB 1300 1400-1500 (note 1)
note 1: The 4KB case is not a direct-write case, the results are due to
the scheduler fixes only.
Obtained-from: FreeBSD-5.x / FreeBSD's Alan Cox
Revision Changes Path
1.8 +2 -0 src/sys/sys/uio.h
1.2 +17 -0 src/sys/sys/sfbuf.h
1.4 +0 -1 src/sys/sys/pipe.h
1.15 +45 -71 src/sys/kern/sys_pipe.c
1.22 +1 -0 src/sys/conf/files.i386
http://www.dragonflybsd.org/cvsweb/src/sys/sys/uio.h.diff?r1=1.7&r2=1.8&f=h
http://www.dragonflybsd.org/cvsweb/src/sys/sys/sfbuf.h.diff?r1=1.1&r2=1.2&f=h
http://www.dragonflybsd.org/cvsweb/src/sys/sys/pipe.h.diff?r1=1.3&r2=1.4&f=h
http://www.dragonflybsd.org/cvsweb/src/sys/kern/sys_pipe.c.diff?r1=1.14&r2=1.15&f=h
http://www.dragonflybsd.org/cvsweb/src/sys/conf/files.i386.diff?r1=1.21&r2=1.22&f=h
More information about the Commits
mailing list