From patchwork Mon Apr 11 20:10:25 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 8805331 Return-Path: X-Original-To: patchwork-linux-rdma@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork2.web.kernel.org (Postfix) with ESMTP id 038C1C0553 for ; Mon, 11 Apr 2016 20:10:36 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 0A4D220270 for ; Mon, 11 Apr 2016 20:10:35 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 15C0E2026D for ; Mon, 11 Apr 2016 20:10:34 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751360AbcDKUKa (ORCPT ); Mon, 11 Apr 2016 16:10:30 -0400 Received: from mail-ig0-f193.google.com ([209.85.213.193]:33790 "EHLO mail-ig0-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751891AbcDKUK1 (ORCPT ); Mon, 11 Apr 2016 16:10:27 -0400 Received: by mail-ig0-f193.google.com with SMTP id nt3so76623igb.0; Mon, 11 Apr 2016 13:10:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:subject:from:to:date:message-id:in-reply-to:references :user-agent:mime-version:content-transfer-encoding; bh=B33ml6Iu2jpAOHC5mAU/hB6BEOSSCi5SeNfGaLcbd28=; b=AmqvGxdeF4MGQRbXyT7QvcvBIZun9ASpJO0JeU/iNva/RiPJ2OPGOqqu/hp/s8diLh 2ZmHZyAtouxDRUG2ppRhB49uqXSdkovKtww6aAGYiLPZvthLQ4iwd0hlIMOgIZ04y96a Pu8XP29GX/q0t2pvBOO9M9tC/mMKUS5+HqMVCFfjrtFg/K4S8Mv+LCKK1sZtC0ERWhbx hWX+L5s5ba4mb8zp0paYCWfIKHjAJ2T0q9dWHcSj5IykYfdy6eSL6fCCoVSxICWWBsJX 4xJdeXeN3bmSzfLl/b5LPrmqiEyp94EHwY0IUervDdYx9AreUyEJU9K0trGwsJ8e6Xr7 Nj4w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:sender:subject:from:to:date:message-id :in-reply-to:references:user-agent:mime-version :content-transfer-encoding; bh=B33ml6Iu2jpAOHC5mAU/hB6BEOSSCi5SeNfGaLcbd28=; b=iK0mWUMZQw4fDbh29FFGTLBr4xhAOMS0ggfeQdcDqD8+7IT17OwTjkq8nXHnoPvuh4 Lm0+ArSCvyR6oi5jEWBVSKB3p3Q0uGvBqtLRW45yvAjpXecRDd+vGV+6tcHYKxbQlOg+ QDzyE92nUwEHgnkhJEO0rxN8XvN1naOn3j99gzDsQlyIPqP5WwdsRiUTQmfQKDG65Tpg Qq4fllwJihAo/5oevlxTzIXHfVoxcgN6vjzqRP1tlJXaOHLcc1bKFALeTEyptLJQdZpp RBz3eMXKFjA4TiDLs0DcXfwB1d7iZtWK6MzDYWpVvuOBS7oPZAmufL9JSiG5rFkgz79d YRqA== X-Gm-Message-State: AD7BkJL+dwHojoTDFNbhLKKn41/ZbwVVpsmDV9upenzrRII3sN3O0EpVL5RHbo73TL8pNg== X-Received: by 10.50.79.200 with SMTP id l8mr18781493igx.75.1460405426548; Mon, 11 Apr 2016 13:10:26 -0700 (PDT) Received: from manet.1015granger.net ([2604:8800:100:81fc:ec4:7aff:fe6c:1dce]) by smtp.gmail.com with ESMTPSA id k1sm13205466igg.16.2016.04.11.13.10.25 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 11 Apr 2016 13:10:25 -0700 (PDT) Subject: [PATCH v1 02/18] xprtrdma: Bound the inline threshold values From: Chuck Lever To: linux-rdma@vger.kernel.org, linux-nfs@vger.kernel.org Date: Mon, 11 Apr 2016 16:10:25 -0400 Message-ID: <20160411201024.20531.77252.stgit@manet.1015granger.net> In-Reply-To: <20160411200323.20531.8893.stgit@manet.1015granger.net> References: <20160411200323.20531.8893.stgit@manet.1015granger.net> User-Agent: StGit/0.17.1-dirty MIME-Version: 1.0 Sender: linux-rdma-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-rdma@vger.kernel.org X-Spam-Status: No, score=-7.8 required=5.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_HI,RP_MATCHES_RCVD,T_DKIM_INVALID,UNPARSEABLE_RELAY autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Currently the sysctls that allow setting the inline threshold allow any value to be set. Small values only make the transport run slower. The default 1KB setting is as low as is reasonable. And the logic that decides how to divide a Send buffer buffer between RPC-over-RDMA header and RPC message assumes (but does not check) that the lower bound is not crazy (say, 57 bytes). Send and receive buffers share a page with some control information. Values larger than about 3KB can't be supported, currently. Signed-off-by: Chuck Lever --- include/linux/sunrpc/xprtrdma.h | 4 +++- net/sunrpc/xprtrdma/transport.c | 6 ++++++ 2 files changed, 9 insertions(+), 1 deletion(-) -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html diff --git a/include/linux/sunrpc/xprtrdma.h b/include/linux/sunrpc/xprtrdma.h index 767190b..39267dc 100644 --- a/include/linux/sunrpc/xprtrdma.h +++ b/include/linux/sunrpc/xprtrdma.h @@ -52,7 +52,9 @@ #define RPCRDMA_DEF_SLOT_TABLE (128U) #define RPCRDMA_MAX_SLOT_TABLE (256U) -#define RPCRDMA_DEF_INLINE (1024) /* default inline max */ +#define RPCRDMA_MIN_INLINE (1024) /* min inline thresh */ +#define RPCRDMA_DEF_INLINE (1024) /* default inline thresh */ +#define RPCRDMA_MAX_INLINE (3068) /* max inline thresh */ /* Memory registration strategies, by number. * This is part of a kernel / user space API. Do not remove. */ diff --git a/net/sunrpc/xprtrdma/transport.c b/net/sunrpc/xprtrdma/transport.c index 9954342..16595ff 100644 --- a/net/sunrpc/xprtrdma/transport.c +++ b/net/sunrpc/xprtrdma/transport.c @@ -73,6 +73,8 @@ static unsigned int xprt_rdma_memreg_strategy = RPCRDMA_FRMR; static unsigned int min_slot_table_size = RPCRDMA_MIN_SLOT_TABLE; static unsigned int max_slot_table_size = RPCRDMA_MAX_SLOT_TABLE; +static unsigned int min_inline_size = RPCRDMA_MIN_INLINE; +static unsigned int max_inline_size = RPCRDMA_MAX_INLINE; static unsigned int zero; static unsigned int max_padding = PAGE_SIZE; static unsigned int min_memreg = RPCRDMA_BOUNCEBUFFERS; @@ -96,6 +98,8 @@ static struct ctl_table xr_tunables_table[] = { .maxlen = sizeof(unsigned int), .mode = 0644, .proc_handler = proc_dointvec, + .extra1 = &min_inline_size, + .extra2 = &max_inline_size, }, { .procname = "rdma_max_inline_write", @@ -103,6 +107,8 @@ static struct ctl_table xr_tunables_table[] = { .maxlen = sizeof(unsigned int), .mode = 0644, .proc_handler = proc_dointvec, + .extra1 = &min_inline_size, + .extra2 = &max_inline_size, }, { .procname = "rdma_inline_write_padding",