mm/damon: add DAMOS filter type YOUNG
authorSeongJae Park <sj@kernel.org>
Fri, 26 Apr 2024 19:52:42 +0000 (12:52 -0700)
committerAndrew Morton <akpm@linux-foundation.org>
Mon, 6 May 2024 00:53:55 +0000 (17:53 -0700)
Define yet another DAMOS filter type, YOUNG.  Like anon and memcg, the
type of filter will be applied to each page in the memory region, and see
if the page is accessed since the last check.  Based on the 'matching'
parameter, the page is filtered out or in.

Note that this commit is adding only the type definition.  The
implementation should be made by DAMON operations sets.  A commit for the
implementation on 'paddr' DAMON operations set will follow.

Link: https://lkml.kernel.org/r/20240426195247.100306-4-sj@kernel.org
Signed-off-by: SeongJae Park <sj@kernel.org>
Tested-by: Honggyu Kim <honggyu.kim@sk.com>
Cc: Jonathan Corbet <corbet@lwn.net>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
include/linux/damon.h
mm/damon/sysfs-schemes.c

index 886d07294f4e7ccbe3753049983db4b7bc3f3986..f7da65e1ac041eceb6b4300b8d8a6d9643f2178c 100644 (file)
@@ -297,6 +297,7 @@ struct damos_stat {
  * enum damos_filter_type - Type of memory for &struct damos_filter
  * @DAMOS_FILTER_TYPE_ANON:    Anonymous pages.
  * @DAMOS_FILTER_TYPE_MEMCG:   Specific memcg's pages.
+ * @DAMOS_FILTER_TYPE_YOUNG:   Recently accessed pages.
  * @DAMOS_FILTER_TYPE_ADDR:    Address range.
  * @DAMOS_FILTER_TYPE_TARGET:  Data Access Monitoring target.
  * @NR_DAMOS_FILTER_TYPES:     Number of filter types.
@@ -315,6 +316,7 @@ struct damos_stat {
 enum damos_filter_type {
        DAMOS_FILTER_TYPE_ANON,
        DAMOS_FILTER_TYPE_MEMCG,
+       DAMOS_FILTER_TYPE_YOUNG,
        DAMOS_FILTER_TYPE_ADDR,
        DAMOS_FILTER_TYPE_TARGET,
        NR_DAMOS_FILTER_TYPES,
index 53a90ac678fb98c2b9c77bf8baecf62fcb0ff334..bea5bc52846a696f8de50863b8959632e913d21b 100644 (file)
@@ -343,6 +343,7 @@ static struct damon_sysfs_scheme_filter *damon_sysfs_scheme_filter_alloc(void)
 static const char * const damon_sysfs_scheme_filter_type_strs[] = {
        "anon",
        "memcg",
+       "young",
        "addr",
        "target",
 };