Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 31 Aug 1995 11:58:07 -0700
From:      "Justin T. Gibbs" <gibbs@freefall.FreeBSD.org>
To:        "Rodney W. Grimes" <rgrimes@gndrsh.aac.dev.com>
Cc:        pete@kesa26.kesa.com, jbryant@argus.iadfw.net, freebsd-hackers@freebsd.org, pete@rahul.net
Subject:   Re: 4GB Drives 
Message-ID:  <199508311858.LAA16993@freefall.FreeBSD.org>
In-Reply-To: Your message of "Thu, 31 Aug 95 10:54:28 PDT." <199508311754.KAA12139@gndrsh.aac.dev.com> 

next in thread | previous in thread | raw e-mail | index | archive | help
>> 
>> >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);

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 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.

>
>> 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.

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

--
Justin T. Gibbs
===========================================
  Software Developer - Walnut Creek CDROM
  FreeBSD: Turning PCs into workstations
===========================================



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