Received: by 2002:a25:1506:0:0:0:0:0 with SMTP id 6csp966224ybv; Thu, 20 Feb 2020 10:29:38 -0800 (PST) X-Google-Smtp-Source: APXvYqxIwDmS8WNFYKdnAxvdqWrCZcgt6COF9CJ24JZ3pvJP0gDk1uvYLT4zZVCIec5FRvU4Jv2I X-Received: by 2002:a05:6808:5d0:: with SMTP id d16mr3063869oij.45.1582223378094; Thu, 20 Feb 2020 10:29:38 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1582223378; cv=none; d=google.com; s=arc-20160816; b=F92j4qLn96Q3NtGjuDAmbCLKnU1FokKTJXAML1easKtykCMro4RLNTViNaF4PmrFVp qNVCYUMo9kXL1hVmNt3NtYOmMVhn0paUTm8VT7w6nczHwyMnlfJoLPuJZxXGHwCZhYnS yBnPWXCb3cvMGDfvn/Qzae0WKzeoVD8dditASoi+dRDGBbyZVUUcylAx9AZIZISeMDor V2pFyKGwDsEOh1EGNVP/o8Oc1mpdFAGoY+lSr5ThDp3/ScfPGlQhRbyUQLoYDWeylc9k anDPLlECbLv1ssEInd502XWxmMPQ10FreZhLDJu/xjxF2u1wa33Af/WfNuquY07/UMn4 f6wg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:to:references:message-id :content-transfer-encoding:cc:date:in-reply-to:from:subject :mime-version:dkim-signature; bh=5hOl3q3a/KXxJBmb7+BrgP+cKLmwrT4eT9aFSnCTvuo=; b=ooPgbQQ/NvUC7tDwza5A/A/LQzVC8oMLFXFDP+YiGBsMv/Tr2nKskO25aW+daTLiXp ELG/XID3W2Mr4ERrb/UoUQMdMttvCJnE2IjRgVgPEWe7Tb/HyYujhiLrCsqrtXBfFMWq 8EG1ioA8YRxsqjzkDTzuWoQ2anj7fZlaNETFcrIGENe1wABeFWgO9qeN8qjP/a3lzFlX 6rLpoVdQu0uuC49oeAHuqFvvuiux4Lq+6P4ytx0xgoEiQuI2XMX1ZCyX8648SvfGaCB8 f5NOr8dN8LGpKeO3gJq4pa6PrI8CYP7RsTlUpeGNpFH2oni7QXlQuGKidw5f5XVM5wVK SulA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=Vjhd5Zu1; spf=pass (google.com: best guess record for domain of linux-nfs-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-nfs-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 194si50554oii.2.2020.02.20.10.29.25; Thu, 20 Feb 2020 10:29:38 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-nfs-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=Vjhd5Zu1; spf=pass (google.com: best guess record for domain of linux-nfs-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-nfs-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728173AbgBTS3X (ORCPT + 99 others); Thu, 20 Feb 2020 13:29:23 -0500 Received: from mail-yb1-f193.google.com ([209.85.219.193]:34065 "EHLO mail-yb1-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727535AbgBTS3X (ORCPT ); Thu, 20 Feb 2020 13:29:23 -0500 Received: by mail-yb1-f193.google.com with SMTP id u47so1659357ybi.1 for ; Thu, 20 Feb 2020 10:29:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:subject:from:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to; bh=5hOl3q3a/KXxJBmb7+BrgP+cKLmwrT4eT9aFSnCTvuo=; b=Vjhd5Zu1caSBL7ywxd3BNQR54jNorSHy9bnQ2u4X3U5zNYarLi6wPHDOhscsWuktvm 2+PbLOWqTPaTkLz3o1WNN9K0uvrQbyTy5B7RLWtLHuyckwCTSGhD7K78XRPbJYxH6g1p FU93geX/+ifzbhtBithrqGAYvzurkPbob1AooD9tA1Wb2NM77KEJKv/1k5fOnb2UpgwN TJNUoFWYMCWJX32cTS2jIdHrQMUEh07F6q+A9ZpdHONP0WlaW9xN8YFA8SzuO01jFrqe GnVt37/Q38fNUCbu662jDhBsfe2g01gg9KV/OXppxtHBts05t+whsARA3dns0ivMq5jT EsXw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:subject:from:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to; bh=5hOl3q3a/KXxJBmb7+BrgP+cKLmwrT4eT9aFSnCTvuo=; b=a6z6M4NQoXK02zKWDAqxXxvOQJYDGjvT5KkXrOmrhNtvlXsn8Ea5IDhsBZgk919Btt z6UjZObMfXXuWJt8502Oip447wbxVh08gFZIX9fAOu7wkl1TwAb/dirGFzFtaJBohK1B fnRIL396mzlGIu8UXDq0LcyICuuPiSPNYiK6leuCm/FZPsNFrPZB7+xXKEVXReQZbRan RYny6ChVc/ZniBqmds3KEBpZegnkPJ/jY6B51IQW6/lGBF1iuNaRZB2yoseYN/tc9sE8 lfurwwyFtak5Ad2vMPtj1fFqq8VcT/XgKhnAI8XoSdB4CYLms46qRX8SukVCTmsJudnr ZMGA== X-Gm-Message-State: APjAAAXPy9KtxhNjITyemaeujXvpRc4zuDoaK0FIwp7Siws2dQgIf2/h npRUgHBDADwAsLuBPY1+hQ7Nya1P X-Received: by 2002:a25:c945:: with SMTP id z66mr30769655ybf.206.1582223362280; Thu, 20 Feb 2020 10:29:22 -0800 (PST) Received: from anon-dhcp-153.1015granger.net (c-68-61-232-219.hsd1.mi.comcast.net. [68.61.232.219]) by smtp.gmail.com with ESMTPSA id b195sm204648ywh.80.2020.02.20.10.29.21 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 20 Feb 2020 10:29:21 -0800 (PST) Content-Type: text/plain; charset=us-ascii Mime-Version: 1.0 (Mac OS X Mail 12.4 \(3445.104.11\)) Subject: Re: [PATCH v2 0/6] NFS: Add support for the v4.2 READ_PLUS operation From: Chuck Lever In-Reply-To: Date: Thu, 20 Feb 2020 13:29:20 -0500 Cc: Trond.Myklebust@hammerspace.com, Linux NFS Mailing List Content-Transfer-Encoding: quoted-printable Message-Id: <8FC02B3F-76F4-4490-B63B-3FA4254D4B0B@gmail.com> References: <20200214211227.407836-1-Anna.Schumaker@Netapp.com> <34F6A8B4-3BC0-4C29-A6C1-176D3A866BFD@gmail.com> To: Anna Schumaker X-Mailer: Apple Mail (2.3445.104.11) Sender: linux-nfs-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org > On Feb 20, 2020, at 1:25 PM, Anna Schumaker = wrote: >=20 > On Thu, 2020-02-20 at 12:40 -0500, Chuck Lever wrote: >> Hi Anna- >>=20 >>> On Feb 14, 2020, at 4:12 PM, schumaker.anna@gmail.com wrote: >>>=20 >>> From: Anna Schumaker >>>=20 >>> These patches add client support for the READ_PLUS operation, which >>> breaks read requests into several "data" and "hole" segments when >>> replying to the client. I also add a "noreadplus" mount option to = allow >>> users to disable the new operation if it becomes a problem, similar = to >>> the "nordirplus" mount option that we already have. >>=20 >> Hrm, I went looking for the patch that adds "noreadplus", but I >> don't see it in this series? >=20 > You suggested dropping that patch in the v1 posting and waiting to see = if > anybody asks for it. Yes, recalling that now. I requested that because I don't like to add administrative interfaces if there isn't a clear need. I think we might have one now! >> Wondering if, to start off, the default should be "noreadplus" >> until our feet are under us. Just a thought. >=20 > I could re-add the patch with this as the default if that's the way = everybody > wants to go. Yep, I'm interested in other opinions too. > Anna >=20 >>=20 >>=20 >>> Here are the results of some performance tests I ran on Netapp lab >>> machines. I tested by reading various 2G files from a few different >>> undelying filesystems and across several NFS versions. I used the >>> `vmtouch` utility to make sure files were only cached when we wanted >>> them to be. In addition to 100% data and 100% hole cases, I also = tested >>> with files that alternate between data and hole segments. These = files >>> have either 4K, 8K, 16K, or 32K segment sizes and start with either = data >>> or hole segments. So the file mixed-4d has a 4K segment size = beginning >>> with a data segment, but mixed-32h hase 32K segments beginning with = a >>> hole. The units are in seconds, with the first number for each NFS >>> version being the uncached read time and the second number is for = when >>> the file is cached on the server. >>>=20 >>> ext4 | v3 | v4.0 | v4.1 | = v4.2 >>> | >>> = ----------|-----------------|-----------------|-----------------|---------= -- >>> ------| >>> data | 22.909 : 18.253 | 22.934 : 18.252 | 22.902 : 18.253 | = 23.485 : >>> 18.253 | >>> hole | 18.256 : 18.253 | 18.255 : 18.252 | 18.256 : 18.253 | = 0.708 >>> : 0.709 | >>> mixed-4d | 28.261 : 18.253 | 29.616 : 18.252 | 28.341 : 18.252 | = 24.508 >>> : 9.150 | >>> mixed-8d | 27.956 : 18.253 | 28.404 : 18.252 | 28.320 : 18.252 | = 23.967 >>> : 9.140 | >>> mixed-16d | 28.172 : 18.253 | 27.946 : 18.252 | 27.627 : 18.252 | = 23.043 >>> : 9.134 | >>> mixed-32d | 25.350 : 18.253 | 24.406 : 18.252 | 24.384 : 18.253 | = 20.698 >>> : 9.132 | >>> mixed-4h | 28.913 : 18.253 | 28.564 : 18.252 | 27.996 : 18.252 | = 21.837 >>> : 9.150 | >>> mixed-8h | 28.625 : 18.253 | 27.833 : 18.252 | 27.798 : 18.253 | = 21.710 >>> : 9.140 | >>> mixed-16h | 27.975 : 18.253 | 27.662 : 18.252 | 27.795 : 18.253 | = 20.585 >>> : 9.134 | >>> mixed-32h | 25.958 : 18.253 | 25.491 : 18.252 | 24.856 : 18.252 | = 21.018 >>> : 9.132 | >>>=20 >>> xfs | v3 | v4.0 | v4.1 | = v4.2 >>> | >>> = ----------|-----------------|-----------------|-----------------|---------= -- >>> ------| >>> data | 22.041 : 18.253 | 22.618 : 18.252 | 23.067 : 18.253 | = 23.496 : >>> 18.253 | >>> hole | 18.256 : 18.253 | 18.255 : 18.252 | 18.256 : 18.253 | = 0.723 >>> : 0.708 | >>> mixed-4d | 29.417 : 18.253 | 28.503 : 18.252 | 28.671 : 18.253 | = 24.957 >>> : 9.150 | >>> mixed-8d | 29.080 : 18.253 | 29.401 : 18.252 | 29.251 : 18.252 | = 24.625 >>> : 9.140 | >>> mixed-16d | 27.638 : 18.253 | 28.606 : 18.252 | 27.871 : 18.253 | = 25.511 >>> : 9.135 | >>> mixed-32d | 24.967 : 18.253 | 25.239 : 18.252 | 25.434 : 18.252 | = 21.728 >>> : 9.132 | >>> mixed-4h | 34.816 : 18.253 | 36.243 : 18.252 | 35.837 : 18.252 | = 32.332 >>> : 9.150 | >>> mixed-8h | 43.469 : 18.253 | 44.009 : 18.252 | 43.810 : 18.253 | = 37.962 >>> : 9.140 | >>> mixed-16h | 29.280 : 18.253 | 28.563 : 18.252 | 28.241 : 18.252 | = 22.116 >>> : 9.134 | >>> mixed-32h | 29.428 : 18.253 | 29.378 : 18.252 | 28.808 : 18.253 | = 27.378 >>> : 9.134 | >>>=20 >>> btrfs | v3 | v4.0 | v4.1 | = v4.2 >>> | >>> = ----------|-----------------|-----------------|-----------------|---------= -- >>> ------| >>> data | 25.547 : 18.253 | 25.053 : 18.252 | 24.209 : 18.253 | = 32.121 : >>> 18.253 | >>> hole | 18.256 : 18.253 | 18.255 : 18.252 | 18.256 : 18.252 | = 0.702 >>> : 0.724 | >>> mixed-4d | 19.016 : 18.253 | 18.822 : 18.252 | 18.955 : 18.253 | = 18.697 >>> : 9.150 | >>> mixed-8d | 19.186 : 18.253 | 19.444 : 18.252 | 18.841 : 18.253 | = 18.452 >>> : 9.140 | >>> mixed-16d | 18.480 : 18.253 | 19.010 : 18.252 | 19.167 : 18.252 | = 16.000 >>> : 9.134 | >>> mixed-32d | 18.635 : 18.253 | 18.565 : 18.252 | 18.550 : 18.252 | = 15.930 >>> : 9.132 | >>> mixed-4h | 19.079 : 18.253 | 18.990 : 18.252 | 19.157 : 18.253 | = 27.834 >>> : 9.150 | >>> mixed-8h | 18.613 : 18.253 | 19.234 : 18.252 | 18.616 : 18.253 | = 20.177 >>> : 9.140 | >>> mixed-16h | 18.590 : 18.253 | 19.221 : 18.252 | 19.654 : 18.253 | = 17.273 >>> : 9.135 | >>> mixed-32h | 18.768 : 18.253 | 19.122 : 18.252 | 18.535 : 18.252 | = 15.791 >>> : 9.132 | >>>=20 >>> ext3 | v3 | v4.0 | v4.1 | = v4.2 >>> | >>> = ----------|-----------------|-----------------|-----------------|---------= -- >>> ------| >>> data | 34.292 : 18.253 | 33.810 : 18.252 | 33.450 : 18.253 | = 33.390 : >>> 18.254 | >>> hole | 18.256 : 18.253 | 18.255 : 18.252 | 18.256 : 18.253 | = 0.718 >>> : 0.728 | >>> mixed-4d | 46.818 : 18.253 | 47.140 : 18.252 | 48.385 : 18.253 | = 42.887 >>> : 9.150 | >>> mixed-8d | 58.554 : 18.253 | 59.277 : 18.252 | 59.673 : 18.253 | = 56.760 >>> : 9.140 | >>> mixed-16d | 44.631 : 18.253 | 44.291 : 18.252 | 44.729 : 18.253 | = 40.237 >>> : 9.135 | >>> mixed-32d | 39.110 : 18.253 | 38.735 : 18.252 | 38.902 : 18.252 | = 35.270 >>> : 9.132 | >>> mixed-4h | 56.396 : 18.253 | 56.387 : 18.252 | 56.573 : 18.253 | = 67.661 >>> : 9.150 | >>> mixed-8h | 58.483 : 18.253 | 58.484 : 18.252 | 59.099 : 18.253 | = 77.958 >>> : 9.140 | >>> mixed-16h | 42.511 : 18.253 | 42.338 : 18.252 | 42.356 : 18.252 | = 51.805 >>> : 9.135 | >>> mixed-32h | 38.419 : 18.253 | 38.504 : 18.252 | 38.643 : 18.252 | = 40.411 >>> : 9.132 | >>>=20 >>>=20 >>> Changes since v1: >>> - Rebase to 5.6-rc1 >>> - Drop the mount option patch for now >>> - Fix fallback to READ when the server doesn't support READ_PLUS >>>=20 >>> Any questions? >>> Anna >>>=20 >>>=20 >>> Anna Schumaker (6): >>> SUNRPC: Split out a function for setting current page >>> SUNRPC: Add the ability to expand holes in data pages >>> SUNRPC: Add the ability to shift data to a specific offset >>> NFS: Add READ_PLUS data segment support >>> NFS: Add READ_PLUS hole segment decoding >>> NFS: Decode multiple READ_PLUS segments >>>=20 >>> fs/nfs/nfs42xdr.c | 169 +++++++++++++++++++++++++ >>> fs/nfs/nfs4proc.c | 43 ++++++- >>> fs/nfs/nfs4xdr.c | 1 + >>> include/linux/nfs4.h | 2 +- >>> include/linux/nfs_fs_sb.h | 1 + >>> include/linux/nfs_xdr.h | 2 +- >>> include/linux/sunrpc/xdr.h | 2 + >>> net/sunrpc/xdr.c | 244 = ++++++++++++++++++++++++++++++++++++- >>> 8 files changed, 457 insertions(+), 7 deletions(-) >>>=20 >>> --=20 >>> 2.25.0 >>>=20 >>=20 >> -- >> Chuck Lever >> chucklever@gmail.com -- Chuck Lever chucklever@gmail.com