[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20220913174449.50645-23-sj@kernel.org>
Date: Tue, 13 Sep 2022 17:44:49 +0000
From: SeongJae Park <sj@...nel.org>
To: SeongJae Park <sj@...nel.org>,
Andrew Morton <akpm@...ux-foundation.org>
Cc: damon@...ts.linux.dev, linux-mm@...ck.org,
linux-kernel@...r.kernel.org
Subject: [PATCH 22/22] mm/damon/lru_sort: deduplicate hot/cold schemes generators
damon_lru_sort_new_{hot,cold}_scheme() have quite a lot of duplicates.
This commit factors out the duplicate to a separate function and use it
for reducing the duplicate.
Signed-off-by: SeongJae Park <sj@...nel.org>
---
mm/damon/lru_sort.c | 45 +++++++++++++++++++++------------------------
1 file changed, 21 insertions(+), 24 deletions(-)
diff --git a/mm/damon/lru_sort.c b/mm/damon/lru_sort.c
index 8d9c3d1fd6be..07a0908963fd 100644
--- a/mm/damon/lru_sort.c
+++ b/mm/damon/lru_sort.c
@@ -135,6 +135,25 @@ DEFINE_DAMON_MODULES_DAMOS_STATS_PARAMS(damon_lru_sort_cold_stat,
static struct damon_ctx *ctx;
static struct damon_target *target;
+static struct damos *damon_lru_sort_new_scheme(
+ struct damos_access_pattern *pattern, enum damos_action action)
+{
+ struct damos_quota quota = damon_lru_sort_quota;
+
+ /* Use half of total quota for hot/cold pages sorting */
+ quota.ms = quota.ms / 2;
+
+ return damon_new_scheme(
+ /* find the pattern, and */
+ pattern,
+ /* (de)prioritize on LRU-lists */
+ action,
+ /* under the quota. */
+ "a,
+ /* (De)activate this according to the watermarks. */
+ &damon_lru_sort_wmarks);
+}
+
/* Create a DAMON-based operation scheme for hot memory regions */
static struct damos *damon_lru_sort_new_hot_scheme(unsigned int hot_thres)
{
@@ -149,19 +168,8 @@ static struct damos *damon_lru_sort_new_hot_scheme(unsigned int hot_thres)
.min_age_region = 0,
.max_age_region = UINT_MAX,
};
- struct damos_quota quota = damon_lru_sort_quota;
-
- /* Use half of total quota for hot pages sorting */
- quota.ms = quota.ms / 2;
- return damon_new_scheme(
- &pattern,
- /* prioritize those on LRU lists, as soon as found */
- DAMOS_LRU_PRIO,
- /* under the quota. */
- "a,
- /* (De)activate this according to the watermarks. */
- &damon_lru_sort_wmarks);
+ return damon_lru_sort_new_scheme(&pattern, DAMOS_LRU_PRIO);
}
/* Create a DAMON-based operation scheme for cold memory regions */
@@ -178,19 +186,8 @@ static struct damos *damon_lru_sort_new_cold_scheme(unsigned int cold_thres)
.min_age_region = cold_thres,
.max_age_region = UINT_MAX,
};
- struct damos_quota quota = damon_lru_sort_quota;
- /* Use half of total quota for cold pages sorting */
- quota.ms = quota.ms / 2;
-
- return damon_new_scheme(
- &pattern,
- /* mark those as not accessed, as soon as found */
- DAMOS_LRU_DEPRIO,
- /* under the quota. */
- "a,
- /* (De)activate this according to the watermarks. */
- &damon_lru_sort_wmarks);
+ return damon_lru_sort_new_scheme(&pattern, DAMOS_LRU_DEPRIO);
}
static int damon_lru_sort_apply_parameters(void)
--
2.25.1
Powered by blists - more mailing lists