mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 02:30:34 +02:00 
			
		
		
		
	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
					
				
					 2 changed files with 12 additions and 0 deletions
				
			
		| 
						 | 
					@ -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 a new issue