• SeongJae Park's avatar
    mm/damon/core: introduce address range type damos filter · ab9bda00
    SeongJae Park authored
    Patch series "Extend DAMOS filters for address ranges and DAMON monitoring
    targets"
    
    There are use cases that need to apply DAMOS schemes to specific address
    ranges or DAMON monitoring targets.  NUMA nodes in the physical address
    space, special memory objects in the virtual address space, and monitoring
    target specific efficient monitoring results snapshot retrieval could be
    examples of such use cases.  This patchset extends DAMOS filters feature
    for such cases, by implementing two more filter types, namely address
    ranges and DAMON monitoring types.
    
    Patches sequence
    ----------------
    
    The first seven patches are for the address ranges based DAMOS filter. 
    The first patch implements the filter feature and expose it via DAMON
    kernel API.  The second patch further expose the feature to users via
    DAMON sysfs interface.  The third and fourth patches implement unit tests
    and selftests for the feature.  Three patches (fifth to seventh) updating
    the documents follow.
    
    The following six patches are for the DAMON monitoring target based DAMOS
    filter.  The eighth patch implements the feature in the core layer and
    expose it via DAMON's kernel API.  The ninth patch further expose it to
    users via DAMON sysfs interface.  Tenth patch add a selftest, and two
    patches (eleventh and twelfth) update documents.
    
    [1] https://lore.kernel.org/damon/20230728203444.70703-1-sj@kernel.org/
    
    
    This patch (of 13):
    
    Users can know special characteristic of specific address ranges.  NUMA
    nodes or special objects or buffers in virtual address space could be such
    examples.  For such cases, DAMOS schemes could required to be applied to
    only specific address ranges.  Implement yet another type of DAMOS filter
    for the purpose.
    
    Note that the existing filter types, namely anon pages and memcg DAMOS
    filters needed page level type check.  Because such check can be done
    efficiently in the opertions set layer, those filters are handled in
    operations set layer.  Specifically, only paddr operations set
    implementation supports these filters.  Also, because statistics counting
    is done in the DAMON core layer, the regions that filtered out by these
    filters are counted as tried but failed to the statistics.
    
    Unlike those, address range based filters can efficiently handled in the
    core layer.  Hence, do the handling in the layer, and count the regions
    that filtered out by those as the scheme has not tried for the region. 
    This difference should clearly documented.
    
    Link: https://lkml.kernel.org/r/20230802214312.110532-1-sj@kernel.org
    Link: https://lkml.kernel.org/r/20230802214312.110532-2-sj@kernel.org
    
    Signed-off-by: default avatarSeongJae Park <sj@kernel.org>
    Cc: Brendan Higgins <brendanhiggins@google.com>
    Cc: Jonathan Corbet <corbet@lwn.net>
    Cc: Shuah Khan <shuah@kernel.org>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    ab9bda00
core.c 37.2 KB