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 249DDC433EF for ; Thu, 31 Mar 2022 00:28:30 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 98C6A6B0072; Wed, 30 Mar 2022 20:28:29 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 93B7B8D0002; Wed, 30 Mar 2022 20:28:29 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 802FA8D0001; Wed, 30 Mar 2022 20:28:29 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (relay.hostedemail.com [64.99.140.26]) by kanga.kvack.org (Postfix) with ESMTP id 7280F6B0072 for ; Wed, 30 Mar 2022 20:28:29 -0400 (EDT) Received: from smtpin10.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay13.hostedemail.com (Postfix) with ESMTP id 3EF8260DC3 for ; Thu, 31 Mar 2022 00:28:29 +0000 (UTC) X-FDA: 79302795138.10.EE68EFB Received: from out0.migadu.com (out0.migadu.com [94.23.1.103]) by imf11.hostedemail.com (Postfix) with ESMTP id B47C340009 for ; Thu, 31 Mar 2022 00:28:28 +0000 (UTC) Date: Wed, 30 Mar 2022 17:28:21 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1648686506; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=jJCkR8Jqm62pdxZogzgoWn7utwih/y2wfzxyFGpIn/U=; b=NMWkMdAryffAdC9bHXtUzUBevhGQztvRKoIsGq2gk+6d+h+xM7BmQuTWclsyWZtiPFwe01 raOCfjg/oGNfvLb7bdUkawI09np2FJTF2lpY+sx3fuqtGGal9SzQoGcxT3OMVJIFwGrCOV NrqWFGA4MvW8GVoYf/NZS/p+8ioElpc= X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. From: Roman Gushchin To: Wei Yang Cc: hannes@cmpxchg.org, mhocko@kernel.org, vdavydov.dev@gmail.com, akpm@linux-foundation.org, cgroups@vger.kernel.org, linux-mm@kvack.org Subject: Re: [Patch v2 3/3] mm/memcg: move generation assignment and comparison together Message-ID: References: <20220330234719.18340-1-richard.weiyang@gmail.com> <20220330234719.18340-4-richard.weiyang@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20220330234719.18340-4-richard.weiyang@gmail.com> X-Migadu-Flow: FLOW_OUT X-Migadu-Auth-User: linux.dev X-Rspamd-Server: rspam09 X-Rspam-User: X-Stat-Signature: 3puuzyfhi84fxoxmxwcd8wnx1a9s61qs Authentication-Results: imf11.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b=NMWkMdAr; dmarc=pass (policy=none) header.from=linux.dev; spf=pass (imf11.hostedemail.com: domain of roman.gushchin@linux.dev designates 94.23.1.103 as permitted sender) smtp.mailfrom=roman.gushchin@linux.dev X-Rspamd-Queue-Id: B47C340009 X-HE-Tag: 1648686508-385557 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: On Wed, Mar 30, 2022 at 11:47:19PM +0000, Wei Yang wrote: > For each round-trip, we assign generation on first invocation and > compare it on subsequent invocations. > > Let's move them together to make it more self-explaining. Also this > reduce a check on prev. > > [hannes@cmpxchg.org: better comment to explain reclaim model] > > Signed-off-by: Wei Yang > Acked-by: Johannes Weiner Reviewed-by: Roman Gushchin > > --- > v2: a better comment from Johannes > --- > mm/memcontrol.c | 10 +++++++--- > 1 file changed, 7 insertions(+), 3 deletions(-) > > diff --git a/mm/memcontrol.c b/mm/memcontrol.c > index 5d433b79ba47..2cd8bfdec379 100644 > --- a/mm/memcontrol.c > +++ b/mm/memcontrol.c > @@ -1013,7 +1013,13 @@ struct mem_cgroup *mem_cgroup_iter(struct mem_cgroup *root, > mz = root->nodeinfo[reclaim->pgdat->node_id]; > iter = &mz->iter; > > - if (prev && reclaim->generation != iter->generation) > + /* > + * On start, join the current reclaim iteration cycle. > + * Exit when a concurrent walker completes it. > + */ > + if (!prev) > + reclaim->generation = iter->generation; > + else if (reclaim->generation != iter->generation) > goto out_unlock; > > while (1) { > @@ -1075,8 +1081,6 @@ struct mem_cgroup *mem_cgroup_iter(struct mem_cgroup *root, > > if (!memcg) > iter->generation++; > - else if (!prev) > - reclaim->generation = iter->generation; > } > > out_unlock: > -- > 2.33.1 > >