mm-damon-schemes-add-lru_prio-damos-action.patch removed from -mm tree
The quilt patch titled
Subject: mm/damon/schemes: add 'LRU_PRIO' DAMOS action
has been removed from the -mm tree. Its filename was
mm-damon-schemes-add-lru_prio-damos-action.patch
This patch was dropped because it was merged into the mm-stable branch of git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm
------------------------------------------------------
From: SeongJae Park <[email protected]>
Subject: mm/damon/schemes: add 'LRU_PRIO' DAMOS action
Date: Mon, 13 Jun 2022 19:22:56 +0000
This commit adds a new DAMOS action called 'LRU_PRIO' for the physical address space. The action prioritizes pages in the memory regions of the user-specified target access pattern on their LRU lists. This is hence supposed to be used for frequently accessed (hot) memory regions so that hot pages could be more likely protected under memory pressure. Internally, it simply calls 'mark_page_accessed()'.
---
include/linux/damon.h | 2 + mm/damon/ops-common.c | 42 ++++++++++++++++++++++++++++++++++++++++ mm/damon/ops-common.h | 2 + mm/damon/paddr.c | 20 +++++++++++++++++++ mm/damon/sysfs.c | 1 5 files changed, 67 insertions(+)
include/linux/damon.h renamed from include/linux/damon.h~mm-damon-schemes-add-lru_prio-damos-action +2 -0
@@ -86,6 +86,7 @@ struct damon_target {* @DAMOS_PAGEOUT: Call ``madvise()`` for the region with MADV_PAGEOUT. * @DAMOS_HUGEPAGE: Call ``madvise()`` for the region with MADV_HUGEPAGE. * @DAMOS_NOHUGEPAGE: Call ``madvise()`` for the region with MADV_NOHUGEPAGE. +* @DAMOS_LRU_PRIO: Prioritize the region on its LRU lists. * @DAMOS_STAT: Do nothing but count the stat. * @NR_DAMOS_ACTIONS: Total number of DAMOS actions */
@@ -95,6 +96,7 @@ enum damos_action {DAMOS_PAGEOUT ,DAMOS_HUGEPAGE ,DAMOS_NOHUGEPAGE , +DAMOS_LRU_PRIO ,DAMOS_STAT ,/* Do nothing but only record the stat */ NR_DAMOS_ACTIONS, };
mm/damon/ops-common.c renamed from mm/damon/ops-common.c~mm-damon-schemes-add-lru_prio-damos-action +42 -0
45 lines not on this page · raw message
mm/damon/ops-common.h renamed from mm/damon/ops-common.h~mm-damon-schemes-add-lru_prio-damos-action +2 -0
@@ -14,3 +14,5 @@ void damon_pmdp_mkold(pmd_t *pmd, structint damon_pageout_score (struct damon_ctx *c,struct damon_region *r,struct damos *s); +int damon_hot_score (struct damon_ctx *c,struct damon_region *r, +struct damos *s);
mm/damon/paddr.c renamed from mm/damon/paddr.c~mm-damon-schemes-add-lru_prio-damos-action +20 -0
@@ -233,6 +233,22 @@ static unsigned long damon_pa_pageout(streturn applied *PAGE_SIZE ; } +static unsigned long damon_pa_mark_accessed (struct damon_region *r) +{ +unsigned long addr, applied =0 ; + +for (addr = r->ar.start; addr < r->ar.end; addr +=PAGE_SIZE ) { +struct page *page =damon_get_page (PHYS_PFN (addr)); + +if (!page) +continue ; +mark_page_accessed (page); +put_page (page); + applied++; + } +return applied *PAGE_SIZE ; +} +static unsigned long damon_pa_apply_scheme (struct damon_ctx *ctx,struct damon_target *t,struct damon_region *r,struct damos *scheme)
@@ -240,6 +256,8 @@ static unsigned long damon_pa_apply_scheswitch (scheme->action) {case DAMOS_PAGEOUT :return damon_pa_pageout (r); +case DAMOS_LRU_PRIO : +return damon_pa_mark_accessed (r);default :break ; }
@@ -253,6 +271,8 @@ static int damon_pa_scheme_score(structswitch (scheme->action) {case DAMOS_PAGEOUT :return damon_pageout_score (context, r, scheme); +case DAMOS_LRU_PRIO : +return damon_hot_score (context, r, scheme);default :break ; }
mm/damon/sysfs.c renamed from mm/damon/sysfs.c~mm-damon-schemes-add-lru_prio-damos-action +1 -0
@@ -762,6 +762,7 @@ static const char * const damon_sysfs_da"pageout" ,"hugepage" ,"nohugepage" , +"lru_prio" , "stat", };
_
Patches currently in -mm which might be from [email protected] are
docs-admin-guide-damon-sysfs-document-lru_prio-scheme-action.patch mm-damon-schemes-add-lru_deprio-action.patch docs-admin-guide-damon-sysfs-document-lru_deprio-scheme-action.patch mm-damon-introduce-damon-based-lru-lists-sorting.patch docs-admin-guide-damon-add-a-document-for-damon_lru_sort.patch