• SeongJae Park's avatar
    mm/damon/core: introduce per-context region priorities histogram buffer · b7315fbb
    SeongJae Park authored
    Patch series "replace per-quota region priorities histogram buffer with
    per-context one".
    
    Each DAMOS quota (struct damos_quota) maintains a histogram for total
    regions size per its prioritization score.  DAMOS calcultes minimum
    prioritization score of regions that are ok to apply the DAMOS action to
    while respecting the quota.  The histogram is constructed only for the
    calculation of the minimum score in damos_adjust_quota() for each quota
    which called by kdamond_fn().
    
    Hence, there is no real reason to have per-quota histogram.  Only
    per-kdamond histogram is needed, since parallel kdamonds could have races
    otherwise.  The current implementation is only wasting the memory, and can
    easily cause unintended stack usage[1].
    
    So, introducing a per-kdamond histogram and replacing the per-quota one
    with it would be the right solution for the issue.  However, supporting
    multiple DAMON contexts per kdamond is still an ongoing work[2] without a
    clear estimated time of arrival.  Meanwhile, per-context histogram could
    be an effective and straightforward solution having no blocker.  Let's fix
    the problem first in the way.
    
    
    This patch (of 4):
    
    Introduce per-context buffer for region priority scores-total size
    histogram.  Same to the per-quota one (->histogram of struct damos_quota),
    the new buffer is hidden from DAMON API users by being defined as a
    private field of DAMON context structure.  It is dynamically allocated and
    de-allocated at the beginning and ending of the execution of the kdamond
    by kdamond_fn() itself.
    
    [1] commit 0742cadf5e4c ("mm/damon/lru_sort: adjust local variable to dynamic allocation")
    [2] https://lore.kernel.org/20240531122320.909060-1-yorha.op@gmail.com
    
    Link: https://lkml.kernel.org/r/20240826042323.87025-1-sj@kernel.org
    Link: https://lkml.kernel.org/r/20240826042323.87025-2-sj@kernel.orgSigned-off-by: default avatarSeongJae Park <sj@kernel.org>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    b7315fbb
core.c 56.5 KB