Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 2 Feb 1996 18:19:47 -0700 (MST)
From:      Terry Lambert <terry@lambert.org>
To:        jgreco@brasil.moneng.mei.com (Joe Greco)
Cc:        curt@emergent.com, freebsd-hackers@freebsd.org
Subject:   Re: Watchdog timers (was: Re: Multi-Port Async Cards)
Message-ID:  <199602030119.SAA01041@phaeton.artisoft.com>
In-Reply-To: <199602022319.RAA12386@brasil.moneng.mei.com> from "Joe Greco" at Feb 2, 96 05:19:44 pm

next in thread | previous in thread | raw e-mail | index | archive | help

[ ... NFS benchmarks ... ]

> Some of the Solaris variance may be due to differing processor speeds.
> 
> We should be able to come closer to the Solaris numbers.  There is no unfair
> cache bashing going on or anything.

Solaris' NFS implementation "unfairly" uses metadata write clustering.  It
delays the actual write completion to allow multiple modifications to the
same object to take a single write.

It *lies* to the client about having committed the metadata update before
returning.

It is possible to turn off write clustering (I forget the symbol name,
but it's easy to find with the kernel debugger on Solaris).

In addition, the Solaris UFS implementation is multithreaded; this means
that it implements delayed ordered writes, even if only as a side effect
of kernel preemptibiliy synchronization guarantees (ie: contrary to some
opinions, kernel multithreading is a generic win even in the non-SMP
case).


If you are going to go async on FreeBSD, you should do the same on
Solaris, out of fairness (see Solaris patch following signature).

Going async is (of course) bogus BS of the first order.
					Terry Lambert
					terry@lambert.org
---
Any opinions in this posting are my own and not those of my present
or previous employers.
---------------------------------------------------------------------------
DISCLAIMER: THIS IS AN UNOFFICAL PATCH. USE AT YOUR OWN RISK.

========== asyncnfs.sh ===================================================
#!/bin/sh

patch_53() {
	case "$1" in
	no|off)
		w0=0x94102010
		w1=0x9fc3c000
		;;
	yes|on|*)
		w0=0x94102000
		w1=0x90102000
		;;
	esac
	
	adb -wk /dev/ksyms /dev/mem <<EOF
	rfs_write+794/W $w0
	rfs_write+87c/W $w1
EOF
}



case `uname -r` in
5.3)
	patch_53 "$@"
	;;
*)
	echo "don't know how to patch `uname -r`" >&2
	exit 1
	;;
esac

exit 0
---------------------------------------------------------------------------



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