• SeongJae Park's avatar
    mm/damon/core: implement region-based sampling · f23b8eee
    SeongJae Park authored
    To avoid the unbounded increase of the overhead, DAMON groups adjacent
    pages that are assumed to have the same access frequencies into a
    region.  As long as the assumption (pages in a region have the same
    access frequencies) is kept, only one page in the region is required to
    be checked.  Thus, for each ``sampling interval``,
    
     1. the 'prepare_access_checks' primitive picks one page in each region,
     2. waits for one ``sampling interval``,
     3. checks whether the page is accessed meanwhile, and
     4. increases the access count of the region if so.
    
    Therefore, the monitoring overhead is controllable by adjusting the
    number of regions.  DAMON allows both the underlying primitives and user
    callbacks to adjust regions for the trade-off.  In other words, this
    commit makes DAMON to use not only time-based sampling but also
    space-based sampling.
    
    This scheme, however, cannot preserve the quality of the output if the
    assumption is not guaranteed.  Next commit will address this problem.
    
    Link: https://lkml.kernel.org/r/20210716081449.22187-3-sj38.park@gmail.comSigned-off-by: default avatarSeongJae Park <sjpark@amazon.de>
    Reviewed-by: default avatarLeonard Foerster <foersleo@amazon.de>
    Reviewed-by: default avatarFernand Sieber <sieberf@amazon.com>
    Acked-by: default avatarShakeel Butt <shakeelb@google.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Amit Shah <amit@kernel.org>
    Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
    Cc: Brendan Higgins <brendanhiggins@google.com>
    Cc: David Hildenbrand <david@redhat.com>
    Cc: David Rientjes <rientjes@google.com>
    Cc: David Woodhouse <dwmw@amazon.com>
    Cc: Fan Du <fan.du@intel.com>
    Cc: Greg Kroah-Hartman <greg@kroah.com>
    Cc: Greg Thelen <gthelen@google.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Joe Perches <joe@perches.com>
    Cc: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Cc: Jonathan Corbet <corbet@lwn.net>
    Cc: Marco Elver <elver@google.com>
    Cc: Markus Boehme <markubo@amazon.de>
    Cc: Maximilian Heyne <mheyne@amazon.de>
    Cc: Mel Gorman <mgorman@suse.de>
    Cc: Minchan Kim <minchan@kernel.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Rik van Riel <riel@surriel.com>
    Cc: Shuah Khan <shuah@kernel.org>
    Cc: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Cc: Vladimir Davydov <vdavydov.dev@gmail.com>
    Cc: Vlastimil Babka <vbabka@suse.cz>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    f23b8eee
core.c 10.1 KB