From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 70EA4C3DA4B for ; Mon, 15 Jul 2024 19:53:54 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 08D116B00A4; Mon, 15 Jul 2024 15:53:54 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 03CE56B00A5; Mon, 15 Jul 2024 15:53:53 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id E1FED6B00A6; Mon, 15 Jul 2024 15:53:53 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id C44106B00A4 for ; Mon, 15 Jul 2024 15:53:53 -0400 (EDT) Received: from smtpin18.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 6AAEB1C2F29 for ; Mon, 15 Jul 2024 19:53:53 +0000 (UTC) X-FDA: 82343037546.18.5978CDD Received: from sin.source.kernel.org (sin.source.kernel.org [145.40.73.55]) by imf22.hostedemail.com (Postfix) with ESMTP id 138A3C0021 for ; Mon, 15 Jul 2024 19:53:50 +0000 (UTC) Authentication-Results: imf22.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b="O/RPKvYT"; spf=pass (imf22.hostedemail.com: domain of jlayton@kernel.org designates 145.40.73.55 as permitted sender) smtp.mailfrom=jlayton@kernel.org; dmarc=pass (policy=none) header.from=kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1721073212; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=RYk34ugFQKy51mUaCEmj1fZlZRYX9FM5yO9ToqxlDGM=; b=fNUAsZzf4OZO21I/0/mS3K8s4rcfDvi7DLVluNZscOZmsz4Ge2Vkky7HxP4xF6de+4d3QF pXwOIuKbWmk5IxVgsoBJ64w1yxc6LWl10UnI2SpovksiSDZ3rGkYc3GEVhhpq4yAjzEp4L RatCUierHPPiQ1DUcWTMqbphhtngSAI= ARC-Authentication-Results: i=1; imf22.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b="O/RPKvYT"; spf=pass (imf22.hostedemail.com: domain of jlayton@kernel.org designates 145.40.73.55 as permitted sender) smtp.mailfrom=jlayton@kernel.org; dmarc=pass (policy=none) header.from=kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1721073212; a=rsa-sha256; cv=none; b=GrJUCNAmpKPryZ+BhhRg1IdZ24xAb44PknDKp9vmXq+9CcWoXXAcTOZcXqRbnT8/+oIqZL kIq4ErSxk2dzc8qwSiQ4IkVsARvsu3PPoyfUQrvK+Pyv4Ih+s+supMUqRMRyOfbdiXQrrF IEbl7IPSt10r0C04jC2bcFVomd/wYfE= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sin.source.kernel.org (Postfix) with ESMTP id E1F33CE1081; Mon, 15 Jul 2024 19:53:46 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 747CFC32782; Mon, 15 Jul 2024 19:53:43 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1721073226; bh=yli0LWXpH5CVRAJkf/HBclTwQ2A3btlIJ24aQWTuFvM=; h=Subject:From:To:Cc:Date:In-Reply-To:References:From; b=O/RPKvYTzLamtAGuM97RkutzNp/xIwEXzluX8j43FEJJiOQTQEgBlNDA5SixNP19s uWTHGe0vQ17ZtZR2/9jvEp1GD6El8gciPxwZitIaTz/dy8BVVryOsdHZSkFtoDeRjs vach9xfj9ATrdpyxADoGXSjODYPK93hieFRuSWK/7Tb3oSa27c95S9bsBF0d0w/ciB yeM74Sy+Hs9A2XOFrWqywT/Pku0pXkrA2kVCqXfJeUeK4gybj4jC8HtrIi1Ah8EvWg SD9COo76Hvd4UceLOV921b9L3dvLR+iie/4A2rqSViEDcWLB/m3qcCJ7HEydTL3Zp6 1Na2AN0g5tAhg== Message-ID: <7bb897f31fded59aae8d62a6796dd21feebd0642.camel@kernel.org> Subject: Re: [PATCH v6 3/9] fs: add percpu counters for significant multigrain timestamp events From: Jeff Layton To: "Darrick J. Wong" Cc: Alexander Viro , Christian Brauner , Jan Kara , Steven Rostedt , Masami Hiramatsu , Mathieu Desnoyers , Chandan Babu R , Theodore Ts'o , Andreas Dilger , Chris Mason , Josef Bacik , David Sterba , Hugh Dickins , Andrew Morton , Jonathan Corbet , Dave Chinner , Andi Kleen , Christoph Hellwig , Uros Bizjak , Kent Overstreet , Arnd Bergmann , Randy Dunlap , linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org, linux-xfs@vger.kernel.org, linux-ext4@vger.kernel.org, linux-btrfs@vger.kernel.org, linux-mm@kvack.org, linux-nfs@vger.kernel.org, linux-doc@vger.kernel.org Date: Mon, 15 Jul 2024 15:53:42 -0400 In-Reply-To: <20240715183211.GD103014@frogsfrogsfrogs> References: <20240715-mgtime-v6-0-48e5d34bd2ba@kernel.org> <20240715-mgtime-v6-3-48e5d34bd2ba@kernel.org> <20240715183211.GD103014@frogsfrogsfrogs> Autocrypt: addr=jlayton@kernel.org; prefer-encrypt=mutual; keydata=mQINBE6V0TwBEADXhJg7s8wFDwBMEvn0qyhAnzFLTOCHooMZyx7XO7dAiIhDSi7G1NPxwn8jdFUQMCR/GlpozMFlSFiZXiObE7sef9rTtM68ukUyZM4pJ9l0KjQNgDJ6Fr342Htkjxu/kFV1WvegyjnSsFt7EGoDjdKqr1TS9syJYFjagYtvWk/UfHlW09X+jOh4vYtfX7iYSx/NfqV3W1D7EDi0PqVT2h6v8i8YqsATFPwO4nuiTmL6I40ZofxVd+9wdRI4Db8yUNA4ZSP2nqLcLtFjClYRBoJvRWvsv4lm0OX6MYPtv76hka8lW4mnRmZqqx3UtfHX/hF/zH24Gj7A6sYKYLCU3YrI2Ogiu7/ksKcl7goQjpvtVYrOOI5VGLHge0awt7bhMCTM9KAfPc+xL/ZxAMVWd3NCk5SamL2cE99UWgtvNOIYU8m6EjTLhsj8snVluJH0/RcxEeFbnSaswVChNSGa7mXJrTR22lRL6ZPjdMgS2Km90haWPRc8Wolcz07Y2se0xpGVLEQcDEsvv5IMmeMe1/qLZ6NaVkNuL3WOXvxaVT9USW1+/SGipO2IpKJjeDZfehlB/kpfF24+RrK+seQfCBYyUE8QJpvTZyfUHNYldXlrjO6n5MdOempLqWpfOmcGkwnyNRBR46g/jf8KnPRwXs509yAqDB6sELZH+yWr9LQZEwARAQABtCBKZWZmIExheXRvbiA8amxheXRvbkBrZXJuZWwub3JnPokCOAQTAQIAIgUCWe8u6AIbAwYLCQgHAwIGFQgCCQoLBBYCAwECHgECF4AACgkQAA5oQRlWghUuCg/+Lb/xGxZD2Q1oJVAE37uW308UpVSD2tAMJUvFTdDbfe3zKlPDTuVsyNsALBGclPLagJ5ZTP+Vp2irAN9uwBuacBOTtmOdz4ZN2tdvNgozzuxp4CHBDVzAslUi2idy+xpsp47DWPxYFIRP3M8QG/aNW052L aPc0cedY xp8+9eiVUNpxF4SiU4i9JDfX/sn9XcfoVZIxMpCRE750zvJvcCUz9HojsrMQ1NFc7MFT1z3MOW2/RlzPcog7xvR5ENPH19ojRDCHqumUHRry+RF0lH00clzX/W8OrQJZtoBPXv9ahka/Vp7kEulcBJr1cH5Wz/WprhsIM7U9pse1f1gYy9YbXtWctUz8uvDR7shsQxAhX3qO7DilMtuGo1v97I/Kx4gXQ52syh/w6EBny71CZrOgD6kJwPVVAaM1LRC28muq91WCFhs/nzHozpbzcheyGtMUI2Ao4K6mnY+3zIuXPygZMFr9KXE6fF7HzKxKuZMJOaEZCiDOq0anx6FmOzs5E6Jqdpo/mtI8beK+BE7Va6ni7YrQlnT0i3vaTVMTiCThbqsB20VrbMjlhpf8lfK1XVNbRq/R7GZ9zHESlsa35ha60yd/j3pu5hT2xyy8krV8vGhHvnJ1XRMJBAB/UYb6FyC7S+mQZIQXVeAA+smfTT0tDrisj1U5x6ZB9b3nBg65ke5Ag0ETpXRPAEQAJkVmzCmF+IEenf9a2nZRXMluJohnfl2wCMmw5qNzyk0f+mYuTwTCpw7BE2H0yXk4ZfAuA+xdj14K0A1Dj52j/fKRuDqoNAhQe0b6ipo85Sz98G+XnmQOMeFVp5G1Z7r/QP/nus3mXvtFsu9lLSjMA0cam2NLDt7vx3l9kUYlQBhyIE7/DkKg+3fdqRg7qJoMHNcODtQY+n3hMyaVpplJ/l0DdQDbRSZi5AzDM3DWZEShhuP6/E2LN4O3xWnZukEiz688d1ppl7vBZO9wBql6Ft9Og74diZrTN6lXGGjEWRvO55h6ijMsLCLNDRAVehPhZvSlPldtUuvhZLAjdWpwmzbRIwgoQcO51aWeKthpcpj8feDdKdlVjvJO9fgFD5kqZQiErRVPpB7VzA/pYV5Mdy7GMbPjmO0IpoL0tVZ8JvUzUZXB3ErS/dJflvboAAQeLpLCk QjqZiQ/D CmgJCrBJst9Xc7YsKKS379Tc3GU33HNSpaOxs2NwfzoesyjKU+P35czvXWTtj7KVVSj3SgzzFk+gLx8y2Nvt9iESdZ1Ustv8tipDsGcvIZ43MQwqU9YbLg8k4V9ch+Mo8SE+C0jyZYDCE2ZGf3OztvtSYMsTnF6/luzVyej1AFVYjKHORzNoTwdHUeC+9/07GO0bMYTPXYvJ/vxBFm3oniXyhgb5FtABEBAAGJAh8EGAECAAkFAk6V0TwCGwwACgkQAA5oQRlWghXhZRAAyycZ2DDyXh2bMYvI8uHgCbeXfL3QCvcw2XoZTH2l2umPiTzrCsDJhgwZfG9BDyOHaYhPasd5qgrUBtjjUiNKjVM+Cx1DnieR0dZWafnqGv682avPblfi70XXr2juRE/fSZoZkyZhm+nsLuIcXTnzY4D572JGrpRMTpNpGmitBdh1l/9O7Fb64uLOtA5Qj5jcHHOjL0DZpjmFWYKlSAHmURHrE8M0qRryQXvlhoQxlJR4nvQrjOPMsqWD5F9mcRyowOzr8amasLv43w92rD2nHoBK6rbFE/qC7AAjABEsZq8+TQmueN0maIXUQu7TBzejsEbV0i29z+kkrjU2NmK5pcxgAtehVxpZJ14LqmN6E0suTtzjNT1eMoqOPrMSx+6vOCIuvJ/MVYnQgHhjtPPnU86mebTY5Loy9YfJAC2EVpxtcCbx2KiwErTndEyWL+GL53LuScUD7tW8vYbGIp4RlnUgPLbqpgssq2gwYO9m75FGuKuB2+2bCGajqalid5nzeq9v7cYLLRgArJfOIBWZrHy2m0C+pFu9DSuV6SNr2dvMQUv1V58h0FaSOxHVQnJdnoHn13g/CKKvyg2EMrMt/EfcXgvDwQbnG9we4xJiWOIOcsvrWcB6C6lWBDA+In7w7SXnnokkZWuOsJdJQdmwlWC5L5ln9xgfr/4mOY38B0U= Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable User-Agent: Evolution 3.50.4 (3.50.4-1.fc39) MIME-Version: 1.0 X-Rspamd-Server: rspam11 X-Rspamd-Queue-Id: 138A3C0021 X-Stat-Signature: n38rhgogiq48qbpsf1putq65iwiw1u3m X-Rspam-User: X-HE-Tag: 1721073230-865632 X-HE-Meta: U2FsdGVkX1/AkLpamKLKCFNGc0+Zc8NP7r8Ynljt8tUrVZM2C7QNtAIbUTQIm5GhDZepRIKQMi28VMXuGgc9Oqf27Sq/CX2yOsemEcVEjIUigEhye8Fq5KtEMksFvE4CdbuSQ6K85th/SaVxytmu0jh8Kvm0XZk3a5e7PdDJvaG98f/yjvo7T6U4o0XnfoWkO4QJwcUVmvkUVFtlM0MolVNQ24FeSedUiB7VIIj54JqXZocg1v67Q3ZRuyIWF6r6f7AmabPE3HhZAufs7+IIHjincrrh+ifcfMKSI6UHo0GAwRXzKkPYESj1WDMc6WsTaetf3lRK99kEGR0lj9JNz88PPXsLqoXRRfeSc3Yil+YWUIVVR1pmcw6gWLUtxNKgqG/qx5+ty2IoMZ2fU+CRivClNWxr0vEQI2x2wb4WAsb22F/OqB8EwHbKhvlypGZtD8iID/ry5hjN/76NGw27KdIK1AoxONzvtY8LHW4A9x7sCe7TznFlqTPBJMZ9uLrOXE9+rMRZNdXqhEZrBpE9WXyIbCEygFBzL056Q3M0T5IxqH5oWAnHWPUPKDt596ychxK6/04OQX+nDytqZtCFmjYzEP2Doqpbw8ZAbuvpNkcgfrvFJBXCUbDBx/ro/g4+iBFX86S94HZ7TaBsN/nDj1HpUXunv+Td+5dE/2tMRZiGjHFZcTdoAnf64TenJvCQwoVpC+a9MKycAlREhEyyqBZXFhlkZBBmKLttFO2fsshDB6Gaa4JqtnszKyffluAdcbyAHfoWVW7fnqNSYgNWSb3tje3LXIEodPebXQRDiFxz6zrdsKsI/vtqOHBAwWS+StjAKnFaif8VRloOb7boTk3aFMo0B5U56jk6IIo+iCR5hH+lade4ory8XaxX7N0jYVvDh52ODKN9otw6CgK15YXsU3kV47MDjz4L4lQKtBZj+4oocO1qFXZCgFUF7F2hYGA4tLqoNWp8h1j0+xq Y0iOe/Wa sC+C/CtlSUeYDbPiWlBwOye6MezyzURlorbp8LO2TH4WUt5q6DLZI9bOYz+aeFbFMhURSweTmQsy9csxO3WHEbXeUc3FGHVmCWU1kFh3bQV8CDkHdnctixVGq1Ml79RJWY7NcpSmkMAxgZJQPOE44s7qZ07Qh2VoUfkEDt3IwJlUdpc4B2oTtNhNA+MmTE/u3wnPSV6jl9bEvXh6yLEnSFRzEnPdAdpbQ8pCj/uD2EJl6PgmKD3tdrmhk98JKvqdZDGIQKT3jqG+UytnTfJrgJTdrHQasKvUvj7ABa21dbBWzjTRd6eU5LwXIjg== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On Mon, 2024-07-15 at 11:32 -0700, Darrick J. Wong wrote: > On Mon, Jul 15, 2024 at 08:48:54AM -0400, Jeff Layton wrote: > > Four percpu counters for counting various stats around mgtimes, and > > a > > new debugfs file for displaying them: > >=20 > > - number of attempted ctime updates > > - number of successful i_ctime_nsec swaps > > - number of fine-grained timestamp fetches > > - number of floor value swaps > >=20 > > Reviewed-by: Josef Bacik > > Signed-off-by: Jeff Layton > > --- > > =C2=A0fs/inode.c | 70 > > +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- > > =C2=A01 file changed, 69 insertions(+), 1 deletion(-) > >=20 > > diff --git a/fs/inode.c b/fs/inode.c > > index 869994285e87..fff844345c35 100644 > > --- a/fs/inode.c > > +++ b/fs/inode.c > > @@ -21,6 +21,8 @@ > > =C2=A0#include > > =C2=A0#include > > =C2=A0#include > > +#include > > +#include > > =C2=A0#include > > =C2=A0#define CREATE_TRACE_POINTS > > =C2=A0#include > > @@ -80,6 +82,10 @@ EXPORT_SYMBOL(empty_aops); > > =C2=A0 > > =C2=A0static DEFINE_PER_CPU(unsigned long, nr_inodes); > > =C2=A0static DEFINE_PER_CPU(unsigned long, nr_unused); > > +static DEFINE_PER_CPU(unsigned long, mg_ctime_updates); > > +static DEFINE_PER_CPU(unsigned long, mg_fine_stamps); > > +static DEFINE_PER_CPU(unsigned long, mg_floor_swaps); > > +static DEFINE_PER_CPU(unsigned long, mg_ctime_swaps); >=20 > Should this all get switched off if CONFIG_DEBUG_FS=3Dn? >=20 > --D >=20 Sure, why not. That's simple enough to do. I pushed an updated mgtime branch to my git tree. Here's the updated patch that's the only difference: https://git.kernel.org/pub/scm/linux/kernel/git/jlayton/linux.git/commi= t/?h=3Dmgtime&id=3Dee7fe6e9c0598754861c8620230f15f3de538ca5 Seems to build OK both with and without CONFIG_DEBUG_FS. =20 > > =C2=A0 > > =C2=A0static struct kmem_cache *inode_cachep __ro_after_init; > > =C2=A0 > > @@ -101,6 +107,42 @@ static inline long get_nr_inodes_unused(void) > > =C2=A0 return sum < 0 ? 0 : sum; > > =C2=A0} > > =C2=A0 > > +static long get_mg_ctime_updates(void) > > +{ > > + int i; > > + long sum =3D 0; > > + for_each_possible_cpu(i) > > + sum +=3D per_cpu(mg_ctime_updates, i); > > + return sum < 0 ? 0 : sum; > > +} > > + > > +static long get_mg_fine_stamps(void) > > +{ > > + int i; > > + long sum =3D 0; > > + for_each_possible_cpu(i) > > + sum +=3D per_cpu(mg_fine_stamps, i); > > + return sum < 0 ? 0 : sum; > > +} > > + > > +static long get_mg_floor_swaps(void) > > +{ > > + int i; > > + long sum =3D 0; > > + for_each_possible_cpu(i) > > + sum +=3D per_cpu(mg_floor_swaps, i); > > + return sum < 0 ? 0 : sum; > > +} > > + > > +static long get_mg_ctime_swaps(void) > > +{ > > + int i; > > + long sum =3D 0; > > + for_each_possible_cpu(i) > > + sum +=3D per_cpu(mg_ctime_swaps, i); > > + return sum < 0 ? 0 : sum; > > +} > > + > > =C2=A0long get_nr_dirty_inodes(void) > > =C2=A0{ > > =C2=A0 /* not actually dirty inodes, but a wild approximation */ > > @@ -2655,6 +2697,7 @@ struct timespec64 > > inode_set_ctime_current(struct inode *inode) > > =C2=A0 > > =C2=A0 /* Get a fine-grained time */ > > =C2=A0 fine =3D ktime_get(); > > + this_cpu_inc(mg_fine_stamps); > > =C2=A0 > > =C2=A0 /* > > =C2=A0 * If the cmpxchg works, we take the new > > floor value. If > > @@ -2663,11 +2706,14 @@ struct timespec64 > > inode_set_ctime_current(struct inode *inode) > > =C2=A0 * as good, so keep it. > > =C2=A0 */ > > =C2=A0 old =3D floor; > > - if (!atomic64_try_cmpxchg(&ctime_floor, > > &old, fine)) > > + if (atomic64_try_cmpxchg(&ctime_floor, > > &old, fine)) > > + this_cpu_inc(mg_floor_swaps); > > + else > > =C2=A0 fine =3D old; > > =C2=A0 now =3D ktime_mono_to_real(fine); > > =C2=A0 } > > =C2=A0 } > > + this_cpu_inc(mg_ctime_updates); > > =C2=A0 now_ts =3D timestamp_truncate(ktime_to_timespec64(now), > > inode); > > =C2=A0 cur =3D cns; > > =C2=A0 > > @@ -2682,6 +2728,7 @@ struct timespec64 > > inode_set_ctime_current(struct inode *inode) > > =C2=A0 /* If swap occurred, then we're (mostly) done */ > > =C2=A0 inode->i_ctime_sec =3D now_ts.tv_sec; > > =C2=A0 trace_ctime_ns_xchg(inode, cns, now_ts.tv_nsec, > > cur); > > + this_cpu_inc(mg_ctime_swaps); > > =C2=A0 } else { > > =C2=A0 /* > > =C2=A0 * Was the change due to someone marking the old > > ctime QUERIED? > > @@ -2751,3 +2798,24 @@ umode_t mode_strip_sgid(struct mnt_idmap > > *idmap, > > =C2=A0 return mode & ~S_ISGID; > > =C2=A0} > > =C2=A0EXPORT_SYMBOL(mode_strip_sgid); > > + > > +static int mgts_show(struct seq_file *s, void *p) > > +{ > > + long ctime_updates =3D get_mg_ctime_updates(); > > + long ctime_swaps =3D get_mg_ctime_swaps(); > > + long fine_stamps =3D get_mg_fine_stamps(); > > + long floor_swaps =3D get_mg_floor_swaps(); > > + > > + seq_printf(s, "%lu %lu %lu %lu\n", > > + =C2=A0=C2=A0 ctime_updates, ctime_swaps, fine_stamps, > > floor_swaps); > > + return 0; > > +} > > + > > +DEFINE_SHOW_ATTRIBUTE(mgts); > > + > > +static int __init mg_debugfs_init(void) > > +{ > > + debugfs_create_file("multigrain_timestamps", S_IFREG | > > S_IRUGO, NULL, NULL, &mgts_fops); > > + return 0; > > +} > > +late_initcall(mg_debugfs_init); > >=20 > > --=20 > > 2.45.2 > >=20 > >=20 --=20 Jeff Layton