From: Donggeun Yoo <donggeunyoo.kernel@gmail.com>
To: sj@kernel.org, akpm@linux-foundation.org
Cc: damon@lists.linux.dev, linux-mm@kvack.org,
linux-kernel@vger.kernel.org, donggeunyoo.kernel@gmail.com
Subject: [PATCH v1 1/2] mm/damon/core: charge only the part of a region the filter left
Date: Thu, 17 Sep 2026 09:35:52 +0900 [thread overview]
Message-ID: <20260917003553.2465523-2-donggeunyoo.kernel@gmail.com> (raw)
In-Reply-To: <20260917003553.2465523-1-donggeunyoo.kernel@gmail.com>
An address range DAMOS filter that partially overlaps a monitoring
region splits the region at the filter boundary, so the scheme action is
applied to only one side of it. damos_apply_scheme() reads the region
size once on entry, before damos_core_filter_out() performs that split.
The quota charge and the statistics update therefore account for the
region as it was before the trim. schemes/<S>/stats/sz_tried counts
memory the filter excluded, which Documentation/mm/damon/design.rst says
is not counted as tried, and with quotas/bytes set the excluded part is
charged against the budget, throttling the scheme to a fraction of what
was configured.
Re-read the region size after the core filters have run.
Fixes: ab9bda001b68 ("mm/damon/core: introduce address range type damos filter")
Cc: <stable@vger.kernel.org> # 6.6.x
Signed-off-by: Donggeun Yoo <donggeunyoo.kernel@gmail.com>
---
KUnit, mm/damon/tests, x86_64, with patch 2 applied to both trees:
without patch 1 36/38 damos_test_apply_scheme_filtered_sz and
damos_test_apply_scheme_filter_sz_unchanged fail
with patch 1 38/38
Expected s->stat.sz_tried == 2 * min_sz, but
s->stat.sz_tried == 16384 (0x4000)
2 * min_sz == 8192 (0x2000)
All 15 DAMON selftests pass with the series applied, in a QEMU guest booted
with slab_nomerge and CONFIG_DEBUG_INFO, the latter so drgn could run two of
them. sysfs_update_schemes_tried_regions_wss_estimation.py and
damos_quota.py are timing sensitive and have each failed intermittently on
both patched and unpatched trees over 15 runs.
One path is not covered by patch 2: the quota split failing at
damon_split_region_at(). A KUnit case cannot make that allocation fail. The
sibling exit, a quota remainder below one region, is covered and reaches the
same update_stat label.
mm/damon/core.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/mm/damon/core.c b/mm/damon/core.c
index dd4317df42ff..68f1749ded43 100644
--- a/mm/damon/core.c
+++ b/mm/damon/core.c
@@ -2784,6 +2784,7 @@ static void damos_apply_scheme(struct damon_ctx *c, struct damon_target *t,
}
if (damos_core_filter_out(c, t, r, s))
return;
+ sz = damon_sz_region(r);
ktime_get_coarse_ts64(&begin);
trace_damos_before_apply(cidx, sidx, tidx, r, nr_accesses,
damon_nr_regions(t), do_trace);
--
2.53.0
next prev parent reply other threads:[~2026-09-17 0:36 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-17 0:35 [PATCH v1 0/2] mm/damon/core: fix the size charged for a filter-trimmed region Donggeun Yoo
2026-09-17 0:35 ` Donggeun Yoo [this message]
2026-09-17 0:43 ` [PATCH v1 1/2] mm/damon/core: charge only the part of a region the filter left sashiko-bot
2026-09-17 1:24 ` SJ Park
2026-09-17 1:38 ` Donggeun Yoo
2026-09-17 0:35 ` [PATCH v1 2/2] mm/damon/tests/core-kunit: test the size charged for a filter-trimmed region Donggeun Yoo
2026-09-17 0:42 ` sashiko-bot
2026-09-17 1:26 ` SJ Park
2026-09-17 1:28 ` [PATCH v1 0/2] mm/damon/core: fix " SJ 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=20260917003553.2465523-2-donggeunyoo.kernel@gmail.com \
--to=donggeunyoo.kernel@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=damon@lists.linux.dev \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=sj@kernel.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.