Re: [PATCH V4 1/2] scsi: core: avoid host-wide host_busy counter for scsi_mq

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

 



On 25/10/2019 10:43, Ming Lei wrote:
On Fri, Oct 25, 2019 at 09:58:16AM +0100, John Garry wrote:

In scsi_host.h, we have for scsi_host_template.can_queue: "It is set to the
maximum number of simultaneous commands a given host adapter will accept.",
so that should be honoured.


Hi Ming,

That words should have been changed to:

"It is set to the maximum number of simultaneous commands a given host adapter's
hw queue will accept."


Hi Ming,

I find this definition misleading. As you know, some MQ SAS HBAs can accept
.can_queue commands on a given hw queue, but can still only accept
.can_queue commands over all hw queues.

I don't know there are such MQ HBA driver in tree,

HiSilicon SAS HBA can accept 4096 commands on any given hw queue but can also only accept 4096 commands over all queues simultaneously. In fact, the hw queue depth is configurable.

That's why I think that the definition is misleading.

I think I sound like a broken record now :)

at least that is the
current blk-mq/scsi-mq model: each hw queue has its own independent
tags, so there can't be the limit for MQ HBA, which should allow to
accept (.can_queue * nr_hw_queues) commands. And I did hear people
complains bad performance caused by the atomic .host_busy counter.


ok, seems reasonable for now.

If you are talking about the current SQ(from blk-mq or scsi-mq viewpoint) HBA
which has multiple reply queue(HPSA, hisilicon SAS, mpt3sas, and megaraid_sas),
they are just the special type. According to scsi-mq's model, they should
belong to SQ HBA.




And Scsi_host.nr_hw_queues: "it is assumed that each hardware queue has a
queue depth of can_queue. In other words, the total queue depth per host is
nr_hw_queues * can_queue."

The above is correct.


I don't read "total queue depth per host" same as "maximum number of
simultaneous commands a given host adapter will accept". If anything, the
nr_hw_queues comment is ambiguous.


The point is simple, because each hw queue has its own independent tags,
that is why I mentioned your Hisilicon SAS can't be converted to MQ
easily cause this hardware has only single shared tags.

Please be aware that HiSilicon SAS HW would not be unique for SCSI HBAs in
this regard, in that the unique hostwide tag is not just for HBA HW IO
management, but also is used as the tag for SCSI TMFs.

Right.


Just checking mpt3sas seems similar:

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/scsi/mpt3sas/mpt3sas_scsih.c#n2918

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/scsi/mpt3sas/mpt3sas_base.c#n3546

Not only mpt3sas, there are also HPSA and more. And these drivers have to
support single hw queue of blk-mq, instead of real MQ. And the reason is that
these HBA has single tags.

We should be able to do better than that.

For a start, at least doesn't the check you remove in scsi_host_is_busy()
limit commands the HBA accepts to .can_queue?

As I mentioned above, that is current blk-mq/scsi-mq's model, each hw
queue has its own independent tags, so the check really doesn't make
sense. >

And if you make the change in this patch, then the changes to improve blk-mq
for CPU hotplug are pointless, as we can't change the SAS HBAs to expose
multiple queues.

No, just the small number of special type SCSI HBAs with multiple reply queue
and single tags can't benefit from the patchset of 'improve blk-mq for CPU hotplug',
and all other normal MQ device/drivers do get improved wrt. CPU hotplug.


TBH, I'm not sure on the group of SCSI drivers which could benefit then.

As I see, only qla2xxx driver sets Scsi_host.nr_hw_queues and also uses pci_alloc_irq_vectors_affinity().

We have tried hosttags approach for the several drivers, but looks it is
too messy. Given there are only 3 or 4 such device, we still can improve
them via driver private approach in future if no generic way is doable.

ok, I'd rather not go on this path - you may say I'm digging my head in the sand. Anyway, I'll continue to support the 'improve blk-mq for CPU hotplug' effort.

Thanks,
John




Thanks,
Ming

.





[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