[RFC PATCH v2 00/10] mm/damon: improve readability, clarity and test coverage

2 views
Skip to first unread message

SJ Park

unread,
Sep 17, 2026, 12:05:48 AMSep 17
to SJ Park, Liam R. Howlett, Andrew Morton, Brendan Higgins, David Gow, David Hildenbrand, Jonathan Corbet, Lorenzo Stoakes, Michal Hocko, Mike Rapoport, Randy Dunlap, Shuah Khan, Shuah Khan, Suren Baghdasaryan, Vlastimil Babka, da...@lists.linux.dev, kuni...@googlegroups.com, linu...@vger.kernel.org, linux-...@vger.kernel.org, linux-k...@vger.kernel.org, linu...@kvack.org
Yet another batch of miscellaneous DAMON minor improvements. Mostly
focused on readability and clarity of code and document, and unit/self
test coverage. No user-visible behavioral change is intended.

Changes from RFC
- RFC: https://lore.kernel.org/2026091220081...@kernel.org
- Fix a typo in the selftest warning message.
- Collect A-b: from Randy.
- Split out damos_adjust_quota() fix to an individual hotfix patch.
- Add a patch for initializing walk_control_obsolete in damon_new_ctx().
- Add a patch for probe_hits_wsum damos filter commit kunit test.
- Trivial patch sequence update.
- Rebase to the latest mm-new.

SJ Park (10):
mm/damon/api: remove NR_DAMOS_FILTER_TYPES
mm/damon/core: use abs_diff() in damon_feed_loop_next_input()
mm/damon/core: use mult_frac() in damon_feed_loop_next_input()
mm/damon/core: set damon_ctx->walk_control_obsolete in damon_new_ctx()
mm/damon/core: document damon_call()/damon_start() race hang issue
mm/damon/paddr: remove pa parameter from damon_pa_filter_pass()
mm/damon/tests/core-kunit: test eligible_mem_bp commitment
mm/damon/tests/core-kunit: add probe_hits_wsum damos filter commit
test
selftests/damon/sysfs_memcg_path_leak: fail only for real DAMON leak
Docs/mm/damon/design: clarify bp is basis point

Documentation/mm/damon/design.rst | 5 ++--
include/linux/damon.h | 2 --
mm/damon/core.c | 19 ++++--------
mm/damon/paddr.c | 5 ++--
mm/damon/tests/core-kunit.h | 30 +++++++++++++++++++
.../selftests/damon/sysfs_memcg_path_leak.sh | 7 +++++
6 files changed, 48 insertions(+), 20 deletions(-)


base-commit: b7c76a308c2afda7cfc2ce98be3eed466be71337
--
2.47.3

SJ Park

unread,
Sep 17, 2026, 12:05:50 AMSep 17
to SJ Park, Andrew Morton, Brendan Higgins, David Gow, da...@lists.linux.dev, kuni...@googlegroups.com, linux-...@vger.kernel.org, linux-k...@vger.kernel.org, linu...@kvack.org
DAMOS filter commit kunit test lacks test cases for probe_hits_wsum
filter type. Add test cases for probe_hits_wsum type DAMOS filter
commit.

Signed-off-by: SJ Park <s...@kernel.org>
---
mm/damon/tests/core-kunit.h | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)

diff --git a/mm/damon/tests/core-kunit.h b/mm/damon/tests/core-kunit.h
index 1244cfeae5e70..df84d9cc7d204 100644
--- a/mm/damon/tests/core-kunit.h
+++ b/mm/damon/tests/core-kunit.h
@@ -1166,6 +1166,10 @@ static void damos_test_commit_filter_for(struct kunit *test,
KUNIT_EXPECT_EQ(test, dst->sz_range.min, src->sz_range.min);
KUNIT_EXPECT_EQ(test, dst->sz_range.max, src->sz_range.max);
break;
+ case DAMOS_FILTER_TYPE_PROBE_HITS_WSUM:
+ KUNIT_EXPECT_EQ(test, dst->range_min, src->range_min);
+ KUNIT_EXPECT_EQ(test, dst->range_max, src->range_max);
+ break;
default:
break;
}
@@ -1239,6 +1243,22 @@ static void damos_test_commit_filter(struct kunit *test)
.allow = true,
.target_idx = 6,
}, false);
+ damos_test_commit_filter_for(test, &dst,
+ &(struct damos_filter){
+ .type = DAMOS_FILTER_TYPE_PROBE_HITS_WSUM,
+ .matching = false,
+ .allow = true,
+ .range_min = 12,
+ .range_max = 34,
+ }, false);
+ damos_test_commit_filter_for(test, &dst,
+ &(struct damos_filter){
+ .type = DAMOS_FILTER_TYPE_PROBE_HITS_WSUM,
+ .matching = false,
+ .allow = true,
+ .range_min = 34,
+ .range_max = 12,
+ }, true);
}

static void damos_test_help_initailize_scheme(struct damos *scheme)
--
2.47.3

SJ Park

unread,
Sep 17, 2026, 12:05:51 AMSep 17
to SJ Park, Andrew Morton, Brendan Higgins, David Gow, da...@lists.linux.dev, kuni...@googlegroups.com, linux-...@vger.kernel.org, linux-k...@vger.kernel.org, linu...@kvack.org
There was a DAMOS quota goal commit bug [1] that doesn't update the nid
field for DAMOS_QUOTA_NODE_ELIGIBLE_MEM_BP metric goal. Add a kunit
test case for confirming nid commitment.

[1] https://lore.kkernel.org/202608270450...@kernel.org

Signed-off-by: SJ Park <s...@kernel.org>
---
mm/damon/tests/core-kunit.h | 10 ++++++++++
1 file changed, 10 insertions(+)

diff --git a/mm/damon/tests/core-kunit.h b/mm/damon/tests/core-kunit.h
index 82c542afaa60e..1244cfeae5e70 100644
--- a/mm/damon/tests/core-kunit.h
+++ b/mm/damon/tests/core-kunit.h
@@ -835,6 +835,9 @@ static void damos_test_commit_quota_goal_for(struct kunit *test,
KUNIT_EXPECT_EQ(test, dst->nid, src->nid);
KUNIT_EXPECT_EQ(test, dst->memcg_id, src->memcg_id);
break;
+ case DAMOS_QUOTA_NODE_ELIGIBLE_MEM_BP:
+ KUNIT_EXPECT_EQ(test, dst->nid, src->nid);
+ break;
default:
break;
}
@@ -898,6 +901,13 @@ static void damos_test_commit_quota_goal(struct kunit *test)
.current_value = 345,
.last_psi_total = 567,
});
+ damos_test_commit_quota_goal_for(test, &dst,
+ &(struct damos_quota_goal){
+ .metric = DAMOS_QUOTA_NODE_ELIGIBLE_MEM_BP,
+ .target_value = 12,
+ .current_value = 345,
+ .nid = 6,
+ });
}

static void damos_test_commit_quota_goals_for(struct kunit *test,
--
2.47.3

SJ Park

unread,
Sep 17, 2026, 10:22:22 AMSep 17
to Andrew Morton, SJ Park, Brendan Higgins, David Gow, da...@lists.linux.dev, kuni...@googlegroups.com, linux-...@vger.kernel.org, linux-k...@vger.kernel.org, linu...@kvack.org
There was a DAMOS quota goal commit bug [1] that doesn't update the nid
field for DAMOS_QUOTA_NODE_ELIGIBLE_MEM_BP metric goal. Add a kunit
test case for confirming nid commitment.

[1] https://lore.kkernel.org/202608270450...@kernel.org

Signed-off-by: SJ Park <s...@kernel.org>
---
mm/damon/tests/core-kunit.h | 10 ++++++++++
1 file changed, 10 insertions(+)

diff --git a/mm/damon/tests/core-kunit.h b/mm/damon/tests/core-kunit.h
index 5da84caf4124d..1f19fefdd98c3 100644

SJ Park

unread,
Sep 17, 2026, 10:22:23 AMSep 17
to Andrew Morton, SJ Park, Liam R. Howlett, Brendan Higgins, David Gow, David Hildenbrand, Jonathan Corbet, Lorenzo Stoakes, Michal Hocko, Mike Rapoport, Randy Dunlap, Shuah Khan, Shuah Khan, Suren Baghdasaryan, Vlastimil Babka, da...@lists.linux.dev, kuni...@googlegroups.com, linu...@vger.kernel.org, linux-...@vger.kernel.org, linux-k...@vger.kernel.org, linu...@kvack.org
Yet another batch of miscellaneous DAMON minor improvements. Mostly
focused on readability and clarity of code and document, and unit/self
test coverage. No user-visible behavioral change is intended.

Changes from RFC v2
- RFC v2: https://lore.kernel.org/2026091704053...@kernel.org
- Drop RFC tag.
base-commit: 942682790e570c9422a389bf34097e74c4777fe9
--
2.47.3

SJ Park

unread,
Sep 17, 2026, 10:22:23 AMSep 17
to Andrew Morton, SJ Park, Brendan Higgins, David Gow, da...@lists.linux.dev, kuni...@googlegroups.com, linux-...@vger.kernel.org, linux-k...@vger.kernel.org, linu...@kvack.org
DAMOS filter commit kunit test lacks test cases for probe_hits_wsum
filter type. Add test cases for probe_hits_wsum type DAMOS filter
commit.

Signed-off-by: SJ Park <s...@kernel.org>
---
mm/damon/tests/core-kunit.h | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)

