Commit d896073f authored by SeongJae Park's avatar SeongJae Park Committed by Andrew Morton

mm/damon/core: add more comments for nr_accesses

The comment on struct damon_region about nr_accesses field looks not
sufficient.  Many people actually used to ask what nr_accesses mean.
There is more detailed explanation of the mechanism on the comment for
struct damon_attrs, but it is also ambiguous, as it doesn't specify the
name of the counter for aggregating the access check results.  Make
those more detailed.

Link: https://lkml.kernel.org/r/20230907022929.91361-10-sj@kernel.orgSigned-off-by: default avatarSeongJae Park <sj@kernel.org>
Cc: Jonathan Corbet <corbet@lwn.net>
Cc: Steven Rostedt (Google) <rostedt@goodmis.org>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
parent 27e68c4b
...@@ -43,6 +43,10 @@ struct damon_addr_range { ...@@ -43,6 +43,10 @@ struct damon_addr_range {
* @list: List head for siblings. * @list: List head for siblings.
* @age: Age of this region. * @age: Age of this region.
* *
* @nr_accesses is reset to zero for every &damon_attrs->aggr_interval and be
* increased for every &damon_attrs->sample_interval if an access to the region
* during the last sampling interval is found.
*
* @age is initially zero, increased for each aggregation interval, and reset * @age is initially zero, increased for each aggregation interval, and reset
* to zero again if the access frequency is significantly changed. If two * to zero again if the access frequency is significantly changed. If two
* regions are merged into a new region, both @nr_accesses and @age of the new * regions are merged into a new region, both @nr_accesses and @age of the new
...@@ -472,13 +476,14 @@ struct damon_callback { ...@@ -472,13 +476,14 @@ struct damon_callback {
* regions. * regions.
* *
* For each @sample_interval, DAMON checks whether each region is accessed or * For each @sample_interval, DAMON checks whether each region is accessed or
* not. It aggregates and keeps the access information (number of accesses to * not during the last @sample_interval. If such access is found, DAMON
* each region) for @aggr_interval time. DAMON also checks whether the target * aggregates the information by increasing &damon_region->nr_accesses for
* memory regions need update (e.g., by ``mmap()`` calls from the application, * @aggr_interval time. For each @aggr_interval, the count is reset. DAMON
* in case of virtual memory monitoring) and applies the changes for each * also checks whether the target memory regions need update (e.g., by
* @ops_update_interval. All time intervals are in micro-seconds. * ``mmap()`` calls from the application, in case of virtual memory monitoring)
* Please refer to &struct damon_operations and &struct damon_callback for more * and applies the changes for each @ops_update_interval. All time intervals
* detail. * are in micro-seconds. Please refer to &struct damon_operations and &struct
* damon_callback for more detail.
*/ */
struct damon_attrs { struct damon_attrs {
unsigned long sample_interval; unsigned long sample_interval;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment