From: SJ Park <sj@kernel.org>
To: Liew Rui Yan <aethernet65535@gmail.com>
Cc: SJ Park <sj@kernel.org>,
akpm@linux-foundation.org, damon@lists.linux.dev,
linux-kernel@vger.kernel.org, linux-mm@kvack.org
Subject: Re: [RFC PATCH] mm/damon: fix damos quota walk-position tracking
Date: Wed, 26 Aug 2026 07:05:08 -0700 [thread overview]
Message-ID: <20260826140508.74447-1-sj@kernel.org> (raw)
In-Reply-To: <20260826102413.8466-1-aethernet65535@gmail.com>
On Wed, 26 Aug 2026 18:24:13 +0800 Liew Rui Yan <aethernet65535@gmail.com> wrote:
> On Tue, 25 Aug 2026 06:54:57 -0700 SJ Park <sj@kernel.org> wrote:
>
> > On Tue, 25 Aug 2026 20:46:16 +0800 Liew Rui Yan <aethernet65535@gmail.com> wrote:
> >
> > > DAMOS uses charge_target_from/charge_addr_from to remember how far a
> > > quota-limited walk has progressed. The current implementation has two
> > > problems:
> > >
> > > 1. Once set, the cursor unconditionally skips and resets at the last
> > > region of the tracked target, so the last region can be skipped even
> > > when it has not been processed.
> >
> > I don't fully understand this. Could you please clarify more? Maybe adding a
> > realistic example scenario would be helpful.
> >
>
> Problem: Unconditional skip of the last region
>
> In the current damos_skip_charged_region(), there is this logic:
>
> if (r == damon_last_region(t)) {
> quota->charge_target_from = NULL;
> quota->charge_addr_from = 0;
> return true; /* Skip */
> }
>
> Scenario:
> 1. Target has 2 regions: R1 (0-100 bytes) and R2 (100-200 bytes).
>
> 2. Quota is configured to process only 50 bytes per window.
>
> 3. Window 1: Processes R1 (0-50). Quota is full. Cursor is saved at
> (Target, 50).
>
> 4. Window 2: Skips R1 (0-50). Processes R1 (50-100). Quota is full.
> Cursor is saved at (Target, 100), which is exactly the start of R2.
>
> 5. Window 3: The loop reaches R2. Because R2 is damon_last_region(t),
> the old code unconditionally returns true, skipping R2 entirely and
> resetting the cursor.
>
> Result: R2 is permanently skipped even though it has never been
> processed.
Ok, makes sense. The user impact should be not that big, though.
>
> To fix this, the patch advances the cursor every time a region is
> walked, regardless of whether it is applied or filtered out. This
> allows DAMON to accurately track whether the last region has already
> been visited, eliminating the need for the unconditional reset.
Sounds like a big change compared to the problem. Why we cannot modify the
last region case? Have you also considered other possible simpler approaches?
>
> > >
> > > 2. The cursor only advances when the quota becomes full. Regions that
> > > are filtered out do not move the cursor, and the scheme can remain
> > > stuck on the same regions.
> >
> > I don't fully understand this, either. Could you pleae clarify more?
> >
>
> Problem 2 is a false positive. As long as the quota is not full, DAMON
> will continue iterating to find applicable regions. I mistakenly
> assumed in the commit message that encountering filtered-out or invalid
> regions would cause the cursor to stall.
Thank you for clarifying. Please try to reduce this kind of false positives
from the next time.
>
> This patch ensures that every target is traversed sequentially and
> deterministically, even when the quota is set very low. I omitted this
> benefit in the initial problem description. If you think it is okay, I
> will add it in the next revision.
What's the problem and benefit? I still don't get it. More clarification
would be nice.
Thanks,
SJ
[...]
next prev parent reply other threads:[~2026-08-26 14:05 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-25 12:46 [RFC PATCH] mm/damon: fix damos quota walk-position tracking Liew Rui Yan
2026-08-25 12:58 ` sashiko-bot
2026-08-25 13:54 ` SJ Park
2026-08-26 10:24 ` Liew Rui Yan
2026-08-26 14:05 ` SJ Park [this message]
2026-08-27 0:44 ` SJ Park
2026-08-27 18:08 ` Liew Rui Yan
2026-08-28 0:40 ` SJ Park
2026-08-28 1:54 ` Liew Rui Yan
2026-08-28 2:31 ` SJ Park
-- strict thread matches above, loose matches on Subject: below --
2026-08-27 5:54 Liew Rui Yan
2026-08-27 6:02 ` Liew Rui Yan
2026-08-27 13:49 ` 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=20260826140508.74447-1-sj@kernel.org \
--to=sj@kernel.org \
--cc=aethernet65535@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=damon@lists.linux.dev \
--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 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.