• SeongJae Park's avatar
    mm/damon/core: make DAMOS uses nr_accesses_bp instead of nr_accesses · affa87c7
    SeongJae Park authored
    Patch series "mm/damon: implement DAMOS apply intervals".
    
    DAMON-based operation schemes are applied for every aggregation interval. 
    That is mainly because schemes are using nr_accesses, which be complete to
    be used for every aggregation interval.
    
    This makes some DAMOS use cases be tricky.  Quota setting under long
    aggregation interval is one such example.  Suppose the aggregation
    interval is ten seconds, and there is a scheme having CPU quota 100ms per
    1s.  The scheme will actually uses 100ms per ten seconds, since it cannobe
    be applied before next aggregation interval.  The feature is working as
    intended, but the results might not that intuitive for some users.  This
    could be fixed by updating the quota to 1s per 10s.  But, in the case, the
    CPU usage of DAMOS could look like spikes, and actually make a bad effect
    to other CPU-sensitive workloads.
    
    Also, with such huge aggregation interval, users may want schemes to be
    applied more frequently.
    
    DAMON provides nr_accesses_bp, which is updated for each sampling interval
    in a way that reasonable to be used.  By using that instead of
    nr_accesses, DAMOS can have its own time interval and mitigate abovely
    mentioned issues.
    
    This patchset makes DAMOS schemes to use nr_accesses_bp instead of
    nr_accesses, and have their own timing intervals.  Also update DAMOS tried
    regions sysfs files and DAMOS before_apply tracepoint to use the new data
    as their source.  Note that the interval is zero by default, and it is
    interpreted to use the aggregation interval instead.  This avoids making
    user-visible behavioral changes.
    
    
    Patches Seuqeunce
    -----------------
    
    The first patch (patch 1/9) makes DAMOS uses nr_accesses_bp instead of
    nr_accesses, and following two patches (patches 2/9 and 3/9) updates DAMON
    sysfs interface for DAMOS tried regions and the DAMOS before_apply
    tracespoint to use nr_accesses_bp instead of nr_accesses, respectively.
    
    The following two patches (patches 4/9 and 5/9) implements the
    scheme-specific apply interval for DAMON kernel API users and update the
    design document for the new feature.
    
    Finally, the following four patches (patches 6/9, 7/9, 8/9 and 9/9) add
    support of the feature in DAMON sysfs interface, add a simple selftest
    test case, and document the new file on the usage and the ABI documents,
    repsectively.
    
    
    This patch (of 9):
    
    DAMON provides nr_accesses_bp, which becomes same to nr_accesses * 10000
    for every aggregation interval, but updated every sampling interval with a
    reasonable accuracy.  Since DAMON-based operation schemes are applied in
    every aggregation interval using nr_accesses, using nr_accesses_bp instead
    will make no difference to users.  Meanwhile, it allows DAMOS to apply the
    schemes in a time interval that less than the aggregation interval.  It
    could be useful and more flexible for some cases.  Do it.
    
    Link: https://lkml.kernel.org/r/20230916020945.47296-1-sj@kernel.org
    Link: https://lkml.kernel.org/r/20230916020945.47296-2-sj@kernel.orgSigned-off-by: default avatarSeongJae Park <sj@kernel.org>
    Cc: Jonathan Corbet <corbet@lwn.net>
    Cc: Shuah Khan <shuah@kernel.org>
    Cc: Steven Rostedt (Google) <rostedt@goodmis.org>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    affa87c7
core.c 42 KB