xprtrdma: Reduce the doorbell rate (Receive)
Post RECV WRs in batches to reduce the hardware doorbell rate per transport. This helps the RPC-over-RDMA client scale better in number of transports. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
This commit is contained in:
parent
d4550bbee6
commit
e340c2d6ef
@ -1480,6 +1480,8 @@ rpcrdma_post_recvs(struct rpcrdma_xprt *r_xprt, bool temp)
|
|||||||
if (ep->rep_receive_count > needed)
|
if (ep->rep_receive_count > needed)
|
||||||
goto out;
|
goto out;
|
||||||
needed -= ep->rep_receive_count;
|
needed -= ep->rep_receive_count;
|
||||||
|
if (!temp)
|
||||||
|
needed += RPCRDMA_MAX_RECV_BATCH;
|
||||||
|
|
||||||
count = 0;
|
count = 0;
|
||||||
wr = NULL;
|
wr = NULL;
|
||||||
|
@ -205,6 +205,16 @@ struct rpcrdma_rep {
|
|||||||
struct ib_recv_wr rr_recv_wr;
|
struct ib_recv_wr rr_recv_wr;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* To reduce the rate at which a transport invokes ib_post_recv
|
||||||
|
* (and thus the hardware doorbell rate), xprtrdma posts Receive
|
||||||
|
* WRs in batches.
|
||||||
|
*
|
||||||
|
* Setting this to zero disables Receive post batching.
|
||||||
|
*/
|
||||||
|
enum {
|
||||||
|
RPCRDMA_MAX_RECV_BATCH = 7,
|
||||||
|
};
|
||||||
|
|
||||||
/* struct rpcrdma_sendctx - DMA mapped SGEs to unmap after Send completes
|
/* struct rpcrdma_sendctx - DMA mapped SGEs to unmap after Send completes
|
||||||
*/
|
*/
|
||||||
struct rpcrdma_req;
|
struct rpcrdma_req;
|
||||||
|
Loading…
Reference in New Issue
Block a user