Re: [PATCH RFC v7 12/12] hpsa: enable host_tagset and switch to MQ

Hannes Reinecke
2020-08-18T07:14:44Z

On 8/17/20 8:39 PM, Don.Brace@microchip.com wrote:
> Subject: Re: [PATCH RFC v7 12/12] hpsa: enable host_tagset and switch to MQ
>
>> We are also reconsidering changing smartpqi over to use host tags but in some preliminary performance tests,
>> I found a performance regression.
>> Note: I only used your V7 patches for smartpqi.
>> I have not had time to determine what is causing this, but wanted to make note of this.
>
>> Thanks. Please note that we have been looking at many >>performances improvements since v7, and these will
>> be included in v8, so maybe I can still include smartpqi in >>the v8 series and you can retest if you want.
>
> Sure,
> Thanks for your patches
> Don
>
Well, I had been looking at smartpqi and its tag handling, and found it
no easy match with the blk-mq implementation we have in linux.
(Which is actually quite curious, as both had been developed around the
same time, so I would've thought that they would be similar ...)

Anyhow: for smartpqi each sgl element use up one slot in the submission
queue, so the total number of SQEs for one command is 1 (for the command
itself) + number of sgl elements.
With that the queue size is actually dynamic, and depends on the size of
the commands being sent.
This doesn't map easily onto blk-mq concepts, where we assume that each
command consumes one SQE.

So currently the smartpqi driver has its own heuristics for determining
the queue depth, but I fear that this also will eat up quite some
improvements we might be getting from using host_tagset.
(Especially as the smartpqi driver doesn't actually _has_ a host_tagset,
but rather the mapping withing the driver exposes something which looks
like a host tagset ...)

What I really would like to see is to update blk-mq to handle smartpqi
properly; this might even be beneficial to other drivers like mpt3sas
which have a similar concept (called 'chain_tracker' there).
One idea would be to allocate additional tags (one for each sgl) such
that the tag bitmap reflects the status of the submission queue.
Maybe we can update my reserved tags patchset for that ... hmmm.

Cheers,

Hannes
--
Dr. Hannes Reinecke Kernel Storage Architect
hare@suse.de +49 911 74053 688
SUSE Software Solutions Germany GmbH, Maxfeldstr. 5, 90409 Nürnberg
HRB 36809 (AG Nürnberg), GF: Felix Imendörffer