[RFC PATCH v2 0/4] mm/damon: add a DAMOS filter type for page granularity access recheck

From: SeongJae Park
Date: Mon Mar 11 2024 - 16:46:04 EST


Changes from RFC v1
(https://lore.kernel.org/r/20240307030013.47041-1-sj@xxxxxxxxxx)
- Rename __damon_pa_young() to damon_folio_young_one()
- Mark the folio as old from the filter for the next check

DAMON allows users to specify desired ranges of overhead and accuracy of
the monitoring, and do its best effort to make most lightweight and
accurate results. A recent discussion for tiered memory management
support from DAMON[1] revealed that the best effort accuracy may not
suffice in some use cases, while increasing the minimum accuracy can
incur too high overhead. The discussion further concluded finding
memory regions of specific access pattern via DAMON first, and then
double checking the access of the region again in finer granularity
could help increasing the accuracy while keeping the low overhead.

Add a new type of DAMOS filter, namely YOUNG for such a case. Like anon
and memcg, the type of filter is applied to each page of the memory
region of DAMOS target memory region, and check if the page is accessed
since the last check. Because this is a filter type that applied in
page granularity, the support depends on DAMON operations set. Because
there are expected usages of this filter for physical address space
based DAMOS usage[1], implement the support for only DAMON operations
set for the physical address space, paddr.

[1] https://lore.kernel.org/r/20240227235121.153277-1-sj@xxxxxxxxxx


SeongJae Park (4):
mm/damon/paddr: implement damon_folio_young()
mm/damon/paddr: implement damon_folio_mkold()
mm/damon: add DAMOS filter type YOUNG
mm/damon/paddr: support DAMOS filter type YOUNG

include/linux/damon.h | 2 ++
mm/damon/paddr.c | 64 +++++++++++++++++++++++++---------------
mm/damon/sysfs-schemes.c | 1 +
3 files changed, 43 insertions(+), 24 deletions(-)


base-commit: 13043cde46a19e72d37965b67b74e564623f65e7
--
2.39.2