Re: [PATCH 4/4] scsi: core: don't limit per-LUN queue depth for SSD

Ming Lei
2019-11-21T01:22:09Z

On Wed, Nov 20, 2019 at 02:58:40PM -0700, Sumanesh Samanta wrote:
> >Ordinarily I'd prefer a host template attribute as Sumanesh proposed,
> >but I dislike wrapping the examination of that and the queue flag in
> >a macro that makes it not obvious how the behavior is affected.
>
> I think we can have a host template attribute and discard this check
> altogether, that is not check device_busy for both SDD and HDDs.
>
> As both you and Hannes mentioned, this change affects high end controllers
> most, and most of them have some storage IO size limit. Also, for HDD
> sequential IO is almost always large and
> touch the controller max IO size limit.

You just see large IO size from driver side or device side, and do you
know why the big size IO is submitted to driver? Block layer's IO merge
contributes a lot for that, and IO merge usually starts to work
after queue becomes busy which can be signaled from !blk_mq_get_dispatch_budget().

That is why we implements .get_budget and .put_budget on SCSI for fixing
sequential IO performance regression.

0df21c86bdbf scsi: implement .get_budget and .put_budget for blk-mq
aeec77629a4a scsi: allow passing in null rq to scsi_prep_state_check()
b347689ffbca blk-mq-sched: improve dispatching from sw queue
de1482974080 blk-mq: introduce .get_budget and .put_budget in blk_mq_ops

Also HDD may be connected to high end HBA too.

> Thus, I am not sure merge matters
> for these kind of controllers.

Yeah, that is why my patches just bypass sdev->device_busy for SSD, and
looks you misunderstood the idea behind the patches, right?

Thanks,
Ming