diff --git a/mm/damon/tests/core-kunit.h b/mm/damon/tests/core-kunit.h
index 1f19fefdd98c3..5ff0436c58441 100644
--- a/mm/damon/tests/core-kunit.h
+++ b/mm/damon/tests/core-kunit.h
@@ -1166,6 +1166,10 @@ static void damos_test_commit_filter_for(struct kunit *test,
KUNIT_EXPECT_EQ(test, dst->sz_range.min, src->sz_range.min);
KUNIT_EXPECT_EQ(test, dst->sz_range.max, src->sz_range.max);
break;
+ case DAMOS_FILTER_TYPE_PROBE_HITS_WSUM:
+ KUNIT_EXPECT_EQ(test, dst->range_min, src->range_min);
+ KUNIT_EXPECT_EQ(test, dst->range_max, src->range_max);
+ break;
default:
break;
}

SJ Park

unread,
Sep 17, 2026, 10:37:17 AMSep 17
to SJ Park, Andrew Morton, Liam R. Howlett, Brendan Higgins, David Gow, David Hildenbrand, Jonathan Corbet, Lorenzo Stoakes, Michal Hocko, Mike Rapoport, Randy Dunlap, Shuah Khan, Shuah Khan, Suren Baghdasaryan, Vlastimil Babka, da...@lists.linux.dev, kuni...@googlegroups.com, linu...@vger.kernel.org, linux-...@vger.kernel.org, linux-k...@vger.kernel.org, linu...@kvack.org
On Thu, 17 Sep 2026 07:21:58 -0700 SJ Park <s...@kernel.org> wrote:

> Yet another batch of miscellaneous DAMON minor improvements. Mostly
> focused on readability and clarity of code and document, and unit/self
> test coverage. No user-visible behavioral change is intended.

Sashiko found no blocker for this series. Sashiko send its findings to damon@
mailing list [1], and I reply those if anything needs to be clarified. Please
refer to those for details.

[1] https://lore.kernel.org/damon/


Thanks,
SJ

Andrew Morton

unread,
Sep 17, 2026, 5:57:50 PMSep 17
to SJ Park, Liam R. Howlett, Brendan Higgins, David Gow, David Hildenbrand, Jonathan Corbet, Lorenzo Stoakes, Michal Hocko, Mike Rapoport, Randy Dunlap, Shuah Khan, Shuah Khan, Suren Baghdasaryan, Vlastimil Babka, da...@lists.linux.dev, kuni...@googlegroups.com, linu...@vger.kernel.org, linux-...@vger.kernel.org, linux-k...@vger.kernel.org, linu...@kvack.org
On Thu, 17 Sep 2026 07:21:58 -0700 SJ Park <s...@kernel.org> wrote:

> Yet another batch of miscellaneous DAMON minor improvements. Mostly
> focused on readability and clarity of code and document, and unit/self
> test coverage. No user-visible behavioral change is intended.

Thanks, all queued up in mm-new.
Reply all
Reply to author
Forward
0 new messages