Max Queue depth of HBA limited to 256 ?

Desai, Kashyap Kashyap.Desai at lsi.com
Mon Jan 21 17:49:46 UTC 2013



> -----Original Message-----
> From: Kenneth D. Merry [mailto:ken at freebsd.org]
> Sent: Monday, January 21, 2013 10:35 PM
> To: Desai, Kashyap
> Cc: freebsd-scsi at freebsd.org; McConnell, Stephen; Saxena, Sumit;
> jhb at freebsd.org
> Subject: Re: Max Queue depth of HBA limited to 256 ?
> 
> On Mon, Jan 21, 2013 at 20:15:47 +0530, Desai, Kashyap wrote:
> > Hi,
> >
> > I was trying to check few things on LSI controller, where we have more
> than 256 queue depth support.
> > I added default maxtags in scsi/scsi_xpt.c as below. (Because I don't
> want mattags to restrict any outstanding commands the LSI HBA.
> >
> >     {
> >         /* Default tagged queuing parameters for all devices */
> >         {
> >           T_ANY, SIP_MEDIA_REMOVABLE|SIP_MEDIA_FIXED,
> >           /*vendor*/"*", /*product*/"*", /*revision*/"*"
> >         },
> >         /*quirks*/0, /*mintags*/2, /*maxtags*/1024      <--- Default
> maxtags were 256. I increase it to 10234
> >     },
> >
> >
> > LSI's SAS-HBA and MR-HBA can support more than 256 outstanding
> commands in Firmware.  But due to some reason, I am not able to pump
> more than 256 outstanding commands to the HBA.
> >
> > I used "rawio -p 256 /dev/da1" and more /dev/dax in loop. I have
> sysctl parameter in Driver to display outstanding "FW commands". Max
> value for FW outstanding only goes up to 256.
> >
> > Also from some other mail thread Subject "mfi driver performance", I
> found that folks talk about tuning queue depth _but_ nobody discussed to
> increase it beyond 256. Is there any limitation in FreeBSD ?
> >
> 
> As Jim pointed out, one thing to check is the values passed into
> cam_sim_alloc().  In the case of the mps(4) driver, the calculation is
> in mps_attach():
> 
> sc->num_reqs = MIN(MPS_REQ_FRAMES, sc->facts->RequestCredit);
> 
> What is reported for the RequestCredit on this particular adapter?
> 
> The other question is, what does 'camcontrol tags daX -v' show when you
> are running the test?

Below is output of camcontrol tags da1 -v.

dhcp-135-24-192-127# camcontrol tags da13 -v
(pass13:mrsas0:0:13:0): dev_openings  1024
(pass13:mrsas0:0:13:0): dev_active    0
(pass13:mrsas0:0:13:0): devq_openings 1024
(pass13:mrsas0:0:13:0): devq_queued   0
(pass13:mrsas0:0:13:0): held          0
(pass13:mrsas0:0:13:0): mintags       2
(pass13:mrsas0:0:13:0): maxtags       1024
dhcp-135-24-192-127# camcontrol tags da1 -v
(pass1:mrsas0:0:1:0): dev_openings  1024
(pass1:mrsas0:0:1:0): dev_active    0
(pass1:mrsas0:0:1:0): devq_openings 1024
(pass1:mrsas0:0:1:0): devq_queued   0
(pass1:mrsas0:0:1:0): held          0
(pass1:mrsas0:0:1:0): mintags       2
(pass1:mrsas0:0:1:0): maxtags       1024

Value 1024 is hard coded for my testing. In MegaRaid controller and SAS-HBA Driver read max commands value from FW. 
Similar to "RequestCredit"..  Different FW has different value, but they are every time above 255.


When I run IOs dev_active stays in range of 0-255 only.  See below output when I run IOs on /dev/da1 and /dev/da13. I expect total dev_openings should go beyond 255, which is not happening.

    
dhcp-135-24-192-127# camcontrol tags da1 -v
(pass1:mrsas0:0:1:0): dev_openings  832
(pass1:mrsas0:0:1:0): dev_active    192
(pass1:mrsas0:0:1:0): devq_openings 832
(pass1:mrsas0:0:1:0): devq_queued   0
(pass1:mrsas0:0:1:0): held          0
(pass1:mrsas0:0:1:0): mintags       2
(pass1:mrsas0:0:1:0): maxtags       1024
dhcp-135-24-192-127# camcontrol tags da13 -v
(pass13:mrsas0:0:13:0): dev_openings  881
(pass13:mrsas0:0:13:0): dev_active    143
(pass13:mrsas0:0:13:0): devq_openings 881
(pass13:mrsas0:0:13:0): devq_queued   0
(pass13:mrsas0:0:13:0): held          0
(pass13:mrsas0:0:13:0): mintags       2
(pass13:mrsas0:0:13:0): maxtags       1024




Jim:
Below is my API call. I have hard code value "queue_depth" = 1024 

    sc->sim_0 = cam_sim_alloc(mrsas_action, mrsas_poll, "mrsas", sc,
        device_get_unit(sc->mrsas_dev), &sc->sim_lock, queue_depth,
        queue_depth, devq);

~ Kashyap

> 
> Ken
> --
> Kenneth Merry
> ken at FreeBSD.ORG


More information about the freebsd-scsi mailing list