mm/damon/core: remove damon_moving_sum() and its unit test

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.

Link: https://lore.kernel.org/20260630040812.149729-18-sj@kernel.org
Signed-off-by: SJ Park <sj@kernel.org>
Cc: Brendan Higgins <brendan.higgins@linux.dev>
Cc: "Masami Hiramatsu (Google)" <mhiramat@kernel.org>
Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Cc: Shuah Khan <shuah@kernel.org>
Cc: Steven Rostedt <rostedt@goodmis.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
SJ Park 2026-06-29 21:08:10 -07:00 committed by Andrew Morton
parent 5744423b46
commit 9255add1fc
2 changed files with 0 additions and 56 deletions

View File

@ -3789,46 +3789,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.

View File

@ -659,21 +659,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[] = {
@ -1590,7 +1575,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),