From: SeongJae Park <sj@kernel.org>
Cc: SeongJae Park <sj@kernel.org>,
Andrew Morton <akpm@linux-foundation.org>,
damon@lists.linux.dev, linux-kernel@vger.kernel.org,
linux-mm@kvack.org
Subject: [RFC PATCH v1.1 12/13] mm/damon/core: remove damon_moving_sum() and its unit test
Date: Sat, 20 Jun 2026 10:22:42 -0700 [thread overview]
Message-ID: <20260620172244.90953-13-sj@kernel.org> (raw)
In-Reply-To: <20260620172244.90953-1-sj@kernel.org>
damon_moving_sum() is no longer being called for real purpose but its
unit test. Testing a function that is not being used for real users
makes no sense. Remove the test and the function.
Signed-off-by: SeongJae Park <sj@kernel.org>
---
mm/damon/core.c | 40 -------------------------------------
mm/damon/tests/core-kunit.h | 16 ---------------
2 files changed, 56 deletions(-)
diff --git a/mm/damon/core.c b/mm/damon/core.c
index 471b58e8e31b9..f96f54a7f178a 100644
--- a/mm/damon/core.c
+++ b/mm/damon/core.c
@@ -3720,46 +3720,6 @@ int damon_set_region_system_rams_default(struct damon_target *t,
return damon_set_regions(t, &addr_range, 1, min_region_sz);
}
-/*
- * damon_moving_sum() - Calculate an inferred moving sum value.
- * @mvsum: Inferred sum of the last @len_window values.
- * @nomvsum: Non-moving sum of the last discrete @len_window window values.
- * @len_window: The number of last values to take care of.
- * @new_value: New value that will be added to the pseudo moving sum.
- *
- * Moving sum (moving average * window size) is good for handling noise, but
- * the cost of keeping past values can be high for arbitrary window size. This
- * function implements a lightweight pseudo moving sum function that doesn't
- * keep the past window values.
- *
- * It simply assumes there was no noise in the past, and get the no-noise
- * assumed past value to drop from @nomvsum and @len_window. @nomvsum is a
- * non-moving sum of the last window. For example, if @len_window is 10 and we
- * have 25 values, @nomvsum is the sum of the 11th to 20th values of the 25
- * values. Hence, this function simply drops @nomvsum / @len_window from
- * given @mvsum and add @new_value.
- *
- * For example, if @len_window is 10 and @nomvsum is 50, the last 10 values for
- * the last window could be vary, e.g., 0, 10, 0, 10, 0, 10, 0, 0, 0, 20. For
- * calculating next moving sum with a new value, we should drop 0 from 50 and
- * add the new value. However, this function assumes it got value 5 for each
- * of the last ten times. Based on the assumption, when the next value is
- * measured, it drops the assumed past value, 5 from the current sum, and add
- * the new value to get the updated pseduo-moving average.
- *
- * This means the value could have errors, but the errors will be disappeared
- * for every @len_window aligned calls. For example, if @len_window is 10, the
- * pseudo moving sum with 11th value to 19th value would have an error. But
- * the sum with 20th value will not have the error.
- *
- * Return: Pseudo-moving average after getting the @new_value.
- */
-static unsigned int damon_moving_sum(unsigned int mvsum, unsigned int nomvsum,
- unsigned int len_window, unsigned int new_value)
-{
- return mvsum - nomvsum / len_window + new_value;
-}
-
/**
* damon_update_region_access_rate() - Update the access rate of a region.
* @r: The DAMON region to update for its access check result.
diff --git a/mm/damon/tests/core-kunit.h b/mm/damon/tests/core-kunit.h
index d1f019ab6fc25..df16cc070eeb0 100644
--- a/mm/damon/tests/core-kunit.h
+++ b/mm/damon/tests/core-kunit.h
@@ -600,21 +600,6 @@ static void damon_test_set_attrs(struct kunit *test)
damon_destroy_ctx(c);
}
-static void damon_test_moving_sum(struct kunit *test)
-{
- unsigned int mvsum = 50000, nomvsum = 50000, len_window = 10;
- unsigned int new_values[] = {10000, 0, 10000, 0, 0, 0, 10000, 0, 0, 0};
- unsigned int expects[] = {55000, 50000, 55000, 50000, 45000, 40000,
- 45000, 40000, 35000, 30000};
- int i;
-
- for (i = 0; i < ARRAY_SIZE(new_values); i++) {
- mvsum = damon_moving_sum(mvsum, nomvsum, len_window,
- new_values[i]);
- KUNIT_EXPECT_EQ(test, mvsum, expects[i]);
- }
-}
-
static void damon_test_mvsum(struct kunit *test)
{
unsigned long input_expects[] = {
@@ -1516,7 +1501,6 @@ static struct kunit_case damon_test_cases[] = {
KUNIT_CASE(damon_test_nr_accesses_to_accesses_bp),
KUNIT_CASE(damon_test_update_monitoring_result),
KUNIT_CASE(damon_test_set_attrs),
- KUNIT_CASE(damon_test_moving_sum),
KUNIT_CASE(damon_test_mvsum),
KUNIT_CASE(damos_test_new_filter),
KUNIT_CASE(damos_test_commit_quota_goal),
--
2.47.3
next prev parent reply other threads:[~2026-06-20 17:23 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-06-20 17:22 [RFC PATCH v1.1 00/13] mm/damon: optimize out nr_accesses_bp SeongJae Park
2026-06-20 17:22 ` [RFC PATCH v1.1 01/13] mm/damon: introduce damon_nr_accesses_mvsum() SeongJae Park
2026-06-20 17:36 ` sashiko-bot
2026-06-20 17:39 ` SeongJae Park
2026-06-20 17:41 ` SeongJae Park
2026-06-20 17:22 ` [RFC PATCH v1.1 02/13] mm/damon/tests/core-kunit: test damon_mvsum() SeongJae Park
2026-06-20 17:22 ` [RFC PATCH v1.1 03/13] mm/damon/core: use damon_nr_accesses_mvsum() in __damos_valid_target() SeongJae Park
2026-06-20 17:41 ` sashiko-bot
2026-06-20 18:07 ` SeongJae Park
2026-06-20 17:22 ` [RFC PATCH v1.1 04/13] mm/damon/core: use damon_nr_accesses_mvsum() for damos region tracing SeongJae Park
2026-06-20 17:22 ` [RFC PATCH v1.1 05/13] mm/damon/sysfs-schemes: use damon_nr_accesses_mvsum() for damo regions SeongJae Park
2026-06-20 17:37 ` sashiko-bot
2026-06-20 18:19 ` SeongJae Park
2026-06-20 17:22 ` [RFC PATCH v1.1 06/13] mm/damon/core: remove damon_warn_fix_nr_accesses_corruption() SeongJae Park
2026-06-20 17:22 ` [RFC PATCH v1.1 07/13] mm/damon/core: remove damon_verify_reset_aggregated() SeongJae Park
2026-06-20 17:22 ` [RFC PATCH v1.1 08/13] mm/damon/core: remove damon_verify_merge_regions_of() SeongJae Park
2026-06-20 17:22 ` [RFC PATCH v1.1 09/13] mm/damon/tests/core-kunit: remove nr_accesses_bp setup and tests SeongJae Park
2026-06-20 17:22 ` [RFC PATCH v1.1 10/13] selftests/damon/drgn_dump_damon_status: do not dump nr_accesses_bp SeongJae Park
2026-06-20 17:22 ` [RFC PATCH v1.1 11/13] mm/damon/core: remove nr_accesses_bp setups and updates SeongJae Park
2026-06-20 17:34 ` sashiko-bot
2026-06-20 17:45 ` SeongJae Park
2026-06-20 18:20 ` SeongJae Park
2026-06-20 17:22 ` SeongJae Park [this message]
2026-06-20 17:35 ` [RFC PATCH v1.1 12/13] mm/damon/core: remove damon_moving_sum() and its unit test sashiko-bot
2026-06-20 17:47 ` SeongJae Park
2026-06-20 17:22 ` [RFC PATCH v1.1 13/13] mm/damon: remove damon_region->nr_accesses_bp 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=20260620172244.90953-13-sj@kernel.org \
--to=sj@kernel.org \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox