Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 31 Aug 1995 14:47:50 -0700 (PDT)
From:      "Rodney W. Grimes" <rgrimes@gndrsh.aac.dev.com>
To:        gibbs@freefall.FreeBSD.org (Justin T. Gibbs)
Cc:        FreeBSD-hackers@FreeBSD.Org (FreeBSD hackers)
Subject:   Re: 4GB Drives
Message-ID:  <199508312147.OAA12790@gndrsh.aac.dev.com>
In-Reply-To: <199508311858.LAA16993@freefall.FreeBSD.org> from "Justin T. Gibbs" at Aug 31, 95 11:58:07 am

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

[I have trimmed the cc: all the way back to hackers]

> >> 
> >> >Now, can you all leave me alone for 30 days so I can go get the stripes
> >> >working, I have small bottleneck that needs fixed :-):-):-)  And can
> >> >anyone tell me what the mean and standard deviation of an I/O request to
> >> >an aic7870 is before it hits the drive given 0 scsi bus contention?  This
> >> >seems to greatly effect rotation offset on stripe sets when pushed to
> >> >the limits of data coming under the head just after the I/O hits the
> >> >drive.
> >> 
> >> Hmm.  You'd have to come up with some way to benchmark it since its very
> >> dependant on the sequencer code.  I'd be interested to here what your
> >> results were. :)
> >
> >:-).  How much control do you have over the controller LED in the sequencer
> >code?  Would it be possible to wink it when an I/O CCB comes in from the
> >host, and then double wink it when it goes out the scsi bus?  Or am I
> >going to have to find a 128 channel logic analyzer and pull my hair out
> >for a week to try and capture this :-).
> 
> You could do it in about four lines of total code change.  First, you'd
> have to leave the led in diagnostic mode:
> 
> The two high bits of SBLKCTL control the led:
> 
> #define DIAGLEDEN	0x80
> #define DIAGLEDON	0x40
> 
> They are initially cleared by the mask on line 1871 of -current's
> aic7xxx.c.  Just or back in the diaglen bit on line 1898.
> 
> outb(SBLKCTL + iobase, sblkctl | DIAGLENEN);

WAY COOL!!  Just what I was looking for!!  THANKS!!

> Now as far as making it blink, either the kernel driver can manipulate
> it via an outb, or you can use any of the or,xor,and sequencer instructions
> to manipulate the led.  Where to do the triggering depends on what exactly
> you want to measure.  If you want to time how long it takes for the
> sequencer program to pull an entry off the queue, successfully arbitrate,
> and go to data_phase (probably the most meaningful benchmark), I'd turn
> the led on at line 291 in aic7xxx.seq, and turn off the led somewhere in
> the p_dataout: and p_datain: cases. 

You hit the nail on the head for what I need to measure.

> You may also want to double wink the
> led if you get a reconnect so that you can differentiate the case when
> you lose arbitration to a reconnecting target.  As you can see, you
> can do a lot with that little led.

Don't need to, no one can reselect, there is only 1 disk on the
scsi bus in the prototype 2 drive 2 controller base line.  I did that
to eliminate all contention situations while studing the rotation offset
problem and zone size effects.  I need to clearly see when each bus goes
to data phase so I can understand how the I/O's get processed etc, etc.

> >> So, are you planning on using a 3940W for this type of application?
> >
> >Possibly, prototypes are NCR 825 and aha2940W right now...
> 
> Remeber that the 3940 allows up to 255 queued commands as oposed to
> the 16 of the 2940W.  As soon as we get better queuing code into
> FreeBSD, this will make a difference.

Actually I would like to turn off queued commands for the time being,
is there an easy way to do that (I have not been delving into the aic
code like I should be if I need to ask that one, but since I have your
attention any way :-).

I need to fully evaluate very simple systems to understand how things
are going to behave, and complications like having the controller stacking
up queued I/O's on me is going to confuse me looking at timing with respect
to when the host releases the I/O in the driver (right now I have a bit
to watch on the scope when the stripe layer drops the I/O to the driver
layer and then watch the busy bit on the scsi bus, command queueing in
the controller is screwing me correlationg the two events :-().


-- 
Rod Grimes                                      rgrimes@gndrsh.aac.dev.com
Accurate Automation Company                 Reliable computers for FreeBSD



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