[comp.sys.amiga] Solution to speed problems with Starboard SCSI and ST277N

denbeste@bbn.com (Steven Den Beste) (06/24/89)

I've got an A1000 with a Starboard-II, and being disappointed with the
performance of my Cltd controller and seeing reports here of much better
performance with the Starboard SCSI controller, I picked one up about three
weeks ago. I've been trying to get it to work with an ST-277N ever since.

Like several people I've seen complain here on the net,
my performance initially was dismal with this controller. I've now got it
going at a quite respectable speed, and since the steps to this end were not
always obvious, I thought I'd document them in great detail.


(OK, OK, it still gets whupped by a GVP in a 2000, but let us old codgers
have our limping contest, and you young whippersnappers go play somewhere
else.)

Here are some interesting facts:

1. You MUST use FFS.
2. You MUST use an interleave of 3. (Actually, it might be the case that
your interleave is slightly different. Experiment around a bit. More on this
later. But my experience on this was very definite: An interleave of 2 was
less than half as fast as an interleave of 3.)
3. You MUST use "fastmode".

Without all three of these, you can kiss off any reasonable performance.
Also...

4. Use MOUNT and a mountlist, not DHMount. DHMount isn't flexible enough,
and I don't trust it anymore.


And so, without further ado, a bare bones list of instructions for setting
it up.

1. Set up the Mountlist for your drive. Here's what mine contains:

	DH1:	Device = StarDrive.device
		Unit = 3
		Flags = 0
		Surfaces = 6
		BlocksPerTrack = 26
		Reserved = 2
		Interleave = 0
		LowCyl = 0 ; HighCyl = 808
		Buffers = 26
		BufMemType = 0
		GlobVec = 1
		FileSystem = L:FastFileSystem
		#

(My "Unit" is strange for reasons not worth going into here. Your mileage may
vary.)

It is important to note that the value of the "Interleave" parameter doesn't
matter with the FFS. It is actually set when you low level format the drive.

Which brings us nicely to:

2. Low Level Format the drive. If you have "fastmode" on for the drive,
turn it off again.  Invoke MDFixer. Ostensibly you don't have to have
the drive mounted to hard format it, but if the drive isn't mounted,
MDFixer won't give you a button to choose it.

I chose, in this order: <DHx:> <Hard Format> <Clear Defect List> <Go!>
It then prompts you ("Are you sure", but in a lot more words.) <Do it!>
It then prompts you for an interleave factor. I entered "3".

