All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3 00/14] Server-side NFS/RDMA changes proposed for v4.12
@ 2017-04-09 17:05 ` Chuck Lever
  0 siblings, 0 replies; 42+ messages in thread
From: Chuck Lever @ 2017-04-09 17:05 UTC (permalink / raw)
  To: bfields; +Cc: linux-rdma, linux-nfs

This series overhauls the "reply send" side of the RPC-over-RDMA
transport to use the new rdma_rw API. No significant performance
changes were noticed with this overhaul. Benefits include:

<> Better scalability -- fewer ib_post_send calls per RPC Reply

<> Better code modularity -- less code duplication with other ULPs

<> Ability for svcrdma to use any registration mode for RDMA Writes

<> Correct handling of RPCs that have both a Write and a Reply chunk

<> Correct handling of Write chunk overrun

This revision makes two scalability improvements that Christoph and
Sagi requested in previous review comments:

1. Use sg_alloc_table_chained to allocate the scatterlist for each
rdma_rw_ctx. A permanent part of the scatterlist is used for smaller
I/Os, and a chained part is allocated on demand when performing
large I/Os. This reduces the amount of memory tied down per client.

2. So far each rdma_rw_ctx has been posted individually. Now all
rdma_rw_ctx's for one chunk are chained together and posted with a
single ib_post_send. This reduces the number of ib_post_send
operations for complex RPC Replies.


Bruce, IMO these are ready for your review.


Available in the "nfsd-rdma-for-4.12" topic branch of this git repo:

git://git.linux-nfs.org/projects/cel/cel-2.6.git


Or for browsing:

http://git.linux-nfs.org/?p=cel/cel-2.6.git;a=log;h=refs/heads/nfsd-rdma-for-4.12


Changes since v2:
- Rebased on v4.11-rc5
- Use chained sg_tables
- Always one ib_post_send per chunk


Changes since v1:
- Rebased on v4.11-rc4
- Dropped clean up of svc_rdma_post_recv
- Postponed addition of code related to recvfrom
- Made svc_rdma_{get,put}_rw_ctxt behave symmetrically
- Converted scatterlist to sg_table
- Moved transport header construction into svc_rdma_sendto.c

---

Chuck Lever (14):
      svcrdma: Move send_wr to svc_rdma_op_ctxt
      svcrdma: Add svc_rdma_map_reply_hdr()
      svcrdma: Eliminate RPCRDMA_SQ_DEPTH_MULT
      svcrdma: Add helper to save pages under I/O
      svcrdma: Clean up svc_rdma_get_inv_rkey()
      svcrdma: Introduce local rdma_rw API helpers
      svcrdma: Use rdma_rw API in RPC reply path
      svcrdma: Clean up RDMA_ERROR path
      svcrdma: Report Write/Reply chunk overruns
      svcrdma: Clean up RPC-over-RDMA backchannel reply processing
      svcrdma: Reduce size of sge array in struct svc_rdma_op_ctxt
      svcrdma: Remove unused RDMA Write completion handler
      svcrdma: Remove the req_map cache
      svcrdma: Clean out old XDR encoders


 include/linux/sunrpc/rpc_rdma.h            |    3 
 include/linux/sunrpc/svc_rdma.h            |   75 +-
 net/sunrpc/Kconfig                         |    1 
 net/sunrpc/xprtrdma/Makefile               |    2 
 net/sunrpc/xprtrdma/svc_rdma.c             |    8 
 net/sunrpc/xprtrdma/svc_rdma_backchannel.c |   71 +-
 net/sunrpc/xprtrdma/svc_rdma_marshal.c     |   89 ---
 net/sunrpc/xprtrdma/svc_rdma_recvfrom.c    |   79 ++
 net/sunrpc/xprtrdma/svc_rdma_rw.c          |  512 +++++++++++++++
 net/sunrpc/xprtrdma/svc_rdma_sendto.c      |  978 ++++++++++++++--------------
 net/sunrpc/xprtrdma/svc_rdma_transport.c   |  110 ---
 11 files changed, 1131 insertions(+), 797 deletions(-)
 create mode 100644 net/sunrpc/xprtrdma/svc_rdma_rw.c

--
Chuck Lever

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

end of thread, other threads:[~2017-04-14 19:33 UTC | newest]

Thread overview: 42+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-04-09 17:05 [PATCH v3 00/14] Server-side NFS/RDMA changes proposed for v4.12 Chuck Lever
2017-04-09 17:05 ` Chuck Lever
2017-04-09 17:05 ` [PATCH v3 01/14] svcrdma: Move send_wr to svc_rdma_op_ctxt Chuck Lever
2017-04-09 17:05   ` Chuck Lever
2017-04-09 17:05 ` [PATCH v3 02/14] svcrdma: Add svc_rdma_map_reply_hdr() Chuck Lever
2017-04-09 17:05   ` Chuck Lever
2017-04-09 17:05 ` [PATCH v3 03/14] svcrdma: Eliminate RPCRDMA_SQ_DEPTH_MULT Chuck Lever
2017-04-09 17:05   ` Chuck Lever
2017-04-09 17:06 ` [PATCH v3 04/14] svcrdma: Add helper to save pages under I/O Chuck Lever
2017-04-09 17:06   ` Chuck Lever
2017-04-09 17:06 ` [PATCH v3 05/14] svcrdma: Clean up svc_rdma_get_inv_rkey() Chuck Lever
2017-04-09 17:06   ` Chuck Lever
2017-04-09 17:06 ` [PATCH v3 06/14] svcrdma: Introduce local rdma_rw API helpers Chuck Lever
2017-04-09 17:06   ` Chuck Lever
2017-04-09 17:06 ` [PATCH v3 07/14] svcrdma: Use rdma_rw API in RPC reply path Chuck Lever
2017-04-09 17:06   ` Chuck Lever
2017-04-09 17:06 ` [PATCH v3 08/14] svcrdma: Clean up RDMA_ERROR path Chuck Lever
2017-04-09 17:06   ` Chuck Lever
2017-04-09 17:06 ` [PATCH v3 09/14] svcrdma: Report Write/Reply chunk overruns Chuck Lever
2017-04-09 17:06   ` Chuck Lever
2017-04-14 15:56   ` J. Bruce Fields
2017-04-14 15:56     ` J. Bruce Fields
2017-04-14 16:10     ` Chuck Lever
2017-04-14 16:10       ` Chuck Lever
2017-04-14 17:52       ` J. Bruce Fields
2017-04-14 17:52         ` J. Bruce Fields
2017-04-14 19:07         ` Chuck Lever
2017-04-14 19:07           ` Chuck Lever
2017-04-14 19:33           ` J. Bruce Fields
2017-04-14 19:33             ` J. Bruce Fields
2017-04-09 17:06 ` [PATCH v3 10/14] svcrdma: Clean up RPC-over-RDMA backchannel reply processing Chuck Lever
2017-04-09 17:06   ` Chuck Lever
2017-04-09 17:06 ` [PATCH v3 11/14] svcrdma: Reduce size of sge array in struct svc_rdma_op_ctxt Chuck Lever
2017-04-09 17:06   ` Chuck Lever
2017-04-09 17:07 ` [PATCH v3 12/14] svcrdma: Remove unused RDMA Write completion handler Chuck Lever
2017-04-09 17:07   ` Chuck Lever
2017-04-09 17:07 ` [PATCH v3 13/14] svcrdma: Remove the req_map cache Chuck Lever
2017-04-09 17:07   ` Chuck Lever
2017-04-09 17:07 ` [PATCH v3 14/14] svcrdma: Clean out old XDR encoders Chuck Lever
2017-04-09 17:07   ` Chuck Lever
2017-04-14 17:54 ` [PATCH v3 00/14] Server-side NFS/RDMA changes proposed for v4.12 J. Bruce Fields
2017-04-14 17:54   ` J. Bruce Fields

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.