diff options
| author | SJ Park <sj@kernel.org> | 2026-06-29 21:08:06 -0700 |
|---|---|---|
| committer | Andrew Morton <akpm@linux-foundation.org> | 2026-07-30 19:40:35 -0700 |
| commit | 8bd5540d8eb3a1bb4551c97e292706fe3a3af924 (patch) | |
| tree | e189c2f848951dad5f88705911c0a7149b76e0b8 | |
| parent | 51bd0de225a7c8488e53056cd35d89cd1cfc1e71 (diff) | |
mm/damon/core: remove nr_accesses_bp setups and updates
DAMON core sets and updates nr_accesses_bp in multiple places. It
explains how delicate it is. The field is no more being used for any real
purpose, and replaced by a simpler function. Remove the setups and
updates.
Link: https://lore.kernel.org/20260630040812.149729-14-sj@kernel.org
Signed-off-by: SJ Park <sj@kernel.org>
Cc: Brendan Higgins <brendan.higgins@linux.dev>
Cc: "Masami Hiramatsu (Google)" <mhiramat@kernel.org>
Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Cc: Shuah Khan <shuah@kernel.org>
Cc: Steven Rostedt <rostedt@goodmis.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
| -rw-r--r-- | mm/damon/core.c | 22 |
1 files changed, 2 insertions, 20 deletions
diff --git a/mm/damon/core.c b/mm/damon/core.c index d2b7609dcf5a..ef0b87f2c035 100644 --- a/mm/damon/core.c +++ b/mm/damon/core.c @@ -302,7 +302,6 @@ struct damon_region *damon_new_region(unsigned long start, unsigned long end) region->ar.start = start; region->ar.end = end; region->nr_accesses = 0; - region->nr_accesses_bp = 0; for (i = 0; i < DAMON_MAX_PROBES; i++) region->probe_hits[i] = 0; INIT_LIST_HEAD(®ion->list); @@ -889,20 +888,17 @@ static void damon_update_monitoring_result(struct damon_region *r, { r->last_nr_accesses = damon_nr_accesses_for_new_attrs( r->last_nr_accesses, old_attrs, new_attrs); - if (!aggregating) { + if (!aggregating) r->nr_accesses = damon_nr_accesses_for_new_attrs( r->nr_accesses, old_attrs, new_attrs); - r->nr_accesses_bp = r->nr_accesses * 10000; - } else { + else /* * if this is called in the middle of the aggregation, reset * the aggregations we made so far for this aggregation * interval. In other words, make the status like * kdamond_reset_aggregated() is called. */ - r->nr_accesses_bp = r->last_nr_accesses * 10000; r->nr_accesses = 0; - } r->age = damon_age_for_new_attrs(r->age, old_attrs, new_attrs); } @@ -3129,7 +3125,6 @@ static void damon_merge_two_regions(struct damon_target *t, l->nr_accesses = (l->nr_accesses * sz_l + r->nr_accesses * sz_r) / (sz_l + sz_r); - l->nr_accesses_bp = l->nr_accesses * 10000; l->age = (l->age * sz_l + r->age * sz_r) / (sz_l + sz_r); l->ar.end = r->ar.end; /* todo: do this for only installed probes */ @@ -3241,7 +3236,6 @@ static void damon_split_region_at(struct damon_target *t, new->age = r->age; new->last_nr_accesses = r->last_nr_accesses; - new->nr_accesses_bp = r->nr_accesses_bp; new->nr_accesses = r->nr_accesses; /* todo: do this for only installed probes */ memcpy(new->probe_hits, r->probe_hits, sizeof(r->probe_hits)); @@ -3849,18 +3843,6 @@ static unsigned int damon_moving_sum(unsigned int mvsum, unsigned int nomvsum, void damon_update_region_access_rate(struct damon_region *r, bool accessed, struct damon_attrs *attrs) { - unsigned int len_window = 1; - - /* - * sample_interval can be zero, but cannot be larger than - * aggr_interval, owing to validation of damon_set_attrs(). - */ - if (attrs->sample_interval) - len_window = damon_max_nr_accesses(attrs); - r->nr_accesses_bp = damon_moving_sum(r->nr_accesses_bp, - r->last_nr_accesses * 10000, len_window, - accessed ? 10000 : 0); - if (accessed) r->nr_accesses++; } |
