On Mon, Dec 09, 2013 at 07:24:19PM -0500, Adam Jensen wrote:
> I recently (last night) installed OpenBSD-5.4-amd64 on an
> HP-Proliant ML370-G4 that has a Smart Array 6404 controller card in
> a 64-bit, 133-MHz PCI-X slot. It has two Ultra320 SCSI channels and
> 192MB of RAM cache. One SCSI channel is connected to two 146GB U320
> 10kRPM drives which are configured as a RAID0 array. The Smart Array
> card presents the RAID0 as one SCSI device: /dev/sd0.
> 
> [dmesg]: http://pastebin.com/Sxs801ef
> [pcidump]: http://pastebin.com/P5Zn1xM4
> [sysctl]: http://pastebin.com/kmXeMZ02
> [acpidump]: http://pastebin.com/xufZXdha "acpi.headers only"
> 
> Disk performance is *very* bad. For example:
> 
> dd if=/dev/zero of=test bs=1k count=32768
> 32768+0 records in
> 32768+0 records out
> 33554432 bytes transferred in 6.325 secs (5304659 bytes/sec)
> 
> I tinkered with FreeBSD9.2 and CentOS6.4 on this hardware and they
> both transfer about 300M to 400M bytes/sec with that command. Large
> transfers (>GB) write about 80M to 100M bytes/sec (if I remember
> correctly).
> 
> I am preparing to recompile the system to 5.4-stable so there is an
> opportunity to make some tweaks to the default kernel configuration
> (maybe the SCSIDEBUG option) but I am very open to suggestions on
> how to proceed.
> 
> I plan to add four more 146GB U320 10kRPM drives, place them on the
> second Ultra320 SCSI channel, and configure them as a RAID5 array. I
> intend to run OpenBSD on this machine for the foreseeable future so
> getting the RAID hardware configured for maximum utilization,
> performance, and reliability is of utmost importance. Any RAID
> hardware gurus willing to point me in the right direction will be
> much appreciated. Actually, *any* suggestions could potentially be
> useful. I'm rather stuck at the moment.
> 

Hmm. Googling 'openbsd ciss slow' led me to 

http://openbsd.7691.n7.nabble.com/ciss-4-write-very-slow-w-o-bbwc-td93173.html

which led me to

http://cvsweb.netbsd.org/bsdweb.cgi/src/sys/dev/ic/ciss.c.diff?r1=1.22&r2=1.23&only_with_tag=MAIN&f=h

which induced me to create the diff below. This may not be the correct
or final solution, but it would be interesting to see if it changes the
performance on your machine.

.... Ken

Index: ciss.c
===================================================================
RCS file: /cvs/src/sys/dev/ic/ciss.c,v
retrieving revision 1.68
diff -u -p -r1.68 ciss.c
--- ciss.c      30 May 2013 16:15:02 -0000      1.68
+++ ciss.c      10 Dec 2013 00:52:51 -0000
@@ -607,6 +607,7 @@ ciss_cmd(struct ciss_ccb *ccb, int flags
 int
 ciss_done(struct ciss_ccb *ccb)
 {
+       struct scsi_inquiry_data *inq;
        struct ciss_softc *sc = ccb->ccb_sc;
        struct scsi_xfer *xs = ccb->ccb_xs;
        struct ciss_cmd *cmd = &ccb->ccb_cmd;
@@ -635,6 +636,13 @@ ciss_done(struct ciss_ccb *ccb)
 
        if (xs) {
                xs->resid = 0;
+               if (xs->cmd->opcode == INQUIRY && error != 0) {
+                       /* Adaptor doesn't bother to claim being SCSI2+. */
+                       inq = (struct scsi_inquiry_data *)xs->data;
+                       if (SCSISPC(inq->version) == 0 &&
+                           (inq->flags & SID_CmdQue) != 0)
+                               inq->version |= 2;
+               }
                scsi_done(xs);
        }
 

Reply via email to