• SeongJae Park's avatar
    mm/damon/core: define and use a dedicated function for region access rate update · 78fbfb15
    SeongJae Park authored
    Patch series "mm/damon: provide pseudo-moving sum based access rate".
    
    DAMON checks the access to each region for every sampling interval,
    increase the access rate counter of the region, namely nr_accesses, if the
    access was made.  For every aggregation interval, the counter is reset. 
    The counter is exposed to users to be used as a metric showing the
    relative access rate (frequency) of each region.  In other words, DAMON
    provides access rate of each region in every aggregation interval.  The
    aggregation avoids temporal access pattern changes making things
    confusing.  However, this also makes a few DAMON-related operations to
    unnecessarily need to be aligned to the aggregation interval.  This can
    restrict the flexibility of DAMON applications, especially when the
    aggregation interval is huge.
    
    To provide the monitoring results in finer-grained timing while keeping
    handling of temporal access pattern change, this patchset implements a
    pseudo-moving sum based access rate metric.  It is pseudo-moving sum
    because strict moving sum implementation would need to keep all values for
    last time window, and that could incur high overhead of there could be
    arbitrary number of values in a time window.  Especially in case of the
    nr_accesses, since the sampling interval and aggregation interval can
    arbitrarily set and the past values should be maintained for every region,
    it could be risky.  The pseudo-moving sum assumes there were no temporal
    access pattern change in last discrete time window to remove the needs for
    keeping the list of the last time window values.  As a result, it beocmes
    not strict moving sum implementation, but provides a reasonable accuracy.
    
    Also, it keeps an important property of the moving sum.  That is, the
    moving sum becomes same to discrete-window based sum at the time that
    aligns to the time window.  This means using the pseudo moving sum based
    nr_accesses makes no change to users who shows the value for every
    aggregation interval.
    
    Patches Sequence
    ----------------
    
    The sequence of the patches is as follows.  The first four patches are for
    preparation of the change.  The first two (patches 1 and 2) implements a
    helper function for nr_accesses update and eliminate corner case that
    skips use of the function, respectively.  Following two (patches 3 and 4)
    respectively implement the pseudo-moving sum function and its simple unit
    test case.
    
    Two patches for making DAMON to use the pseudo-moving sum follow.  The
    fifthe one (patch 5) introduces a new field for representing the
    pseudo-moving sum-based access rate of each region, and the sixth one
    makes the new representation to actually updated with the pseudo-moving
    sum function.
    
    Last two patches (patches 7 and 8) makes followup fixes for skipping
    unnecessary updates and marking the moving sum function as static,
    respectively.
    
    
    This patch (of 8):
    
    Each DAMON operarions set is updating nr_accesses field of each
    damon_region for each of their access check results, from the
    check_accesses() callback.  Directly accessing the field could make things
    complex to manage and change in future.  Define and use a dedicated
    function for the purpose.
    
    Link: https://lkml.kernel.org/r/20230915025251.72816-1-sj@kernel.org
    Link: https://lkml.kernel.org/r/20230915025251.72816-2-sj@kernel.orgSigned-off-by: default avatarSeongJae Park <sj@kernel.org>
    Cc: Brendan Higgins <brendanhiggins@google.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    78fbfb15
paddr.c 7.71 KB