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>
