mm/damon/core-test: add a unit test for the feedback loop algorithm
Implement a simple kunit test for testing the behavior of the feedback loop algorithm for the aim-oriented feedback-friven DAMOS aggressiveness auto tuning. Link: https://lkml.kernel.org/r/20231130023652.50284-6-sj@kernel.org Signed-off-by: SeongJae Park <sj@kernel.org> Cc: Brendan Higgins <brendanhiggins@google.com> Cc: David Gow <davidgow@google.com> Cc: Jonathan Corbet <corbet@lwn.net> Cc: Shuah Khan <shuah@kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
parent
d91beaa505
commit
f1762cb3ea
@ -446,6 +446,37 @@ static void damos_test_filter_out(struct kunit *test)
|
||||
damos_free_filter(f);
|
||||
}
|
||||
|
||||
static void damon_test_feed_loop_next_input(struct kunit *test)
|
||||
{
|
||||
unsigned long last_input = 900000, current_score = 200;
|
||||
|
||||
/*
|
||||
* If current score is lower than the goal, which is always 10,000
|
||||
* (read the comment on damon_feed_loop_next_input()'s comment), next
|
||||
* input should be higher than the last input.
|
||||
*/
|
||||
KUNIT_EXPECT_GT(test,
|
||||
damon_feed_loop_next_input(last_input, current_score),
|
||||
last_input);
|
||||
|
||||
/*
|
||||
* If current score is higher than the goal, next input should be lower
|
||||
* than the last input.
|
||||
*/
|
||||
current_score = 250000000;
|
||||
KUNIT_EXPECT_LT(test,
|
||||
damon_feed_loop_next_input(last_input, current_score),
|
||||
last_input);
|
||||
|
||||
/*
|
||||
* The next input depends on the distance between the current score and
|
||||
* the goal
|
||||
*/
|
||||
KUNIT_EXPECT_GT(test,
|
||||
damon_feed_loop_next_input(last_input, 200),
|
||||
damon_feed_loop_next_input(last_input, 2000));
|
||||
}
|
||||
|
||||
static struct kunit_case damon_test_cases[] = {
|
||||
KUNIT_CASE(damon_test_target),
|
||||
KUNIT_CASE(damon_test_regions),
|
||||
@ -461,6 +492,7 @@ static struct kunit_case damon_test_cases[] = {
|
||||
KUNIT_CASE(damon_test_moving_sum),
|
||||
KUNIT_CASE(damos_test_new_filter),
|
||||
KUNIT_CASE(damos_test_filter_out),
|
||||
KUNIT_CASE(damon_test_feed_loop_next_input),
|
||||
{},
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user