Re: [PATCH v1 14/14] xprtrmda: Reduce per-transport MR allocation

Sagi Grimberg
2015-05-07T11:00:55Z

On 5/4/2015 8:58 PM, Chuck Lever wrote:
> Reduce resource consumption per-transport to make way for increasing
> the credit limit and maximum r/wsize. Pre-allocate fewer MRs.
>
> Signed-off-by: Chuck Lever <chuck.lever-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org>
> ---
> net/sunrpc/xprtrdma/fmr_ops.c | 6 ++++--
> net/sunrpc/xprtrdma/frwr_ops.c | 6 ++++--
> 2 files changed, 8 insertions(+), 4 deletions(-)
>
> diff --git a/net/sunrpc/xprtrdma/fmr_ops.c b/net/sunrpc/xprtrdma/fmr_ops.c
> index 4a53ad5..f1e8daf 100644
> --- a/net/sunrpc/xprtrdma/fmr_ops.c
> +++ b/net/sunrpc/xprtrdma/fmr_ops.c
> @@ -69,8 +69,10 @@ fmr_op_init(struct rpcrdma_xprt *r_xprt)
> INIT_LIST_HEAD(&buf->rb_mws);
> INIT_LIST_HEAD(&buf->rb_all);
>
> - i = (buf->rb_max_requests + 1) * RPCRDMA_MAX_SEGS;
> - dprintk("RPC: %s: initializing %d FMRs\n", __func__, i);
> + i = max_t(int, RPCRDMA_MAX_DATA_SEGS / RPCRDMA_MAX_FMR_SGES, 1);
> + i += 2; /* head + tail */
> + i *= buf->rb_max_requests; /* one set for each RPC slot */
> + dprintk("RPC: %s: initalizing %d FMRs\n", __func__, i);
>
> rc = -ENOMEM;
> while (i--) {
> diff --git a/net/sunrpc/xprtrdma/frwr_ops.c b/net/sunrpc/xprtrdma/frwr_ops.c
> index edc10ba..fc2d0c6 100644
> --- a/net/sunrpc/xprtrdma/frwr_ops.c
> +++ b/net/sunrpc/xprtrdma/frwr_ops.c
> @@ -270,8 +270,10 @@ frwr_op_init(struct rpcrdma_xprt *r_xprt)
> INIT_LIST_HEAD(&buf->rb_mws);
> INIT_LIST_HEAD(&buf->rb_all);
>
> - i = (buf->rb_max_requests + 1) * RPCRDMA_MAX_SEGS;
> - dprintk("RPC: %s: initializing %d FRMRs\n", __func__, i);
> + i = max_t(int, RPCRDMA_MAX_DATA_SEGS / depth, 1);
> + i += 2; /* head + tail */
> + i *= buf->rb_max_requests; /* one set for each RPC slot */
> + dprintk("RPC: %s: initalizing %d FRMRs\n", __func__, i);
>
> while (i--) {
> struct rpcrdma_mw *r;
>

Looks good.

Reviewed-by: Sagi Grimberg <sagig-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>