]> git.baikalelectronics.ru Git - kernel.git/commitdiff
mm/damon: add 'age' of region tracepoint support
authorXin Hao <xhao@linux.alibaba.com>
Fri, 14 Jan 2022 22:09:37 +0000 (14:09 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sat, 15 Jan 2022 14:30:32 +0000 (16:30 +0200)
In Damon, we can get age information by analyzing the nr_access change,
But short time sampling is not effective, we have to obtain enough data
for analysis through long time trace, this also means that we need to
consume more cpu resources and storage space.

Now the region add a new 'age' variable, we only need to get the change of
age value through a little time trace, for example, age has been
increasing to 141, but nr_access shows a value of 0 at the same time,
Through this,we can conclude that the region has a very low nr_access
value for a long time.

Link: https://lkml.kernel.org/r/b9def1262af95e0dc1d0caea447886434db01161.1636989871.git.xhao@linux.alibaba.com
Signed-off-by: Xin Hao <xhao@linux.alibaba.com>
Reviewed-by: SeongJae Park <sj@kernel.org>
Cc: Muchun Song <songmuchun@bytedance.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
include/trace/events/damon.h

index 2f422f4f1fb9e280eaacf8d168c3ab72788f245c..99ffa601e35119877d93c6ddd1b58c929ede3322 100644 (file)
@@ -22,6 +22,7 @@ TRACE_EVENT(damon_aggregated,
                __field(unsigned long, start)
                __field(unsigned long, end)
                __field(unsigned int, nr_accesses)
+               __field(unsigned int, age)
        ),
 
        TP_fast_assign(
@@ -30,11 +31,13 @@ TRACE_EVENT(damon_aggregated,
                __entry->start = r->ar.start;
                __entry->end = r->ar.end;
                __entry->nr_accesses = r->nr_accesses;
+               __entry->age = r->age;
        ),
 
-       TP_printk("target_id=%lu nr_regions=%u %lu-%lu: %u",
+       TP_printk("target_id=%lu nr_regions=%u %lu-%lu: %u %u",
                        __entry->target_id, __entry->nr_regions,
-                       __entry->start, __entry->end, __entry->nr_accesses)
+                       __entry->start, __entry->end,
+                       __entry->nr_accesses, __entry->age)
 );
 
 #endif /* _TRACE_DAMON_H */