From patchwork Thu Dec 19 04:03:22 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: SeongJae Park X-Patchwork-Id: 13914454 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 5283AE77184 for ; Thu, 19 Dec 2024 04:04:14 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id AB2816B009F; Wed, 18 Dec 2024 23:03:56 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 9ECE06B00A0; Wed, 18 Dec 2024 23:03:56 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 7C9D36B00A1; Wed, 18 Dec 2024 23:03:56 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 5C1ED6B009F for ; Wed, 18 Dec 2024 23:03:56 -0500 (EST) Received: from smtpin16.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 12B801A13C7 for ; Thu, 19 Dec 2024 04:03:56 +0000 (UTC) X-FDA: 82910364600.16.12F439F Received: from nyc.source.kernel.org (nyc.source.kernel.org [147.75.193.91]) by imf03.hostedemail.com (Postfix) with ESMTP id B3D9E20007 for ; Thu, 19 Dec 2024 04:03:39 +0000 (UTC) Authentication-Results: imf03.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b="WlLm/A9A"; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf03.hostedemail.com: domain of sj@kernel.org designates 147.75.193.91 as permitted sender) smtp.mailfrom=sj@kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1734581019; 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=VJk+ZG/yL76bJ3tbrd4lU6dnkauHM4vPOx1Joc85aGc=; b=ZlXEk0kM/oYkBr/zVMIY6IaCcwGr5VB4K9ZihzsZzAhzaA/qUidqArIUNhdpiponqaQ9Pr TJkjj+K4AnZfl+NQeT+TRA1R40eKcwT9/UR+3ETapV9ucj82CV2ZyAUSsoSx53cr/73mbj RJx0uNRJyEnqs8+sbzB/8paQykiPTjY= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1734581019; a=rsa-sha256; cv=none; b=e8WGd/OiUJIa72PgQHkc02qYtZbn9TprNWyPcIJVQAwqxYIbgt8kW4PM57HlSeyGH+SWjN kkNOPdc9hhNcOQT6TFaHYPhHV3rIeNzweXeugA0mWKGftguJzEjjhHXbZs2ClDkBHSu4UI uW9AWsRBH0OEmqOGa54EbJVToDpNLa8= ARC-Authentication-Results: i=1; imf03.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b="WlLm/A9A"; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf03.hostedemail.com: domain of sj@kernel.org designates 147.75.193.91 as permitted sender) smtp.mailfrom=sj@kernel.org Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by nyc.source.kernel.org (Postfix) with ESMTP id 5E4DBA41BE4; Thu, 19 Dec 2024 04:02:03 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 6CDBAC4CED4; Thu, 19 Dec 2024 04:03:53 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1734581033; bh=uqG8Q9Szz47DcZj8JtbgYt8Z9acAYgWsyXGkRRs6FvI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=WlLm/A9Al/6Pem+PtlX0UaTXy+7/tQBEeZTMaw6V2dKYfBiM/eFoArYBajWW48+yG OJuFLmwzHsPUEJ9t1o/xV/YzDH9DUoI2zydoHko9m7055yQfxEGs1LlR5irSd/Fx7f DyYVnt4m5Gcr2Bx8EtjWN0rdpxZt72sCi9OokPAhZ3ghi1FydpigdWWAtxImV0fJ3J 7fSbm9fyit4hYVtVxlkJcwQKFeHVZYh749/+NXYeXX0nBPfZyzrpVd1itd0ZV8vLpK lO53kuJDNrWkh/j8WoY6LpOaSVoUfvenrhx/c0wHj7Tsb44fdIfxoyNSFf4bEHaOA2 kcVb0j5A+7jJw== From: SeongJae Park To: SeongJae Park Cc: kernel-team@meta.com, damon@lists.linux.dev, linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: [RFC PATCH 13/18] mm/damon/core: invoke damos_walk_control->walk_fn() after applying action Date: Wed, 18 Dec 2024 20:03:22 -0800 Message-Id: <20241219040327.61902-14-sj@kernel.org> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20241219040327.61902-1-sj@kernel.org> References: <20241219040327.61902-1-sj@kernel.org> MIME-Version: 1.0 X-Stat-Signature: nizqzgqwd488szhthoe7zruan9i8bzzn X-Rspamd-Queue-Id: B3D9E20007 X-Rspam-User: X-Rspamd-Server: rspam01 X-HE-Tag: 1734581019-226213 X-HE-Meta: U2FsdGVkX19F/W8AUkSt7DwaBhR6XmUQptzHq+wdOfzhWWCjffmP8+NcBlGsboja16BYeJizyqloHpNBC8RJTuNFK0wHLeddL5x1E80R3IGRxkAuc8KYB11Vp7xwW1av1KLt92g3kp+F+MShlyyUlMQstl/igm6XHut2X5rPlQHbfvp1NIa8jGKBmEaw+tCXn9gABchV5nSSQrSL/BOGhgSxfgmRstYgri5Z7WrhKQ9VUX/5MwXfjD9/R3K+J1JgtRrlPItpBnNZCvH97+dwpoe7n/nr4P/P6Xpp+N7n3r6h08ERbr4F8ZhmoXGEiBqoat9CT0oYkNfNMbRgpyOfs1Otkcw2ygeEmZn0Tt+Byzn2etLBGkIO4QtOsjk7HNx48Vwfd5fmgJL+r05CrAGZWMxfJlfXZTJfIXNtAaWdEoYSEi4thg02ZTC8jFPLVS9+ITH32CE1Ga36zumKf39nAP3UDZlNuCHGPiknKIiK68xdaNoXbBseBTB9GzhJsrF3VqQuabIr6zoR2/EwCOD8E9LW7m/5rGFBaktOgRcMmKZKtKAkprqKo2y34Zt2XHshvU3yLiKinfLdPABw2Qjs4YLFZHcvuCtIE7/dHhHYMRmcVmf4Qc8IxP5idYP2e4tuZafgJ+tnxfvfeMhfzwhFSjHBWC+97M3Wd9RwAGZIWXofRZYn0zcbHCPCZpc1fWxqeHeJidUNXIGZIexC2RARMkibFyxantVsn0yGZzXTIt2yX9ZAKktr12Exgu83rhip4W+S2PlN9Tqc6XIOY04+u0sCLzVFFHsr7oxvZvFtEWlHU9tnJOu6wbtamSvBSAtFvQPNdy3t0LCGWhcPGhBHcGtwsfT3TCZO+2HvCpPuhzTZue1/+4KL50oPPoKim4W0UQTG9kP49hVULVPwNANLhS/DbogQxu7F5+2aOF2iKWkSHpofx3gbisCbiy8kGOcm+gVSnJ2mHvZxU2nU7fC xQ02FQLz y527Z3z+sfgTCT+gsbIYyBFctWJsKo1tbKrr1LcIixjcDm35FNpMjVielbS3V+68UzWNdJ8YEoEbHVi/Ma9bnZ/0RHB+tA2mJwkq5nafOnI1xSPPDwaOQ+j00RMnVSbeZFZ7h8inu/1O8DjSavSyVIDOE772FZCsjsMTRKvvfl4cOnNkyPKAIzEcEVUpwznyosB2pO/6DEd3d382KF8lXihomMdeJCXeyVyJvxdmTIgv8gYFBs6TZoGfvF1aANLF3r0Ej2SVUkzJD5AFg41ns39j4IQ== 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->walk_fn() is called just before a DAMOS action is applied to a region. It can be useful if some users want to make some changes to the region before the scheme's action is applied, but there is no such real usages. On the other hand, calling it after the DAMOS action is applied can give a chance to investigate what happened during applying the action to the region. Actually, followup commits will make and pass such information to walk_fn(). Invoke walk_fn() after applying the action. Signed-off-by: SeongJae Park --- mm/damon/core.c | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/mm/damon/core.c b/mm/damon/core.c index 8540e8f91260..f7736df4f6c8 100644 --- a/mm/damon/core.c +++ b/mm/damon/core.c @@ -1214,7 +1214,7 @@ int damon_call(struct damon_ctx *ctx, struct damon_call_control *control) * finishes handling of the request. * * The kdamond executes the given function in the main loop, for each region - * just before it applies any DAMOS actions of @ctx to it. The invocation is + * just after it applied any DAMOS actions of @ctx to it. The invocation is * made only within one &damos->apply_interval_us since damos_walk() * invocation, for each scheme. The given callback function can hence safely * access the internal data of &struct damon_ctx and &struct damon_region that @@ -1432,11 +1432,9 @@ static bool damos_filter_out(struct damon_ctx *ctx, struct damon_target *t, * @r: The region of @t that @s will be applied. * @s: The scheme of @ctx that will be applied to @r. * - * This function is called from kdamond whenever it found a region that - * eligible to apply a DAMOS scheme's action. If a DAMOS walk request is - * installed by damos_walk() and its &damos_walk_control->walk_fn has not - * invoked for the region for the last &damos->apply_interval_us interval, - * invoke it. + * This function is called from kdamond whenever it asked the operation set to + * apply a DAMOS scheme action to a region. If a DAMOS walk request is + * installed by damos_walk() and not yet uninstalled, invoke it. */ static void damos_walk_call_walk(struct damon_ctx *ctx, struct damon_target *t, struct damon_region *r, struct damos *s) @@ -1457,8 +1455,8 @@ static void damos_walk_call_walk(struct damon_ctx *ctx, struct damon_target *t, * @s: A scheme of @ctx that all walks are now done. * * This function is called when kdamond finished applying the action of a DAMOS - * scheme to regions that eligible for the given &damos->apply_interval_us. If - * every scheme of @ctx including @s now finished walking for at least one + * scheme to all regions that eligible for the given &damos->apply_interval_us. + * If every scheme of @ctx including @s now finished walking for at least one * &damos->apply_interval_us, this function makrs the handling of the given * DAMOS walk request is done, so that damos_walk() can wake up and return. */ @@ -1560,7 +1558,6 @@ static void damos_apply_scheme(struct damon_ctx *c, struct damon_target *t, if (damos_filter_out(c, t, r, s)) return; ktime_get_coarse_ts64(&begin); - damos_walk_call_walk(c, t, r, s); if (c->callback.before_damos_apply) err = c->callback.before_damos_apply(c, t, r, s); if (!err) { @@ -1569,6 +1566,7 @@ static void damos_apply_scheme(struct damon_ctx *c, struct damon_target *t, sz_applied = c->ops.apply_scheme(c, t, r, s, &sz_ops_filter_passed); } + damos_walk_call_walk(c, t, r, s); ktime_get_coarse_ts64(&end); quota->total_charged_ns += timespec64_to_ns(&end) - timespec64_to_ns(&begin);