From: sashiko-bot@kernel.org
To: "SeongJae Park" <sj@kernel.org>
Cc: damon@lists.linux.dev
Subject: Re: [PATCH 6.12.y] mm/damon/core: disallow time-quota setting zero esz
Date: Mon, 04 May 2026 18:02:15 +0000 [thread overview]
Message-ID: <20260504180216.17E4AC2BCB8@smtp.kernel.org> (raw)
In-Reply-To: <20260504125220.15509-1-sj@kernel.org>
Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
- [High] The patch masks a severe pre-existing integer overflow in the time quota throughput calculation, which permanently throttles the scheme instead of fixing the root cause.
- [Medium] The patch forces the effective size quota to be at least DAMON_MIN_REGION when a time quota is configured, breaking the ability of quota goals to intentionally pause the scheme.
--
commit 648433abd4b11fd3f4a77018e7e47105abac1ce7
Author: SeongJae Park <sj@kernel.org>
mm/damon/core: disallow time-quota setting zero esz
When the throughput of a DAMOS scheme is very slow, the DAMOS time quota can
make the effective size quota smaller than the minimum region size, preventing
actions from being applied. This commit fixes the issue by setting the time
quota-modified effective size quota to at least DAMON_MIN_REGION.
Link: https://lore.kernel.org/20260407003153.79589-1-sj@kernel.org
Link: https://lore.kernel.org/20260405192504.110014-1-sj@kernel.org [1]
> diff --git a/mm/damon/core.c b/mm/damon/core.c
> index ed2b750231810..69f8244324b36 100644
> --- a/mm/damon/core.c
> +++ b/mm/damon/core.c
> @@ -1577,6 +1577,7 @@ static void damos_set_effective_quota(struct damos_quota *quota)
> esz = min(throughput * quota->ms, esz);
> else
> esz = throughput * quota->ms;
> + esz = max(DAMON_MIN_REGION, esz);
Does this cause a regression by breaking the ability of quota goals to
intentionally pause the scheme?
If a dynamic quota goal determines that actions should be paused and requests
an esz smaller than DAMON_MIN_REGION, this max() macro forcibly overrides it
and bumps the quota back to DAMON_MIN_REGION.
This causes the scheme to process at least 1 page per charge window instead
of fully pausing.
Could the max() boundary be applied exclusively to the throughput-derived quota
before it is min()'ed with the goal-derived quota?
Additionally, does this code mask a pre-existing integer overflow regression
in the throughput calculation?
Looking earlier in damos_set_effective_quota():
if (quota->total_charged_ns)
throughput = quota->total_charged_sz * 1000000 /
quota->total_charged_ns;
Because total_charged_sz and total_charged_ns are continuously accumulated
over the scheme's lifetime, total_charged_sz * 1000000 will overflow an
unsigned long on 64-bit systems after processing around 18.4 TB of memory.
When the numerator overflows, it wraps modulo 2^64 while total_charged_ns
continues to grow. This causes the calculated throughput to collapse to
near-zero.
Also, on 32-bit systems, total_charged_ns stores nanoseconds and overflows
a 32-bit unsigned long after 4.29 seconds of accumulated action time, causing
erratic throughput calculations.
By clamping the output to DAMON_MIN_REGION here, the patch seems to permanently
throttle the scheme to process exactly 1 page per charge window once the
overflow occurs, rather than fixing the underlying throughput collapse.
> }
>
> if (quota->sz && quota->sz < esz)
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260504125220.15509-1-sj@kernel.org?part=1
next prev parent reply other threads:[~2026-05-04 18:02 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <2026050313-giddy-quizzical-4cc1@gregkh>
2026-05-04 12:52 ` [PATCH 6.12.y] mm/damon/core: disallow time-quota setting zero esz SeongJae Park
2026-05-04 18:02 ` sashiko-bot [this message]
2026-05-06 16:59 ` 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=20260504180216.17E4AC2BCB8@smtp.kernel.org \
--to=sashiko-bot@kernel.org \
--cc=damon@lists.linux.dev \
--cc=sashiko@lists.linux.dev \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox