From: SeongJae Park <sj@kernel.org>
To: SeongJae Park <sj@kernel.org>
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 [thread overview]
Message-ID: <20241219040327.61902-14-sj@kernel.org> (raw)
In-Reply-To: <20241219040327.61902-1-sj@kernel.org>
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 <sj@kernel.org>
---
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);
--
2.39.5
next prev parent reply other threads:[~2024-12-19 4:04 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-12-19 4:03 [RFC PATCH 00/18] mm/damon: enable page level properties based access pattern monitoring SeongJae Park
2024-12-19 4:03 ` [RFC PATCH 01/18] mm/damon: clarify trying vs applying on damos_stat kernel-doc comment SeongJae Park
2024-12-19 4:03 ` [RFC PATCH 02/18] Docs/mm/damon/design: document DAMOS regions walking SeongJae Park
2024-12-19 4:03 ` [RFC PATCH 03/18] Docs/mm/damon/design: add 'statistics' section SeongJae Park
2024-12-19 4:03 ` [RFC PATCH 04/18] Docs/admin-guide/mm/damon/usage: link damos stat design doc SeongJae Park
2024-12-19 4:03 ` [RFC PATCH 05/18] mm/damon: ask apply_scheme() to report filter-passed region-internal bytes SeongJae Park
2024-12-19 4:03 ` [RFC PATCH 06/18] mm/damon/paddr: report filter-passed bytes back for normal actions SeongJae Park
2024-12-19 4:03 ` [RFC PATCH 07/18] mm/damon/paddr: report filter-passed bytes back for DAMOS_STAT action SeongJae Park
2025-01-13 19:49 ` Joshua Hahn
2025-01-13 20:02 ` SeongJae Park
2024-12-19 4:03 ` [RFC PATCH 08/18] mm/damon/core: implement per-scheme filter-passed bytes stat SeongJae Park
2024-12-19 4:03 ` [RFC PATCH 09/18] mm/damon/syfs-schemes: " SeongJae Park
2024-12-19 4:03 ` [RFC PATCH 10/18] Docs/mm/damon/design: document sz_ops_filter_passed SeongJae Park
2024-12-19 4:03 ` [RFC PATCH 11/18] Docs/admin-guide/mm/damon/usage: " SeongJae Park
2024-12-19 4:03 ` [RFC PATCH 12/18] Docs/ABI/damon: document per-scheme filter-passed bytes stat file SeongJae Park
2024-12-19 4:03 ` SeongJae Park [this message]
2024-12-19 4:03 ` [RFC PATCH 14/18] mm/damon/core: pass per-region filter-passed bytes to damos_walk_control->walk_fn() SeongJae Park
2024-12-19 4:03 ` [RFC PATCH 15/18] mm/damon/sysfs-schemes: expose per-region filter-passed bytes SeongJae Park
2024-12-19 4:03 ` [RFC PATCH 16/18] Docs/mm/damon/design: document per-region sz_filter_passed stat SeongJae Park
2024-12-19 4:03 ` [RFC PATCH 17/18] Docs/admin-guide/mm/damon/usage: document sz_filtered_out of scheme tried region directories SeongJae Park
2024-12-19 4:03 ` [RFC PATCH 18/18] Docs/ABI/damon: document per-region DAMOS filter-passed bytes stat file SeongJae Park
2024-12-23 20:24 ` [RFC PATCH 00/18] mm/damon: enable page level properties based access pattern monitoring SeongJae Park
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20241219040327.61902-14-sj@kernel.org \
--to=sj@kernel.org \
--cc=damon@lists.linux.dev \
--cc=kernel-team@meta.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox