Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 15 Dec 2000 14:47:42 -0800 (PST)
From:      Matt Dillon <dillon@earth.backplane.com>
To:        stable@FreeBSD.ORG
Subject:   New performance patch available for testing on stable
Message-ID:  <200012152247.eBFMlg727583@earth.backplane.com>

next in thread | raw e-mail | index | archive | help
    The URL:

	http://apollo.backplane.com/FreeBSD4/

    This patch reworks the pageout daemon and the buf_daemon.  It is based
    on my previous patch but hopefully has the kinks worked out.  The patch
    is for -stable only, I will have a -current patch tonight.

    The main change is to the buf_daemon.  I ripped out the dynamic speedup /
    slowdown code because it just wasn't working.  I replaced it with code
    to track the amount of I/O in-progress in order to be able to limit the
    flush rate based on that.  I also ripped out the non-working hysteresis
    for waking up the buf_daemon and put in real hysteresis, and I ripped out
    the artificial limitations on the number of buffers that could be flushed
    per wakeup (just like I ripped out the maxlaunder limitation in the
    pageout daemon in the last patch), and instead flush until the low
    water mark is reached, using the runningbufspace (bytes in transit to
    the I/O device) to limit the flush rate.

    In my testing, these changes lead to much, much smoother operation in
    heavily loaded situations and also appears to improve the write rate:

    4.2-STABLE:		(dd'ing to a CCD stripe of two SCSI drives)

	serv02:/data1# dd if=/dev/zero of=test bs=32k count=49152 
	49152+0 records in
	49152+0 records out
	1610612736 bytes transferred in 34.506011 secs (46676295 bytes/sec)

    4.2-STABLE + patches:	(dd'ing to a CCD stripe of two SCSI drives)

	serv01:/data1# dd if=/dev/zero of=test bs=32k count=49152
	49152+0 records in
	49152+0 records out
	1610612736 bytes transferred in 27.995698 secs (57530722 bytes/sec)

    The current patchset will pageout a little more then 4.2-RELEASE, but
    hopefully to the benefit of the system rather then the detriment.  This
    is because I ripped out the two-pass inactive queue scan in the pageout
    daemon that was skipping dirty pages in the first pass (giving them too
    much priority) and replaced it with a one-pass scan.

    I am slowly making my way to per-(disk)-device I/O pipelining.  At the
    moment the pipelining is system-wide.

					-Matt



To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-stable" in the body of the message




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