| From: SeongJae Park <sj@kernel.org> |
| Subject: samples/damon/prcl: implement schemes setup |
| Date: Tue, 10 Dec 2024 13:50:30 -0800 |
| |
| Implement a proactive cold memory regions reclaiming logic of prcl sample |
| module using DAMOS. The logic treats memory regions that not accessed at |
| all for five or more seconds as cold, and reclaim those as soon as found. |
| |
| Link: https://lkml.kernel.org/r/20241210215030.85675-6-sj@kernel.org |
| Signed-off-by: SeongJae Park <sj@kernel.org> |
| Signed-off-by: Andrew Morton <akpm@linux-foundation.org> |
| --- |
| |
| samples/damon/prcl.c | 20 ++++++++++++++++++++ |
| 1 file changed, 20 insertions(+) |
| |
| --- a/samples/damon/prcl.c~samples-damon-prcl-implement-schemes-setup |
| +++ a/samples/damon/prcl.c |
| @@ -49,6 +49,7 @@ static int damon_sample_prcl_after_aggre |
| static int damon_sample_prcl_start(void) |
| { |
| struct damon_target *target; |
| + struct damos *scheme; |
| |
| pr_info("start\n"); |
| |
| @@ -75,6 +76,25 @@ static int damon_sample_prcl_start(void) |
| |
| ctx->callback.after_aggregation = damon_sample_prcl_after_aggregate; |
| |
| + scheme = damon_new_scheme( |
| + &(struct damos_access_pattern) { |
| + .min_sz_region = PAGE_SIZE, |
| + .max_sz_region = ULONG_MAX, |
| + .min_nr_accesses = 0, |
| + .max_nr_accesses = 0, |
| + .min_age_region = 50, |
| + .max_age_region = UINT_MAX}, |
| + DAMOS_PAGEOUT, |
| + 0, |
| + &(struct damos_quota){}, |
| + &(struct damos_watermarks){}, |
| + NUMA_NO_NODE); |
| + if (!scheme) { |
| + damon_destroy_ctx(ctx); |
| + return -ENOMEM; |
| + } |
| + damon_set_schemes(ctx, &scheme, 1); |
| + |
| return damon_start(&ctx, 1, true); |
| } |
| |
| _ |