Skip to content

RFC RDMA resource tracking

Leon Romanovsky linux-rdma 1 version In review

Get series with b4
b4 am [email protected]

Versions newest first

  1. v1 RFC Latest14 patches 7 repliesIn review

Patches in v1 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/14RDMA/netlink: Simplify code of autoload modulesdrivers/infiniband/core/netlink.c+3 -50 replies
2/14RDMA/core: Enforce requirement to hold lists_rwsem semaphoredrivers/infiniband/core/device.c+6 -14 replies
3/14RDMA/core: Replace open-coded variant of put_devicedrivers/infiniband/core/device.c+1 -10 replies
4/14RDMA/nldev: Refactor nldev handle to be common functiondrivers/infiniband/core/nldev.c+14 -60 replies
5/14RDMA/core: Provide locked variant of device name to index functiondrivers/infiniband/core/core_priv.h drivers/infiniband/core/device.c+17 -00 replies
6/14RDMA/netlink: Protect device query from device removaldrivers/infiniband/core/nldev.c+15 -100 replies
7/14RDMA/nldev: Protect port query from accidental device removaldrivers/infiniband/core/nldev.c+23 -140 replies
8/14RDMA/restrack: Add general infrastructure to track RDMA resourcesdrivers/infiniband/core/Makefile drivers/infiniband/core/core_priv.h drivers/infiniband/core/device.c +3 more+351 -20 replies
9/14RDMA/core: Add helper function to create named QPsdrivers/infiniband/core/core_priv.h include/rdma/ib_verbs.h+25 -00 replies
10/14RDMA: Annotate create QP callersdrivers/infiniband/core/cma.c drivers/infiniband/core/mad.c drivers/infiniband/core/uverbs_cmd.c +9 more+16 -50 replies
11/14RDMA/core: Add resource tracking for create and destroy CQsdrivers/infiniband/core/cq.c drivers/infiniband/core/uverbs_cmd.c drivers/infiniband/core/uverbs_std_types.c +1 more+8 -00 replies
12/14RDMA/core: Add resource tracking for create and destroy PDsdrivers/infiniband/core/uverbs_cmd.c drivers/infiniband/core/verbs.c+3 -00 replies
13/14RDMA/nldev: Provide global resource utilizationdrivers/infiniband/core/nldev.c include/uapi/rdma/rdma_netlink.h+176 -00 replies
14/14RDMA/nldev: Provide detailed QP informationdrivers/infiniband/core/nldev.c include/uapi/rdma/rdma_netlink.h+250 -00 replies

Reviews trailers per patch

All 14 patches have a Reviewed-by or Acked-by.

PatchMark Bloch
1/14R-b
2/14R-b
3/14R-b
4/14R-b
5/14R-b
6/14R-b
7/14R-b
8/14R-b
9/14R-b
10/14R-b
11/14R-b
12/14R-b
13/14R-b
14/14R-b

Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes.

Read the v1 thread

Cover letter [RFC PATCH rdma-next 00/14] RDMA resource tracking

Hi,

I would like to start discussion over following series. This is marked as RFC, because its verification is not completed yet, however it is stable enough to share this work with you. It works for me and Steve :).

The user space was uploaded to [1] and I'll publish it early next week.

The original goal of this series was to allow ability to view connection (QP) information about running processes, however I used this opportunity and created common infrastructure to track and report various resources. The report part is implemented in netlink (nldev), but smart ULPs can now create advanced usage models based on device utilization.

The current implementation relies on one lock per-object per-device, so creation/destroying of various objects (CQ, PD, e.t.c) on various or the same devices doesn't interfere each with another.

The data protection is performed with SRCU and its reader-writer model ensures that resource won't be destroyed till readers will finish their work.

Such scheme,

Possible future work will include:
* Reducing number of locks in RDMA, because of SRCU.
* Converting CMA to be based completely on resource tracking.
* Addition of other objects and extending current to give full and detailed state of the RDMA kernel stack.
* Replacing synchronize_srcu with call_srcu to make destroy flow non-blocking.
* Provide reliable device reset flow, preserving resource creation ordering.

The patches are available in the git repository at:
git.kernel.org/pub/scm/linux/kernel/git/leon/linux-rdma.git topic/restrack-srcu

[1]
https://git.kernel.org/pub/scm/linux/kernel/git/leon/iproute2.git/log/?h=topic/restrack

Thanks

CC: Steve Wise <[email protected]>
---------------------------------------

Leon Romanovsky (14):
RDMA/netlink: Simplify code of autoload modules RDMA/core: Enforce requirement to hold lists_rwsem semaphore RDMA/core: Replace open-coded variant of put_device RDMA/nldev: Refactor nldev handle to be common function RDMA/core: Provide locked variant of device name to index function RDMA/netlink: Protect device query from device removal RDMA/nldev: Protect port query from accidental device removal RDMA/restrack: Add general infrastructure to track RDMA resources RDMA/core: Add helper function to create named QPs
RDMA: Annotate create QP callers
RDMA/core: Add resource tracking for create and destroy CQs RDMA/core: Add resource tracking for create and destroy PDs RDMA/nldev: Provide global resource utilization RDMA/nldev: Provide detailed QP information

 drivers/infiniband/core/Makefile           |   2 +-
 drivers/infiniband/core/cma.c              |   1 +
 drivers/infiniband/core/core_priv.h        |  21 ++
 drivers/infiniband/core/cq.c               |   3 +
 drivers/infiniband/core/device.c           |  32 +-
 drivers/infiniband/core/mad.c              |   1 +
 drivers/infiniband/core/netlink.c          |   8 +-
 drivers/infiniband/core/nldev.c            | 454 +++++++++++++++++++++++++++--
 drivers/infiniband/core/restrack.c         | 177 +++++++++++
 drivers/infiniband/core/uverbs_cmd.c       |   5 +-
 drivers/infiniband/core/uverbs_std_types.c |   2 +
 drivers/infiniband/core/verbs.c            |   8 +-
 drivers/infiniband/hw/mlx4/mad.c           |   1 +
 drivers/infiniband/hw/mlx4/qp.c            |   1 +
 drivers/infiniband/hw/mlx5/gsi.c           |   2 +
 drivers/infiniband/ulp/ipoib/ipoib_cm.c    |   4 +-
 drivers/infiniband/ulp/ipoib/ipoib_verbs.c |   1 +
 drivers/infiniband/ulp/srp/ib_srp.c        |   1 +
 drivers/infiniband/ulp/srpt/ib_srpt.c      |   1 +
 include/rdma/ib_verbs.h                    |  23 +-
 include/rdma/restrack.h                    | 149 ++++++++++
 include/uapi/rdma/rdma_netlink.h           |  54 ++++
 net/smc/smc_ib.c                           |   1 +
 23 files changed, 908 insertions(+), 44 deletions(-)
 create mode 100644 drivers/infiniband/core/restrack.c
 create mode 100644 include/rdma/restrack.h

--
2.15.1

--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html