• SeongJae Park's avatar
    mm/damon/core: implement damos filter · 98def236
    SeongJae Park authored
    Patch series "implement DAMOS filtering for anon pages and/or specific
    memory cgroups"
    
    DAMOS let users do system operations in a data access pattern oriented
    way.  The data access pattern, which is extracted by DAMON, is somewhat
    accurate more than what user space could know in many cases.  However, in
    some situation, users could know something more than the kernel about the
    pattern or some special requirements for some types of memory or
    processes.  For example, some users would have slow swap devices and knows
    latency-ciritical processes and therefore want to use DAMON-based
    proactive reclamation (DAMON_RECLAIM) for only non-anonymous pages of
    non-latency-critical processes.
    
    For such restriction, users could exclude the memory regions from the
    initial monitoring regions and use non-dynamic monitoring regions update
    monitoring operations set including fvaddr and paddr.  They could also
    adjust the DAMOS target access pattern.  For dynamically changing memory
    layout and access pattern, those would be not enough.
    
    To help the case, add an interface, namely DAMOS filters, which can be
    used to avoid the DAMOS actions be applied to specific types of memory, to
    DAMON kernel API (damon.h).  At the moment, it supports filtering
    anonymous pages and/or specific memory cgroups in or out for each DAMOS
    scheme.
    
    This patchset adds the support for all DAMOS actions that 'paddr'
    monitoring operations set supports ('pageout', 'lru_prio', and
    'lru_deprio'), and the functionality is exposed via DAMON kernel API
    (damon.h) the DAMON sysfs interface (/sys/kernel/mm/damon/admins/), and
    DAMON_RECLAIM module parameters.
    
    Patches Sequence
    ----------------
    
    First patch implements DAMOS filter interface to DAMON kernel API.  Second
    patch makes the physical address space monitoring operations set to
    support the filters from all supporting DAMOS actions.  Third patch adds
    anonymous pages filter support to DAMON_RECLAIM, and the fourth patch
    documents the DAMON_RECLAIM's new feature.  Fifth to seventh patches
    implement DAMON sysfs files for support of the filters, and eighth patch
    connects the file to use DAMOS filters feature.  Ninth patch adds simple
    self test cases for DAMOS filters of the sysfs interface.  Finally,
    following two patches (tenth and eleventh) document the new features and
    interfaces.
    
    
    This patch (of 11):
    
    DAMOS lets users do system operation in a data access pattern oriented
    way.  The data access pattern, which is extracted by DAMON, is somewhat
    accurate more than what user space could know in many cases.  However, in
    some situation, users could know something more than the kernel about the
    pattern or some special requirements for some types of memory or
    processes.  For example, some users would have slow swap devices and knows
    latency-ciritical processes and therefore want to use DAMON-based
    proactive reclamation (DAMON_RECLAIM) for only non-anonymous pages of
    non-latency-critical processes.
    
    For such restriction, users could exclude the memory regions from the
    initial monitoring regions and use non-dynamic monitoring regions update
    monitoring operations set including fvaddr and paddr.  They could also
    adjust the DAMOS target access pattern.  For dynamically changing memory
    layout and access pattern, those would be not enough.
    
    To help the case, add an interface, namely DAMOS filters, which can be
    used to avoid the DAMOS actions be applied to specific types of memory, to
    DAMON kernel API (damon.h).  At the moment, it supports filtering
    anonymous pages and/or specific memory cgroups in or out for each DAMOS
    scheme.
    
    Note that this commit adds only the interface to the DAMON kernel API. 
    The impelmentation should be made in the monitoring operations sets, and
    following commits will add that.
    
    Link: https://lkml.kernel.org/r/20221205230830.144349-1-sj@kernel.org
    Link: https://lkml.kernel.org/r/20221205230830.144349-2-sj@kernel.org
    
    Signed-off-by: default avatarSeongJae Park <sj@kernel.org>
    Cc: Jonathan Corbet <corbet@lwn.net>
    Cc: Shuah Khan <shuah@kernel.org>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    98def236
core.c 33.6 KB