]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
mm/damon/core: do data attributes monitoring
authorSeongJae Park <sj@kernel.org>
Mon, 18 May 2026 23:40:55 +0000 (16:40 -0700)
committerAndrew Morton <akpm@linux-foundation.org>
Tue, 2 Jun 2026 22:22:26 +0000 (15:22 -0700)
Implement the data attributes monitoring execution.  Update kdamond to
invoke the probes application callback, and reset the aggregated number of
per-region per-probe positive samples for every aggregation interval.

Link: https://lore.kernel.org/20260518234119.97569-8-sj@kernel.org
Signed-off-by: SeongJae Park <sj@kernel.org>
Cc: David Hildenbrand <david@kernel.org>
Cc: Jonathan Corbet <corbet@lwn.net>
Cc: Liam R. Howlett <liam@infradead.org>
Cc: Lorenzo Stoakes <ljs@kernel.org>
Cc: "Masami Hiramatsu (Google)" <mhiramat@kernel.org>
Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Cc: Michal Hocko <mhocko@suse.com>
Cc: Mike Rapoport <rppt@kernel.org>
Cc: Shuah Khan <shuah@kernel.org>
Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: Suren Baghdasaryan <surenb@google.com>
Cc: Vlastimil Babka <vbabka@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
mm/damon/core.c

index 0f6b3b66d1decc88d4d096ead4a55748826b02db..500e8b08d4419f63cc1112063bca9458e4618523 100644 (file)
@@ -1910,10 +1910,14 @@ static void kdamond_reset_aggregated(struct damon_ctx *c)
                struct damon_region *r;
 
                damon_for_each_region(r, t) {
+                       int i;
+
                        trace_damon_aggregated(ti, r, damon_nr_regions(t));
                        damon_warn_fix_nr_accesses_corruption(r);
                        r->last_nr_accesses = r->nr_accesses;
                        r->nr_accesses = 0;
+                       for (i = 0; i < DAMON_MAX_PROBES; i++)
+                               r->probe_hits[i] = 0;
                        damon_verify_reset_aggregated(r, c);
                }
                ti++;
@@ -3407,6 +3411,8 @@ static int kdamond_fn(void *data)
 
                if (ctx->ops.check_accesses)
                        max_nr_accesses = ctx->ops.check_accesses(ctx);
+               if (ctx->ops.apply_probes)
+                       ctx->ops.apply_probes(ctx);
 
                if (time_after_eq(ctx->passed_sample_intervals,
                                        next_aggregation_sis)) {