From: JaeJoon Jung <rgbi3307@gmail.com>
To: sj@kernel.org
Cc: JaeJoon Jung <rgbi3307@gmail.com>,
damon@lists.linux.dev, linux-mm@kvack.org,
linux-kernel@vger.kernel.org, rgbi3307@nate.com
Subject: [PATCH 1/2] mm/damon/core: modified and tunning damon_split_regions_of()
Date: Tue, 13 Jan 2026 21:16:42 +0900 [thread overview]
Message-ID: <20260113121646.31441-1-rgbi3307@gmail.com> (raw)
Before modification:
sz_region
|--------|--------|--------||--------|--------|--------|--------|
nr_subs: 1 2 3 4 5 9
split random: <----------- (*] randmon LOST -------------->
When dividing sz_region at rand, the random value may be small, such as
1 or 2. At this time, there is a problem that only the front areas
corresponding to 1 and 2 are divided, and the remaining back area
becomes too wide. If the area is too wide, there will be many missed
address access judgments.
After modification:
sz_region
|--------|--------|--------|--------|--------|--------|--------||
nr_subs: 1 2 3 4 5 9
split from <------------ (sz_region / nr_subs) ------------------>
It is recommended to divide sz_region evenly in the ratio (sz_region /
nr_subs) rather than using rand. In this way, if you decide nr_subs well,
you can logically match the number of divisions and their sizes.
Signed-off-by: JaeJoon Jung <rgbi3307@gmail.com>
---
mm/damon/core.c | 21 ++++++---------------
1 file changed, 6 insertions(+), 15 deletions(-)
diff --git a/mm/damon/core.c b/mm/damon/core.c
index f9fc0375890a..ff9af9d6a788 100644
--- a/mm/damon/core.c
+++ b/mm/damon/core.c
@@ -2394,27 +2394,18 @@ static void damon_split_regions_of(struct damon_target *t, int nr_subs,
unsigned long min_sz_region)
{
struct damon_region *r, *next;
- unsigned long sz_region, sz_sub = 0;
+ unsigned long sz_region, sz_sub;
int i;
damon_for_each_region_safe(r, next, t) {
sz_region = damon_sz_region(r);
+ sz_sub = ALIGN_DOWN(sz_region / nr_subs, min_sz_region);
- for (i = 0; i < nr_subs - 1 &&
- sz_region > 2 * min_sz_region; i++) {
- /*
- * Randomly select size of left sub-region to be at
- * least 10 percent and at most 90% of original region
- */
- sz_sub = ALIGN_DOWN(damon_rand(1, 10) *
- sz_region / 10, min_sz_region);
- /* Do not allow blank region */
- if (sz_sub == 0 || sz_sub >= sz_region)
- continue;
+ if (sz_sub < min_sz_region)
+ continue;
- damon_split_region_at(t, r, sz_sub);
- sz_region = sz_sub;
- }
+ for (i = 1; i < nr_subs; i++)
+ damon_split_region_at(t, r, sz_region - sz_sub * i);
}
}
--
2.43.0
reply other threads:[~2026-01-13 12:17 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
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=20260113121646.31441-1-rgbi3307@gmail.com \
--to=rgbi3307@gmail.com \
--cc=damon@lists.linux.dev \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=rgbi3307@nate.com \
--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