Received: by 2002:a05:6a10:f347:0:0:0:0 with SMTP id d7csp3346960pxu; Tue, 15 Dec 2020 05:03:41 -0800 (PST) X-Google-Smtp-Source: ABdhPJyQnLA14OziNOPryuctec9jKhvpgXJ036jaFcbMaQ6vgZK3LHXnuIZYgt/+IiHhoMOXOmXT X-Received: by 2002:a50:d553:: with SMTP id f19mr28768609edj.323.1608037420902; Tue, 15 Dec 2020 05:03:40 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1608037420; cv=none; d=google.com; s=arc-20160816; b=KCZI/usZvFBAJmlXHHGfigy0hx1bqU1mz7EKnXIZh//Xx+F+5DCfrJlEnAQ4p9Wkrl WmKw21MyipbCxGbA529t+5TK8D3W1Argd6COAEJ4hCiUjOlP37gp1vK1wnZhvVRhQs0M dZyV4oampJ1GFX5WYfM/ECdUWghVrKz1Qiu9scjO8fMtZ6HJnB+ay+RWf34Mp/tcU06X lefjlswJFpNmnNd+X/rXevrirrFFvPfRIc6ljS0x3qQrTeono25jjxEOfkVOFMJimL4J uFWvvL2HLI865lJknyLhgDQUrYHMPYpvZoIXqiyG/Jhz4no5JAzlhmbbqcGaHzCITuxa +aMg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:date:cc:to:from:subject :message-id:dkim-signature:dkim-signature; bh=qHNuiRPUfmhVpEZXQy+wUvMfpqmiGB2JR0+F6M2f928=; b=FLooALAZGfxFiX8Nj+vTexYmWsUQNAOWVTB3f84aU8UQ31yP6/mXnH3e2Caqm5A+Lu y+qKf8eWQCw+6q8+aqdKTsEYtxhuICx6q3DH175nNkAa/LB8MGXwzt0vgzDBbLJLWqnF W2znzvv3rc6mfGrGGyBPg8vBplaEPQe7fUCHGX62qOx83sJsldW4oI1KQ2xN0vWqHJSq a0g4TdUAZ4XmQLAkPsnljz+KSaVehtFYgKdwHhhPIDvb94nNMly4ZUW1PdlQxxr6mvx/ fieByqb5/c9QF2ul0Tm4u16oUTmx9eEmvF7V1eqRqGwpjyyJMgpK237KDvJwFJ//dOwJ b5Uw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@themaw.net header.s=fm1 header.b=fwbKxu8Z; dkim=pass header.i=@messagingengine.com header.s=fm1 header.b=FPC7PX3g; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id j5si456003edj.409.2020.12.15.05.03.14; Tue, 15 Dec 2020 05:03:40 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@themaw.net header.s=fm1 header.b=fwbKxu8Z; dkim=pass header.i=@messagingengine.com header.s=fm1 header.b=FPC7PX3g; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728998AbgLONAN (ORCPT + 99 others); Tue, 15 Dec 2020 08:00:13 -0500 Received: from new1-smtp.messagingengine.com ([66.111.4.221]:33305 "EHLO new1-smtp.messagingengine.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728632AbgLONAN (ORCPT ); Tue, 15 Dec 2020 08:00:13 -0500 Received: from compute4.internal (compute4.nyi.internal [10.202.2.44]) by mailnew.nyi.internal (Postfix) with ESMTP id 35AF7580396; Tue, 15 Dec 2020 07:59:27 -0500 (EST) Received: from mailfrontend1 ([10.202.2.162]) by compute4.internal (MEProxy); Tue, 15 Dec 2020 07:59:27 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=themaw.net; h= message-id:subject:from:to:cc:date:in-reply-to:references :content-type:mime-version:content-transfer-encoding; s=fm1; bh= qHNuiRPUfmhVpEZXQy+wUvMfpqmiGB2JR0+F6M2f928=; b=fwbKxu8ZHkGxH205 /T02XtvEqPcMvG411U6TosC2y9trk9lFZEXtlvVAyGffVaFxwdADm/wADzdP5ke1 LmrAikzJ6iveCdNBw+1r7af7SzixNko3ASOuIx75e5RbHDpWV2MddaZIZ4BO77hJ bz5Wduv+ko8WzKYgRyr1s/UP++r2YV6h6LggmRos1Nez04JpVy/PU4Zvt8UQyWRk nVwG018dtsVVvrVxyyoI1gqTV24rpBkXaixSRuB2VlMlR+u2pPur7I1qlI40jVKF 7wL5A4W+/DbOtArrL3aoclMoaZ0su/xMaeE25QraMzeZZe//enfBwjuEDKL8Q2DJ s2kDDQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-transfer-encoding:content-type :date:from:in-reply-to:message-id:mime-version:references :subject:to:x-me-proxy:x-me-proxy:x-me-sender:x-me-sender :x-sasl-enc; s=fm1; bh=qHNuiRPUfmhVpEZXQy+wUvMfpqmiGB2JR0+F6M2f9 28=; b=FPC7PX3gbLRHVu6UJrxs9PN9QtuaUYE9dEi2pjbDmAloC6PEfchafX/Mb EiIoZcmEW7iHfVoH4Vn8b8KHsBbfN3+oXqPG+LpojjDZrxJMJG+pIji+34YsHQP0 qulen4o2yU2T8zoWvFHHqh53qrkgopw3mVmDGo9lAVPcF4/vbxT05hEI2yjZQAgi a8Ub5aXIWyQxIuCHdQ3BTEFSSBT6gBkzYnM7ETFOkT0z6O3STKE8JcPHfVPyk2RB Ep66F3gx1oRpEwlGhZDi5SrE4XuzwqTU3db1o3IHN8q2AwiyCxo5BFspv2AqN0hn MJphSERkaqG0A6dcdBIQbgse+BLRw== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedujedrudeltddggeejucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurhepkffuhffvffgjfhgtfggggfesthejredttderjeenucfhrhhomhepkfgrnhcu mfgvnhhtuceorhgrvhgvnhesthhhvghmrgifrdhnvghtqeenucggtffrrghtthgvrhhnpe eikeeggeeuvdevgfefiefhudekkeegheeileejveethedutedvveehudffjeevudenucff ohhmrghinhepkhgvrhhnvghlrdhorhhgnecukfhppeduvddurdeggedrudefhedrudefle enucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpehrrghv vghnsehthhgvmhgrfidrnhgvth X-ME-Proxy: Received: from mickey.themaw.net (unknown [121.44.135.139]) by mail.messagingengine.com (Postfix) with ESMTPA id 405DB240066; Tue, 15 Dec 2020 07:59:20 -0500 (EST) Message-ID: Subject: Re: [PATCH v2 0/6] kernfs: proposed locking and concurrency improvement From: Ian Kent To: Fox Chen Cc: akpm@linux-foundation.org, dhowells@redhat.com, Greg KH , linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, miklos@szeredi.hu, ricklind@linux.vnet.ibm.com, sfr@canb.auug.org.au, Tejun Heo , viro@zeniv.linux.org.uk Date: Tue, 15 Dec 2020 20:59:17 +0800 In-Reply-To: References: <159237905950.89469.6559073274338175600.stgit@mickey.themaw.net> <20201210164423.9084-1-foxhlchen@gmail.com> <822f02508d495ee7398450774eb13e5116ec82ac.camel@themaw.net> <13e21e4c9a5841243c8d130cf9324f6cfc4dc2e1.camel@themaw.net> <3e97846b52a46759c414bff855e49b07f0d908fc.camel@themaw.net> Content-Type: text/plain; charset="UTF-8" User-Agent: Evolution 3.36.5 (3.36.5-1.fc32) MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, 2020-12-15 at 16:33 +0800, Fox Chen wrote: > On Mon, Dec 14, 2020 at 9:30 PM Ian Kent wrote: > > On Mon, 2020-12-14 at 14:14 +0800, Fox Chen wrote: > > > On Sun, Dec 13, 2020 at 11:46 AM Ian Kent > > > wrote: > > > > On Fri, 2020-12-11 at 10:17 +0800, Ian Kent wrote: > > > > > On Fri, 2020-12-11 at 10:01 +0800, Ian Kent wrote: > > > > > > > For the patches, there is a mutex_lock in kn->attr_mutex, > > > > > > > as > > > > > > > Tejun > > > > > > > mentioned here > > > > > > > ( > > > > > > > https://lore.kernel.org/lkml/X8fe0cmu+aq1gi7O@mtj.duckdns.org/ > > > > > > > ), > > > > > > > maybe a global > > > > > > > rwsem for kn->iattr will be better?? > > > > > > > > > > > > I wasn't sure about that, IIRC a spin lock could be used > > > > > > around > > > > > > the > > > > > > initial check and checked again at the end which would > > > > > > probably > > > > > > have > > > > > > been much faster but much less conservative and a bit more > > > > > > ugly > > > > > > so > > > > > > I just went the conservative path since there was so much > > > > > > change > > > > > > already. > > > > > > > > > > Sorry, I hadn't looked at Tejun's reply yet and TBH didn't > > > > > remember > > > > > it. > > > > > > > > > > Based on what Tejun said it sounds like that needs work. > > > > > > > > Those attribute handling patches were meant to allow taking the > > > > rw > > > > sem read lock instead of the write lock for > > > > kernfs_refresh_inode() > > > > updates, with the added locking to protect the inode attributes > > > > update since it's called from the VFS both with and without the > > > > inode lock. > > > > > > Oh, understood. I was asking also because lock on kn->attr_mutex > > > drags > > > concurrent performance. > > > > > > > Looking around it looks like kernfs_iattrs() is called from > > > > multiple > > > > places without a node database lock at all. > > > > > > > > I'm thinking that, to keep my proposed change straight forward > > > > and on topic, I should just leave kernfs_refresh_inode() taking > > > > the node db write lock for now and consider the attributes > > > > handling > > > > as a separate change. Once that's done we could reconsider > > > > what's > > > > needed to use the node db read lock in kernfs_refresh_inode(). > > > > > > You meant taking write lock of kernfs_rwsem for > > > kernfs_refresh_inode()?? > > > It may be a lot slower in my benchmark, let me test it. > > > > Yes, but make sure the write lock of kernfs_rwsem is being taken > > not the read lock. > > > > That's a mistake I had initially? > > > > Still, that attributes handling is, I think, sufficient to warrant > > a separate change since it looks like it might need work, the > > kernfs > > node db probably should be kept stable for those attribute updates > > but equally the existence of an instantiated dentry might mitigate > > the it. > > > > Some people might just know whether it's ok or not but I would like > > to check the callers to work out what's going on. > > > > In any case it's academic if GCH isn't willing to consider the > > series > > for review and possible merge. > > > Hi Ian > > I removed kn->attr_mutex and changed read lock to write lock for > kernfs_refresh_inode > > down_write(&kernfs_rwsem); > kernfs_refresh_inode(kn, inode); > up_write(&kernfs_rwsem); > > > Unfortunate, changes in this way make things worse, my benchmark > runs > 100% slower than upstream sysfs. :( > open+read+close a sysfs file concurrently took 1000us. (Currently, > sysfs with a big mutex kernfs_mutex only takes ~500us > for one open+read+close operation concurrently) Right, so it does need attention nowish. I'll have a look at it in a while, I really need to get a new autofs release out, and there are quite a few changes, and testing is seeing a number of errors, some old, some newly introduced. It's proving difficult. > > > --45.93%--kernfs_iop_permission > | | > | | | | > | | > | | | > > --22.55%--down_write > | | > | | | | | > | | > | | | | > --20.69%--rwsem_down_write_slowpath > | | > | | | | > | > | | > | | | | > |--8.89%--schedule > > perf showed most of the time had been spent on kernfs_iop_permission > > > thanks, > fox