All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3 0/9] Introduce per-device completion queue pools
@ 2017-11-08  9:57 ` Sagi Grimberg
  0 siblings, 0 replies; 92+ messages in thread
From: Sagi Grimberg @ 2017-11-08  9:57 UTC (permalink / raw)
  To: linux-rdma-u79uwXL29TY76Z2rM5mHXA
  Cc: linux-nvme-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, Christoph Hellwig,
	Max Gurtuvoy

This is the third re-incarnation of the CQ pool patches proposed
by Christoph and I.

Our ULPs often want to make smart decisions on completion vector
affinitization when using multiple completion queues spread on
multiple cpu cores. We can see examples for this in iser, srp, nvme-rdma.

This patch set attempts to move this smartness to the rdma core by
introducing per-device CQ pools that by definition spread
across cpu cores. In addition, we completely make the completion
queue allocation transparent to the ULP by adding affinity hints
to create_qp which tells the rdma core to select (or allocate)
a completion queue that has the needed affinity for it.

This API gives us a similar approach to whats used in the networking
stack where the device completion queues are hidden from the application.
With the affinitization hints, we also do not compromise performance
as the completion queue will be affinitized correctly.

One thing that should be noticed is that now different ULPs using this
API may share completion queues (given that they use the same polling context).
However, even without this API they share interrupt vectors (and CPUs
that are assigned to them). Thus aggregating consumers on less completion
queues will result in better overall completion processing efficiency per
completion event (or interrupt).

In addition, we introduce a configfs knob to our nvme-target to
bound I/O threads to a given cpulist (can be a subset). This is
useful for numa configurations where the backend device access is
configured with care to numa affinity, and we want to restrict rdma
device and I/O threads affinity accordingly.

The patch set convert iser, isert, srpt, svcrdma, nvme-rdma and
nvmet-rdma to use the new API.

Comments and feedback is welcome.

Christoph Hellwig (1):
  nvme-rdma: use implicit CQ allocation

Sagi Grimberg (8):
  RDMA/core: Add implicit per-device completion queue pools
  IB/isert: use implicit CQ allocation
  IB/iser: use implicit CQ allocation
  IB/srpt: use implicit CQ allocation
  svcrdma: Use RDMA core implicit CQ allocation
  nvmet-rdma: use implicit CQ allocation
  nvmet: allow assignment of a cpulist for each nvmet port
  nvmet-rdma: assign cq completion vector based on the port allowed cpus

 drivers/infiniband/core/core_priv.h      |   6 +
 drivers/infiniband/core/cq.c             | 193 +++++++++++++++++++++++++++++++
 drivers/infiniband/core/device.c         |   4 +
 drivers/infiniband/core/verbs.c          |  69 ++++++++++-
 drivers/infiniband/ulp/iser/iscsi_iser.h |  19 ---
 drivers/infiniband/ulp/iser/iser_verbs.c |  82 ++-----------
 drivers/infiniband/ulp/isert/ib_isert.c  | 165 ++++----------------------
 drivers/infiniband/ulp/isert/ib_isert.h  |  16 ---
 drivers/infiniband/ulp/srpt/ib_srpt.c    |  46 +++-----
 drivers/infiniband/ulp/srpt/ib_srpt.h    |   1 -
 drivers/nvme/host/rdma.c                 |  62 +++++-----
 drivers/nvme/target/configfs.c           |  75 ++++++++++++
 drivers/nvme/target/nvmet.h              |   4 +
 drivers/nvme/target/rdma.c               |  71 +++++-------
 include/linux/sunrpc/svc_rdma.h          |   2 -
 include/rdma/ib_verbs.h                  |  31 ++++-
 net/sunrpc/xprtrdma/svc_rdma_transport.c |  22 +---
 17 files changed, 468 insertions(+), 400 deletions(-)

-- 
2.14.1

--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 92+ messages in thread

end of thread, other threads:[~2018-01-03 17:47 UTC | newest]

Thread overview: 92+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-11-08  9:57 [PATCH v3 0/9] Introduce per-device completion queue pools Sagi Grimberg
2017-11-08  9:57 ` Sagi Grimberg
     [not found] ` <20171108095742.25365-1-sagi-NQWnxTmZq1alnMjI0IkVqw@public.gmane.org>
2017-11-08  9:57   ` [PATCH v3 1/9] RDMA/core: Add implicit " Sagi Grimberg
2017-11-08  9:57     ` Sagi Grimberg
     [not found]     ` <20171108095742.25365-2-sagi-NQWnxTmZq1alnMjI0IkVqw@public.gmane.org>
