From patchwork Mon Feb 10 18:27:36 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: SeongJae Park X-Patchwork-Id: 13968579 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 348BBC02198 for ; Mon, 10 Feb 2025 18:28:02 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id AF970280004; Mon, 10 Feb 2025 13:28:01 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id AA981280001; Mon, 10 Feb 2025 13:28:01 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 970D2280004; Mon, 10 Feb 2025 13:28:01 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 717AD280001 for ; Mon, 10 Feb 2025 13:28:01 -0500 (EST) Received: from smtpin06.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id D0726A04E3 for ; Mon, 10 Feb 2025 18:27:47 +0000 (UTC) X-FDA: 83104868574.06.52EA25D Received: from nyc.source.kernel.org (nyc.source.kernel.org [147.75.193.91]) by imf14.hostedemail.com (Postfix) with ESMTP id 4290C100012 for ; Mon, 10 Feb 2025 18:27:46 +0000 (UTC) Authentication-Results: imf14.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=pXPFF+hp; spf=pass (imf14.hostedemail.com: domain of sj@kernel.org designates 147.75.193.91 as permitted sender) smtp.mailfrom=sj@kernel.org; dmarc=pass (policy=quarantine) header.from=kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1739212066; a=rsa-sha256; cv=none; b=TAMdv+zcR2FbBoxXJO/HixrUS9pudT02SzP+VfS/h4JwrihywtCYBcR4FYmNZv45RYMQIk 9JUs0YdVZPI+BobgK0Rf1xpSz2L2S/xFkDcCuTpuOpddRVomz+O3GNLVBlVfM/GWMBLulW 4ANWy3yGwYUrDAVRWFuKdZ4k6VYAxpQ= ARC-Authentication-Results: i=1; imf14.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=pXPFF+hp; spf=pass (imf14.hostedemail.com: domain of sj@kernel.org designates 147.75.193.91 as permitted sender) smtp.mailfrom=sj@kernel.org; dmarc=pass (policy=quarantine) header.from=kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1739212066; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=cIaOGIXxyqGIMifPIaho4RKzgaPaUvd9PnhgkfC5GVM=; b=HQOci4/gkDvdb7MIcT8nT2158RcXaCmn2Jn96qxXNG1GyiTeMuzmCAUTjC8DmAe0vGG/fF E6xqDA6U6HsCcRhZ+JN0dg7gfQOHTxOCgbKKMEiqOGpdRrZM3CI1+T9/Mai/BAW9XbzKov uUAAfVo1HoFGy65fdJeaaitkVF3r994= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by nyc.source.kernel.org (Postfix) with ESMTP id 0968AA41FA4; Mon, 10 Feb 2025 18:26:00 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 2EA4EC4CED1; Mon, 10 Feb 2025 18:27:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739212065; bh=JOpbnQ6/GYsrBYDCbmgIB9gcRtACbXxjFLu2npIKqq4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=pXPFF+hpXIwxEWBO4XNrD2qFwVsSZW7Zd4kKXxF+iazZPOwL66VttoSYIR5m+bhjj 2CB/dhyYSfNQhw3IG3oL+it13d8rYTeT6VeGziXbskumptRBow6qNtP6DOwJb0Dt/U iOuKJJ75fjj9pMAiGoEPVqYycysEGDxrsez42ETAJnDGpkVDlRyE6MQ7Y5TPm1v2p1 dWPo0zSJeLd5FZBKqOV40QVYjdFaC9Dcy6T1KBrHrLcd4bTxcXCbht4hoQ7JKwFI+u tam+aUz/BQ3weJi2T3LTnFTiiVstHMgDYkkcvzHrdaPC7GzElFcb215YtlExmcpQfd FjIs+3adj30QQ== From: SeongJae Park To: Andrew Morton Cc: SeongJae Park , damon@lists.linux.dev, kernel-team@meta.com, linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH 3/3] mm/damon/core: do damos walking in entire regions granularity Date: Mon, 10 Feb 2025 10:27:36 -0800 Message-Id: <20250210182737.134994-4-sj@kernel.org> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250210182737.134994-1-sj@kernel.org> References: <20250210182737.134994-1-sj@kernel.org> MIME-Version: 1.0 X-Stat-Signature: imi5du1q3yd9pzgp6ft6titjbp4gwbbf X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: 4290C100012 X-Rspam-User: X-HE-Tag: 1739212066-956377 X-HE-Meta: U2FsdGVkX18Gam3fbxKUCJyNo4PNwoFDrg/8b7pImFE/WzNjtGUzHD3qNjZihLl5IISjbfXWBlHfJau4AMsLQAsjBTuXOaSoBNG0e+GIwkygKVo8PYnBFkgcg3l13P4cpqq+mNw2a7nnXljq7kZUCXkxEmK9CHU+E2zebPGXodp0cCFr6BlpegNuC26SvaONymUlwQVHtPiuR9t22pXgP3C+hj+RgJvP7OCdBKiONboTYOnoIGbJh+PGTA+4rmYuhYnTWc52vCjAEpBEq6ErX0uHV24uqGlD92FQL2cVgQPu8EkBE8H5JF26j/ItpwQTtpArs4wKi6+UwzaVcRHX7oEz4uuResQboO2IcKD3saLgVcj6VtUVPOPuO5EJljaOLW2GG/+A/ZD5UHymSdJm41V2SZMf+6kRe4ItMDOCVOfMF2xDpCzGEXc55iLNaKdT9TWQaoyCaeFgui8yi6NULXw1MxLqqlA+/fqlCmkUcmB1aFYORCf4Aybvnpl23tqhwZHe034nN/iWBdjrYw7t3BW59eiAavInKFj1njZaTZr3n6xZNvgxozgDB6zEBpFqNGXtgmM6F/h05RTzjCe4nwmWBjT505Ky+0NWqyYe5nYNqmCKNbaHrl7vXKrpgB7FkCKI4KIGgvxykP+XrN+ycIDrZiaT/w40RIzBZYOR9k+Q/1CUkavEDNA2UVlhA9OHLkf2RGH5Gl4LfVabrNJ6iGBKC1MuxZkhxyfYD+niUobhSmEVy2e3mp/nKaM+y/BXL5BVXHe5YSvIrjbYqAuDGAzMl8ohUeFjLbg6klj2HR22eYbZt07S9mU8+OsxjXcWPgeA2LOSpkS1OZIql7Zqogtn55RmgcIsaQIoy3gC3gh1EO1uH5/LuUVKCkOEH3EByRCf926rQoWy90LTwzjntxSQd5eXa/3eNqyH9poghDXuUamfMhNA3DfA9eGIbKPfd4qJcP6l7CQ7YjBoEJL xKKn5N1p R8T/B6hHdspMh38LOegDzABBDjoygRLJuuErXfiTVQ+sNrQIAgD8ZKmVj6xlbYSjsuAeijlmgk0/8gulTMbUWSMep1JF2UJAVFaFb1N7tLtZrjPljjPJfw1C9ky/IIMGs3G8bP9iSxzKZBWpMFpihNsgeNVF1iTuzcVK9bZ1fiNb7fYX3QQtFrTm46BaaLfwkNo8Oa3Tc5xxs4N3Wzpi2UC2EgZB8Fj9urcYXtkNkONM63Es= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000004, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: damos_walk_control can be installed while DAMOS is walking the regions. This means the walk callback function invocations can be started from a region at the middle of the regions list. This makes it hard to be used reliably. Particularly, DAMOS tried regions update for collecting monitoring results gets problematic results. Increase the walk_control_lock critical section to do walking in entire regions granularity. Fixes: bf0eaba0ff9c ("mm/damon/core: implement damos_walk()") Signed-off-by: SeongJae Park --- mm/damon/core.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/mm/damon/core.c b/mm/damon/core.c index 4b865b2558d9..c3d9b96b786a 100644 --- a/mm/damon/core.c +++ b/mm/damon/core.c @@ -1456,11 +1456,10 @@ static void damos_walk_call_walk(struct damon_ctx *ctx, struct damon_target *t, if (s->walk_completed) return; - mutex_lock(&ctx->walk_control_lock); control = ctx->walk_control; - mutex_unlock(&ctx->walk_control_lock); if (!control) return; + control->walk_fn(control->data, ctx, t, r, s, sz_filter_passed); } @@ -1480,9 +1479,7 @@ static void damos_walk_complete(struct damon_ctx *ctx, struct damos *s) struct damos *siter; struct damos_walk_control *control; - mutex_lock(&ctx->walk_control_lock); control = ctx->walk_control; - mutex_unlock(&ctx->walk_control_lock); if (!control) return; @@ -1496,9 +1493,7 @@ static void damos_walk_complete(struct damon_ctx *ctx, struct damos *s) siter->walk_completed = false; complete(&control->completion); - mutex_lock(&ctx->walk_control_lock); ctx->walk_control = NULL; - mutex_unlock(&ctx->walk_control_lock); } /* @@ -1845,6 +1840,7 @@ static void kdamond_apply_schemes(struct damon_ctx *c) if (!has_schemes_to_apply) return; + mutex_lock(&c->walk_control_lock); damon_for_each_target(t, c) { damon_for_each_region_safe(r, next_r, t) damon_do_apply_schemes(c, t, r); @@ -1859,6 +1855,7 @@ static void kdamond_apply_schemes(struct damon_ctx *c) c->attrs.aggr_interval) / sample_interval; s->last_applied = NULL; } + mutex_unlock(&c->walk_control_lock); } /*