From: SJ Park <sj@kernel.org>
To: Gutierrez Asier <gutierrez.asier@huawei-partners.com>
Cc: SJ Park <sj@kernel.org>,
sashiko-reviews@lists.linux.dev, damon@lists.linux.dev
Subject: Re: [PATCH v1 3/3] mm/damon/sysfs: support hugepage_mem_bp quota goal metric
Date: Wed, 15 Jul 2026 08:16:15 -0700 [thread overview]
Message-ID: <20260715151615.99767-1-sj@kernel.org> (raw)
In-Reply-To: <ad2caf50-0352-451e-bbfa-94df2280acc9@huawei-partners.com>
On Wed, 15 Jul 2026 17:47:38 +0300 Gutierrez Asier <gutierrez.asier@huawei-partners.com> wrote:
> Hi SJ,
>
> On 6/17/2026 7:15 AM, SeongJae Park wrote:
> > On Tue, 16 Jun 2026 22:35:21 +0300 Gutierrez Asier <gutierrez.asier@huawei-partners.com> wrote:
> >
> >>
> >>
> >> On 6/16/2026 6:21 PM, sashiko-bot@kernel.org wrote:
> >>> Thank you for your contribution! Sashiko AI review found 3 potential issue(s) to consider:
> >>>
> >>> New issues:
> >>> - [Low] The new `DAMOS_QUOTA_HUGEPAGE_MEM_BP` metric is exposed via sysfs but lacks required documentation updates.
> >>>
> >>> Pre-existing issues:
> >>> - [Critical] Potential divide-by-zero in `damos_hugepage_mem_bp()` and `damos_get_in_active_mem_bp()` due to an unhandled zero denominator.
> >>> - [High] 32-bit integer overflow in `damos_hugepage_mem_bp()` and `damos_get_in_active_mem_bp()` when calculating memory ratios.
> >>> --
> >>>
> >>> commit be304699fb94d4d73bd979237fb4d7b08b7216f7
> >>> Author: Asier Gutierrez <gutierrez.asier@huawei-partners.com>
> >>>
> >>> mm/damon/sysfs: support hugepage_mem_bp quota goal metric
> >>>
> >>> DAMOS has a new autotune policy metric: DAMOS_QUOTA_HUGEPAGE_MEM_BP.
> >>> This patch exposes DAMOS_QUOTA_HUGEPAGE_MEM_BP through sysfs.
> >>>
> >>>> diff --git a/mm/damon/sysfs-schemes.c b/mm/damon/sysfs-schemes.c
> >>>> index 329cfd0bbe9f3..4b5429a5b4158 100644
> >>>> --- a/mm/damon/sysfs-schemes.c
> >>>> +++ b/mm/damon/sysfs-schemes.c
> >>>> @@ -1267,6 +1267,10 @@ struct damos_sysfs_qgoal_metric_name damos_sysfs_qgoal_metric_names[] = {
> >>>> .metric = DAMOS_QUOTA_NODE_ELIGIBLE_MEM_BP,
> >>>> .name = "node_eligible_mem_bp",
> >>>> },
> >>>> + {
> >>>> + .metric = DAMOS_QUOTA_HUGEPAGE_MEM_BP,
> >>>> + .name = "hugepage_mem_bp",
> >>>> + },
> >>>
> >>> [Severity: Critical]
> >>> This isn't a bug introduced by this patch, but exposing this metric directly
> >>> to userspace makes a potential divide-by-zero triggerable by users
> >>> configuring DAMON quotas.
> >>>
> >>> In mm/damon/core.c:damos_hugepage_mem_bp(), the denominator is computed as:
> >>>
> >>> total = totalram_pages() - global_zone_page_state(NR_FREE_PAGES);
> >>>
> >>> Due to per-CPU vmstat lag or an idle system, the free pages counter can equal
> >>> totalram_pages(), resulting in total being 0. This is then passed to
> >>> mult_frac():
> >>>
> >>> return mult_frac(thp, 10000, total);
> >>>
> >>> This inherently computes thp / total, causing a strict division by zero and a
> >>> kernel panic. The same issue exists in damos_get_in_active_mem_bp() where
> >>> total = active + inactive, which can be 0 if the LRU lists are empty.
> >>>
> >>> Should a zero-check on total be added before performing the division?
> >> DAMON is enabled after the system is fully loaded. total will not be 0 by then.
> >
> > Could you please further clarify what "system is fully loaded" means, reaards
> > to what Sashiko is claiming, particularly the per-CPU vmstat lag?
> >
> >
> > Thanks,
> > SJ
> >
> > [...]
> >
>
> What I meant is the system already initialized after booting. The thing
> is that by the time the sysadmin sets up DAMON, vmstat should show at
> least some memory usage, not 0. That was my guess, but I may be wrong.
I think that's a fair argument. And I also not quite sure. But having zero
due to the races in per-CPU vmstat sounds possible in an extreme and weird lab
environments.
>
> If my initial thought was wrong, I can just add a guard there.
So I'm not really sure if you're wrong. But adding the guard would be simple.
I'd recommend just adding the guard instead of get wrestle on this thoery for
now. Does that make sense?
Thanks,
SJ
[...]
next prev parent reply other threads:[~2026-07-15 15:16 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-06-16 15:03 [PATCH v1 0/3] mm/damon: Introduce a huge page collapsing mechanism using auto tuning gutierrez.asier
2026-06-16 15:03 ` [PATCH v1 1/3] mm/damon: Introduce DAMOS_QUOTA_HUGEPAGE " gutierrez.asier
2026-06-16 15:20 ` sashiko-bot
2026-06-16 19:33 ` Gutierrez Asier
2026-06-17 3:31 ` SeongJae Park
2026-06-16 15:03 ` [PATCH v1 2/3] mm/damon: introduce DAMON_HUGEPAGE for hot region hugepage collapsing gutierrez.asier
2026-06-16 15:21 ` sashiko-bot
2026-06-16 19:27 ` Gutierrez Asier
2026-06-17 4:09 ` SeongJae Park
2026-06-17 4:04 ` SeongJae Park
2026-06-18 0:16 ` SeongJae Park
2026-06-18 0:19 ` SeongJae Park
2026-06-18 11:51 ` Gutierrez Asier
2026-06-18 14:57 ` SeongJae Park
2026-06-18 14:59 ` Gutierrez Asier
2026-06-18 15:08 ` SeongJae Park
2026-06-17 16:12 ` Julian Braha
2026-06-18 0:18 ` SeongJae Park
2026-06-16 15:03 ` [PATCH v1 3/3] mm/damon/sysfs: support hugepage_mem_bp quota goal metric gutierrez.asier
2026-06-16 15:21 ` sashiko-bot
2026-06-16 19:35 ` Gutierrez Asier
2026-06-17 4:15 ` SeongJae Park
2026-07-15 14:47 ` Gutierrez Asier
2026-07-15 15:16 ` SJ Park [this message]
2026-07-15 19:36 ` Gutierrez Asier
2026-06-17 4:16 ` SeongJae Park
2026-06-17 1:44 ` [PATCH v1 0/3] mm/damon: Introduce a huge page collapsing mechanism using auto tuning SeongJae Park
2026-06-20 17:11 ` Gutierrez Asier
2026-06-20 20:02 ` SeongJae Park
2026-07-07 13:31 ` Gutierrez Asier
2026-07-07 14:10 ` SJ Park
2026-07-07 14:25 ` Gutierrez Asier
2026-07-08 1:22 ` SJ Park
2026-07-08 14:50 ` Gutierrez Asier
2026-07-09 0:52 ` SJ Park
2026-07-06 15:03 ` Gutierrez Asier
2026-07-06 15:16 ` SJ Park
2026-07-13 11:30 ` Gutierrez Asier
2026-07-13 14:45 ` SJ Park
2026-07-13 15:04 ` Gutierrez Asier
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=20260715151615.99767-1-sj@kernel.org \
--to=sj@kernel.org \
--cc=damon@lists.linux.dev \
--cc=gutierrez.asier@huawei-partners.com \
--cc=sashiko-reviews@lists.linux.dev \
/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.