2017-11-09 10:45       ` Max Gurtovoy
2017-11-09 10:45         ` Max Gurtovoy
     [not found]         ` <fe2c23b7-2923-2693-28c3-6a6f399bda26-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
2017-11-09 17:31           ` Sagi Grimberg
2017-11-09 17:31             ` Sagi Grimberg
     [not found]             ` <23b598f2-6982-0d15-69e4-c526c627ec33-NQWnxTmZq1alnMjI0IkVqw@public.gmane.org>
2017-11-09 17:33               ` Bart Van Assche
2017-11-09 17:33                 ` Bart Van Assche
     [not found]                 ` <1510248814.2608.19.camel-Sjgp3cTcYWE@public.gmane.org>
2017-11-13 20:28                   ` Sagi Grimberg
2017-11-13 20:28                     ` Sagi Grimberg
2017-11-14 16:28       ` Bart Van Assche
2017-11-14 16:28         ` Bart Van Assche
     [not found]         ` <1510676885.2280.9.camel-Sjgp3cTcYWE@public.gmane.org>
2017-11-20 12:31           ` Sagi Grimberg
2017-11-20 12:31             ` Sagi Grimberg
2017-12-11 23:50       ` [v3,1/9] " Jason Gunthorpe
2017-12-11 23:50         ` Jason Gunthorpe
     [not found]         ` <20171211235044.GA32331-uk2M96/98Pc@public.gmane.org>
2018-01-03 17:47           ` Jason Gunthorpe
2018-01-03 17:47             ` Jason Gunthorpe
2017-11-08  9:57   ` [PATCH v3 2/9] IB/isert: use implicit CQ allocation Sagi Grimberg
2017-11-08  9:57     ` Sagi Grimberg
2017-11-08 10:27     ` Nicholas A. Bellinger
2017-11-08 10:27       ` Nicholas A. Bellinger
2017-11-08 10:27       ` Nicholas A. Bellinger
     [not found]     ` <20171108095742.25365-3-sagi-NQWnxTmZq1alnMjI0IkVqw@public.gmane.org>
2017-11-14  9:14       ` Max Gurtovoy
2017-11-14  9:14         ` Max Gurtovoy
2017-11-08  9:57   ` [PATCH v3 3/9] IB/iser: " Sagi Grimberg
2017-11-08  9:57     ` Sagi Grimberg
2017-11-08 10:25     ` Nicholas A. Bellinger
2017-11-08 10:25       ` Nicholas A. Bellinger
2017-11-08 10:25       ` Nicholas A. Bellinger
2017-11-08  9:57   ` [PATCH v3 4/9] IB/srpt: " Sagi Grimberg
2017-11-08  9:57     ` Sagi Grimberg
2017-11-08  9:57   ` [PATCH v3 5/9] svcrdma: Use RDMA core " Sagi Grimberg
2017-11-08  9:57     ` Sagi Grimberg
2017-11-08  9:57   ` [PATCH v3 6/9] nvme-rdma: use " Sagi Grimberg
2017-11-08  9:57     ` Sagi Grimberg
2017-11-08  9:57   ` [PATCH v3 7/9] nvmet-rdma: " Sagi Grimberg
2017-11-08  9:57     ` Sagi Grimberg
2017-11-08  9:57   ` [PATCH v3 8/9] nvmet: allow assignment of a cpulist for each nvmet port Sagi Grimberg
2017-11-08  9:57     ` Sagi Grimberg
2017-11-08  9:57   ` [PATCH v3 9/9] nvmet-rdma: assign cq completion vector based on the port allowed cpus Sagi Grimberg
2017-11-08  9:57     ` Sagi Grimberg
2017-11-08 16:42   ` [PATCH v3 0/9] Introduce per-device completion queue pools Chuck Lever
2017-11-08 16:42     ` Chuck Lever
     [not found]     ` <F7FAF7FD-AE2C-4428-A779-06C9768E0C73-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org>
2017-11-09 17:06       ` Sagi Grimberg
2017-11-09 17:06         ` Sagi Grimberg
     [not found]         ` <b502f211-c477-3acd-be01-eaf645edc117-NQWnxTmZq1alnMjI0IkVqw@public.gmane.org>
2017-11-10 19:27           ` Chuck Lever
2017-11-10 19:27             ` Chuck Lever
     [not found]             ` <4B49C591-8671-4683-A437-215BAA6B56CD-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org>
2017-11-13 20:47               ` Sagi Grimberg
2017-11-13 20:47                 ` Sagi Grimberg
     [not found]                 ` <a79c3899-5599-aa7e-5c5b-75ec98cdc490-NQWnxTmZq1alnMjI0IkVqw@public.gmane.org>
2017-11-13 22:15                   ` Chuck Lever
2017-11-13 22:15                     ` Chuck Lever
     [not found]                     ` <A6E320D9-63F4-4FFE-A5E2-EB3ED19D0CB3-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org>
2017-11-20 12:08                       ` Sagi Grimberg
2017-11-20 12:08                         ` Sagi Grimberg
     [not found]                         ` <b4493cd9-62d6-c855-2b55-9749df7fa90d-NQWnxTmZq1alnMjI0IkVqw@public.gmane.org>
2017-11-20 15:54                           ` Chuck Lever
2017-11-20 15:54                             ` Chuck Lever
2017-11-09 16:42   ` Bart Van Assche
2017-11-09 16:42     ` Bart Van Assche
     [not found]     ` <1510245771.2608.6.camel-Sjgp3cTcYWE@public.gmane.org>
2017-11-09 17:22       ` Sagi Grimberg
2017-11-09 17:22         ` Sagi Grimberg
     [not found]         ` <d5820b65-b428-7cd1-f7f1-7d8d89d21cf5-NQWnxTmZq1alnMjI0IkVqw@public.gmane.org>
2017-11-09 17:31           ` Bart Van Assche
2017-11-09 17:31             ` Bart Van Assche
     [not found]             ` <1510248716.2608.17.camel-Sjgp3cTcYWE@public.gmane.org>
2017-11-13 20:31               ` Sagi Grimberg
2017-11-13 20:31                 ` Sagi Grimberg
     [not found]                 ` <6af627c8-2814-d562-21a2-f10788e44458-NQWnxTmZq1alnMjI0IkVqw@public.gmane.org>
2017-11-13 20:34                   ` Jason Gunthorpe
2017-11-13 20:34                     ` Jason Gunthorpe
     [not found]                     ` <20171113203444.GJ22610-uk2M96/98Pc@public.gmane.org>
2017-11-13 20:48                       ` Sagi Grimberg
2017-11-13 20:48                         ` Sagi Grimberg
     [not found]                         ` <75a7cfe3-58e0-b416-0b5b-beba1e8207fd-NQWnxTmZq1alnMjI0IkVqw@public.gmane.org>
2017-11-14  2:48                           ` Jason Gunthorpe
2017-11-14  2:48                             ` Jason Gunthorpe
     [not found]                             ` <20171114024822.GN22610-uk2M96/98Pc@public.gmane.org>
2017-11-20 12:10                               ` Sagi Grimberg
2017-11-20 12:10                                 ` Sagi Grimberg
     [not found]                                 ` <fd911816-576f-5a8e-eb41-b9081c960685-NQWnxTmZq1alnMjI0IkVqw@public.gmane.org>
2017-11-20 19:24                                   ` Jason Gunthorpe
2017-11-20 19:24                                     ` Jason Gunthorpe
     [not found]                                     ` <20171120192402.GK29075-uk2M96/98Pc@public.gmane.org>
2017-11-20 21:29                                       ` Bart Van Assche
2017-11-20 21:29                                         ` Bart Van Assche
2017-11-14 16:21                   ` Bart Van Assche
2017-11-14 16:21                     ` Bart Van Assche
     [not found]                     ` <1510676487.2280.4.camel-Sjgp3cTcYWE@public.gmane.org>
2017-11-20 12:26                       ` Sagi Grimberg
2017-11-20 12:26                         ` Sagi Grimberg
2017-11-14 10:06               ` Max Gurtovoy
2017-11-14 10:06                 ` Max Gurtovoy
     [not found]                 ` <1abee653-425d-940a-a51c-7fcd43af7203-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
2017-11-20 12:20                   ` Sagi Grimberg
2017-11-20 12:20                     ` Sagi Grimberg
2017-11-09 18:52           ` Leon Romanovsky
2017-11-09 18:52             ` Leon Romanovsky
     [not found]             ` <20171109185239.GL18825-U/DQcQFIOTAAJjI8aNfphQ@public.gmane.org>
2017-11-13 20:32               ` Sagi Grimberg
2017-11-13 20:32                 ` Sagi Grimberg
2017-11-13 22:11   ` Doug Ledford
2017-11-13 22:11     ` Doug Ledford

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.