MDFixer is fussy. It doesn't always run to completion, and I'm not sure
things will work right if it doesn't. I observed three classes of behavior,
and I think I know how to interpret them:

	Format takes a long time. When done, no error appears on the screen.
		(Great! Success! Go to the next step.)

	Format takes a long time. During most of it, the drive can be heard
	stepping. At the end, the head rewinds, and there is a pause of
	several seconds. Then an error occurs.
		(I think this one succeeded, too. Go to the next step.)

	Format takes somewhat less time (wide variation here) and just as
	the head rewinds, the same error message occurs.
		(You're screwed. Try again. See below.)

What's frustrating about this is that once you've hard-formatted the drive,
whether successfully or not, it won't let you do it again until some other
action is done to the drive. (When you try to hard format again, it completes
instantly.) The easiest way to clear this up so you can try again is to
high-level format the drive. Execute this command from a CLI:
	"format drive dhx: name toss FFS QUICK"
This only takes a few seconds, and then you can try the hard format again.
Keep trying until you get it right. Once it took me 9 tries.

I have every reason to believe that if it doesn't succeed, you won't get
the right results.

3. Now you can high-level format it. When I was running benchmarks I always
used the "quick" option, but when time came to do it for real, I chickened
out and did a full non-quick format (which takes about half an hour on this
drive).

4. Last and certainly not least, turn on fastmode.

You can now run "diskperfa". Some caveats: Your performance will degrade if
you've got lots of other stuff running at the same time. Your performance
will vary somewhat from test to test due simply to measurement inaccuracies.
Finally, your performance will degrade with time as the drive gets
fragmented. (However, we're talking months, not minutes.)


Perhaps the trickiest thing I encountered (after figuring out how to get
BINDDRIVERS to work) was how to make fastmode turn on during the boot. The
documentation says that you can set the "Flags" word with DHMount and gives
a bit-map. I tried using the same values in the Flags entry of the
mountlist, and it didn't make any difference at all. I'm relying on
the "fastmode" command in my startup-sequence - which brought up problem
number two.

For no obvious reason "fastmode" returns an error 31. (The text it prints
looks a little flakey, too - I'm not sure just how heavily this guy was
debugged.) When you manually execute the command, you never see the error.
If it happens in your startup-sequence, it will abort it.

You have to bracket it with "failat":

	mount dhx:
	failat 32
	fastmode dhx:
	failat 10


*******I believe that the problems most people are having are either that
MDFixer isn't finishing the low level format (and so the interleave isn't
right) or that they think they are turning fastmode on and really aren't.
The second is easy to diagnose: Manually turn it on with the "fastmode"
command (never mind if you think it is already on!), and run "diskperfa"
again. If the numbers improve dramatically, then you didn't have fastmode
on before.

-------Would anybody care to hear all the things I did wrong?-------

I'm going to have a lot of charts in here of results from diskperfa.
Some of them are beyond belief. To begin with, I ran a reference
benchmark with my Cltd controller. The second column here is the first
test I ran with the SB2. This is non-FFS, non-fastmode, interleave 2:

		Cltd	Basic

File create	9	6
File delete	13	19
Dir scan	91	50
Seek/read	68	29
512   R		53K	13K
      W		48K	12K
4096  R		85K	14K
      W		62K	12K
8192  R		85K	14K
      W		66K	12K
32768 R		85K	14K
      W		67K	12K

Needless to say, these numbers were a real downer.

Obviously I needed to switch to FFS, and I decided to experiment with
interleave factors, too. Another, much longer chart:

		I=0	I=3	I=5	I=8	I=10	I=12	I=15

File create	13	12	13	12	12	12	12
File delete	24	24	23	25	25	25	24
Dir scan	102	102	102	102	102	102	102
Seek/read	52	48	46	56	61	56	49
512   R		39K	35K	32K	38K	44K	42K	61K
      W		28K	26K	25K	23K	22K	21K	19K
4096  R		46K	42K	43K	53K	59K	51K	43K
      W		44K	40K	38K	50K	56K	49K	42K
8192  R		50K	45K	43K	56K	67K	58K	48K
      W		49K	44K	40K	51K	61K	55K	46K
32768 R		55K	48K	44K	58K	73K	62K	51K
      W		50K	45K	41K	55K	66K	57K	47K


An interleave of 10 is the high point in the chart. (I also ran 9 and 11,
which are not shown here.) So I started looking around for other things to
fix. Since I seemed to need an interleave of 10 when other people needed 3,
I decided I must be having noise problems, causing SCSI retransmissions or
something like that. I wasn't being quite honest in my bus termination (two
drives, and the one nearer the SB2 had the termination resistor) so I went
and spent about $60 on parts to rebuild the cable. You know something? Mass
termination connectors are EXPENSIVE! (I bought two of everything in case I
loused up the first one.)

It didn't make any difference at all. So I read the manual, and there was
"fastmode". Voila:

		I=10		+fastmode

File create	12		87
File delete	25		32
Dir scan	102		100
Seek/read	61		58
512   R		44K		47K
      W		22K		21K
4096  R		59K		60K
      W		56K		51K
8192  R		67K		67K
      W		61K		57K
32768 R		73K		73K
      W		66K		60K

Yeesh. After an unproductive call to Microbotics (they took my number and
said they'd call back, and didn't) and posting a request for help, I heard
from a guy here in MA who said he'd gotten it working. Talking to him it
finally occurred to me that the peak of the performance curve WITH fastmode
(reported to be 3) might be different than it is WITHOUT fastmode (measured
by me as being 10).

So I altered my testing protocol slightly and tested some low interleave
numbers with fastmode turned on.

		I=0	I=2	I=3	I=4

File create	13	13	13	13
File delete	34	35	40	41
Dir scan	102	102	104	104
Seek/read	57	67	96	90
512   R		39	48	73	73
      W		29	28	27	26
4096  R		56	67	119	105
      W		53	64	109	97
8192  R		56	69	154	138
      W		49	64	125	119
32768 R		55	71	187	164
      W		55	71	146	131



Steven C. Den Beste,   BBN Communications Corp., Cambridge MA
denbeste@bbn.com(ARPA/CSNET/UUCP)    harvard!bbn.com!denbeste(UUCP)