MSCP for you and me

Chris Torek chris at mimsy.UUCP
Wed Oct 26 14:36:27 AEST 1988


>>[Chris Torek:] The 4.3BSD UDA50 driver treats unknown disks as type
>>`ra81'.  I considered this bogus [...]

Actually, I think this was wrong.  I looked again at what was supposed
to be the 4.3BSD release (according to our RCS files, not the SCCS
files at Berkeley), and it should have complained about unknown drive
types.  (It did a switch on the number part of the encoded media ID.)
But again, all those third-party disks claim themselves to be RA81s anyway.

In article <10337 at eddie.MIT.EDU> nessus at athena.mit.edu (Doug Alan) writes:
>I have another question for BSD disk driver wizards: I discovered
>sometime recently that if I use "tunefs" to change "maxcontig" for a
>filesystem from 1 to 2, the read performance of the filesystem (for a
>single process) increases about 25%. ...

(Obviously you are not using a UDA50---I never got any repeatable change
in any performance measurements I ran for any tunefs parameters.)

>The man page for "tunefs" says you should only increase "maxcontig" on
>a device driver that can chain several buffers together in a single
>transfer.  Can the MSCP device driver do this?

The driver does not do it itself, but the controller could quite easily.

>Is there any reason why I shouldn't leave "maxcontig" set to 2.

No!  You might tell everyone what controller and drive this is, though.
The only way to find the proper tunefs values is to experiment; it is
easier if someone else has already done the experimenting. . . .

>...  Another issue is that our disk controllers are
>smart, and you can set them to prefetch blocks (the controller also
>does caching -- prefetched blocks go into the cache).  Setting the
>prefetch to be 32 sectors (2 blocks) also resulted in another little
>increase in filesystem read performance for a single process.

Probably because in those cases where the read-ahead block was
contiguous but was not delivered to the controller soon enough, the
second read command had to wait for most of a revolution.  When it was
delivered soon enough, the controller did the chaining whether or not
you had prefetching set; now it gets the block cached whether the
read-ahead is requested immediately or after a slight delay.

You might find that raising the read-ahead and the maxcontig factors
together helps further.  But you (or someone else) will have to try
it to be sure.

(It would sure be nice if controllers came with *real* documentation
as to characteristics like `code delays to search on-board cache',
`will (not) read full tracks without waiting for index', etc.  Then
you *might* be able to predict some of this, after instrumenting the
drivers carefully.)
-- 
In-Real-Life: Chris Torek, Univ of MD Comp Sci Dept (+1 301 454 7163)
Domain:	chris at mimsy.umd.edu	Path:	uunet!mimsy!chris



More information about the Comp.unix.wizards mailing list