From: Sagi Grimberg <sagig@dev.mellanox.co.il>
To: Bart Van Assche <bart.vanassche@sandisk.com>,
Hannes Reinecke <hare@suse.de>,
"lsf-pc@lists.linux-foundation.org"
<lsf-pc@lists.linux-foundation.org>,
"linux-scsi@vger.kernel.org" <Linux-scsi@vger.kernel.org>,
"linux-block@vger.kernel.org" <linux-block@vger.kernel.org>
Subject: Re: [LSF/MM TOPIC] multiqueue and interrupt assignment
Date: Wed, 3 Feb 2016 14:57:53 +0200 [thread overview]
Message-ID: <56B1F951.5010001@dev.mellanox.co.il> (raw)
In-Reply-To: <56B0F41B.8010706@sandisk.com>
Hi Bart and Hannes,
> This topic indeed needs further attention. I also encountered this
> challenge while adding scsi-mq support to the SRP initiator driver. What
> I learned while working on the SRP driver is the following:
> - Although I agree that requests and interrupts should be processed on
> the same processor (same physical chip) if the request has been
> submitted from the CPU closest to the HBA, I'm not convinced that
> processing request completions and interrupts on the same CPU core
> yields the best performance. I would appreciate it if there would
> remain some freedom in how to assign interrupts to CPU cores.
This is true not only for this reason. Some block storage transports
(e.g. srp/iser) share the HBA with the networking stack and possibly
with user-space workloads in the case of RDMA. This is why I don't see
how would MSIX assignments can be done anywhere other than user-space.
However what I think we can do is have blk-mq ask the drivers
information about the MSIX mappings. This concept was introduced in
2011 by Ben Hutchings with the CPU affinity reverse-mapping API [1].
Perhaps we'd want to have drivers provide blk-mq a struct cpu_rmap when
assigning the hctx mappings, or possibly per I/O if we want to be
agnostic to MSIX topology changes. I think this approach would solve
Hannes is experiencing.
Thoughts?
[1]:
commit c39649c331c70952700f99832b03f87e9d7f5b4b
Author: Ben Hutchings <bhutchings@solarflare.com>
Date: Wed Jan 19 11:03:25 2011 +0000
lib: cpu_rmap: CPU affinity reverse-mapping
When initiating I/O on a multiqueue and multi-IRQ device, we may want
to select a queue for which the response will be handled on the same
or a nearby CPU. This requires a reverse-map of IRQ affinity. Add
library functions to support a generic reverse-mapping from CPUs to
objects with affinity and the specific case where the objects are
IRQs.
Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
next prev parent reply other threads:[~2016-02-03 12:57 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-02-02 16:31 [LSF/MM TOPIC] multiqueue and interrupt assignment Hannes Reinecke
2016-02-02 18:23 ` Bart Van Assche
2016-02-03 12:57 ` Sagi Grimberg [this message]
2016-02-03 13:13 ` Hannes Reinecke
2016-02-03 13:32 ` Sagi Grimberg
2016-02-03 15:03 ` Hannes Reinecke
2016-03-03 7:59 ` Ming Lei
2016-02-02 18:45 ` Elliott, Robert (Persistent Memory)
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=56B1F951.5010001@dev.mellanox.co.il \
--to=sagig@dev.mellanox.co.il \
--cc=Linux-scsi@vger.kernel.org \
--cc=bart.vanassche@sandisk.com \
--cc=hare@suse.de \
--cc=linux-block@vger.kernel.org \
--cc=lsf-pc@lists.linux-foundation.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.