From: John Garry <john.garry@huawei.com>
To: Bart Van Assche <bart.vanassche@sandisk.com>,
Hannes Reinecke <hare@suse.de>,
hch@infradead.org,
"linux-scsi@vger.kernel.org" <linux-scsi@vger.kernel.org>
Cc: "zhangfei.gao@linaro.org" <zhangfei.gao@linaro.org>
Subject: Re: scsi-mq performance check
Date: Fri, 18 Dec 2015 15:36:08 +0000 [thread overview]
Message-ID: <567427E8.8010608@huawei.com> (raw)
In-Reply-To: <56742403.7000108@sandisk.com>
On 18/12/2015 15:19, Bart Van Assche wrote:
> On 12/18/2015 04:08 PM, Hannes Reinecke wrote:
>> On 12/18/2015 03:58 PM, John Garry wrote:
>>> Hi,
>>>
>>> I have started to enable scsi-mq on the HiSilicon SAS driver.
>>>
>>> Are there hints/checks I should use to make sure it is configured
>>> correctly/optimally? In my initial testing I have seen some
>>> performance improvements, but none like what I have seen in
>>> presentations.
>>>
>> The whole thing is build around having symmetric submit and receive
>> queues, so that we can tack a send/receive queue pair to the same CPU.
>> With that we can ensure that we don't have any cache invalidation, as
>> the request is already in the cache for that CPU when the completion is
>> recieved. _And_ we can get rid of most spinlocks as other CPUs cannot
>> access our request.
>>
>> So make sure to have the submit and receive queues properly done, and
>> ensure you don't have any global resources within your driver which
>> needs to be locked. Or move access to those resources out of the fast
>> path.
>
> Hello John,
>
> It's great news that you started looking into scsi-mq support :-) As
> Hannes wrote, if the performance improvement is not as big as you
> expected this could be caused e.g. by lock contention. Are you familiar
> with the perf tool ? The perf tool can be a great help to verify whether
> lock contention occurs and also which lock(s) cause it.
>
> Bart.
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
Thanks for the replies.
One of my main concerns is how we use a spinlock in our task exec
function to prepare and deliver a frame to the hardware:
hisi_sas_task_exec()
{
...
/* protect task_prep and start_delivery sequence */
spin_lock_irqsave(&hisi_hba->lock, flags);
rc = hisi_sas_task_prep(task, hisi_hba, is_tmf, tmf, &pass);
...
hisi_hba->hw->start_delivery(hisi_hba);
spin_unlock_irqrestore(&hisi_hba->lock, flags);
...
}
We have to lock due to how we reserve a slot in the delivery queue. We
are looking to optimise this, but it's not straightforward.
Perf is a good strategy, but, to be honest, I have not spent a lot of
time looking at this so I'm looking for low hanging fruit initially.
FYI, our hardware does have the same number of delivery and completion
queues (32), and 16 cores. One thing to note is that a command which was
sent on queue x is not quaranteed to complete on queue y.
cheers,
next prev parent reply other threads:[~2015-12-18 15:40 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-12-18 14:58 scsi-mq performance check John Garry
2015-12-18 15:08 ` Hannes Reinecke
2015-12-18 15:19 ` Bart Van Assche
2015-12-18 15:36 ` John Garry [this message]
2015-12-18 16:05 ` Hannes Reinecke
2015-12-18 16:50 ` John Garry
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=567427E8.8010608@huawei.com \
--to=john.garry@huawei.com \
--cc=bart.vanassche@sandisk.com \
--cc=hare@suse.de \
--cc=hch@infradead.org \
--cc=linux-scsi@vger.kernel.org \
--cc=zhangfei.gao@linaro.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).