Re: Questions about your scsi-mq prototype

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, 2013-07-15 at 16:41 -0500, scameron@xxxxxxxxxxxxxxxxxx wrote:
> Hi,
> 
> I have some questions about your scsi-mq prototype.  I have
> CC'ed Chayan Biswas from Sandisk who is the other guy working
> with me on the scsi-over-pcie driver.  BTW, if you would prefer
> I CC linux-kernel or linux-scsi or other people with such
> questions (or refrain from bothering you at all) just let me know.
> 

Thanks for asking.  Adding CC's to linux-scsi + Jens now..

> I wonder if you can provide a summary of how you envision
> a scsi LLD is expected to interact with the scsi-mq code.  I
> gather that:
> 
> 1. scsi_mq in scsi_host_template should be set to true.

Correct.

> 2. scsi LLD should provide queuecommand_mq function
>    (in addition to normal queuecommand? or instead of?
>     virtio_scsi.c seems to provide both.)

In addition to for the moment, correct.

> 3. LLD should tell scsi mid layer size of its commands via
>    scsi_host_template cmd_size field.
>    I guess midlayer will pre-allocate per queue to avoid 
>    the midlayer threads contending to allocate commands maybe?
>    and hands this space to LLD to use via sc->SCp.ptr (sc is struct scsi_cmnd)
>    (right? or am I off in the weeds here?)

This is all exactly correct.

The one extra point here wrt ->queuecommand_mq() is that it's using the
same parameters for the moment, but once nr_hw_queues > 1 is
implemented, we will expect to pass down the associated blk_mq_hw_ctx in
order for the LLD to determine which hardware context the struct
scsi_cmnd is being dispatched upon.

> 4. Wondering about how the multiple queue thing will work.
>    I see this:
> 
>    #warning FIXME: Need to pass nr_hw_queues into scsi-mq
> 
>    and I don't see any code setting sdev_mq_reg.nr_hw_queues to
>    anything other than 1.
> 
>    So maybe I'm just looking too early and that part isn't done yet?
> 

Correct, not done yet..

However, so far with a single SCSI LUN with nr_hw_queues=1, 4k blocksize
randrw performance is on the order of 1M, vs. ~250K using legacy
scsi_request_fn().

> In any case, since we switched away from a scsi driver for the scsi-over-pcie
> driver to a block driver, the original scsi version of the driver has lain
> fallow, and the first thing we would need to do before we could begin to try
> to use your code is to update that driver to work with our current hardware, and
> take advantage of other code improvements made in the block driver.
> 

Understood.  I'm happy to help on the scsi-mq conversion side, but as
you've noticed from the virtio-scsi conversion patch, enabling scsi-mq
it it's current form for I/O benchmarking is straight forward.

--nab

--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]
  Powered by Linux