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. Link: https://lkml.kernel.org/r/20220913174449.50645-23-sj@kernel.org Signed-off-by: SeongJae Park <sj@kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
parent
45b8212fc5
commit
a62518ab1d
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user