Hi SeongJae:
On Fri, 10 Dec 2021 00:33:17 +0800 Xin Hao <xhao@xxxxxxxxxxxxxxxxx> wrote:When I use the perf command to record damon monitor data, like below. # perf record -e damon:damon_aggregated # perf script ...target_id=18446462667479739520 nr_regions=13 281472805928960-281472942936064... ...target_id=18446462667479739520 nr_regions=13 281472942936064-281473080008704... ...target_id=18446462667479739520 nr_regions=13 281473080008704-281473216634880... From a user's point of view, the 'target_id' and 'damon_region' which displays in decimal are not very friendly, So there do some changes, keep the 'target_id' display consistent with 'dbgfs/target_ids' interface and 'damon_region' is displayed in hexadecimal, just like below. # perf record -e damon:damon_aggregated # perf script ...target_id=5522 nr_regions=14 ffff716a3000-ffff79893000... ...target_id=5522 nr_regions=14 ffff79893000-ffff819dc000... ...target_id=5522 nr_regions=14 ffff819dc000-ffff89bd9000... Signed-off-by: Xin Hao <xhao@xxxxxxxxxxxxxxxxx> --- include/trace/events/damon.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/include/trace/events/damon.h b/include/trace/events/damon.h index 99ffa601e351..67de51814f4c 100644 --- a/include/trace/events/damon.h +++ b/include/trace/events/damon.h @@ -17,7 +17,7 @@ TRACE_EVENT(damon_aggregated, TP_ARGS(t, r, nr_regions), TP_STRUCT__entry( - __field(unsigned long, target_id) + __field(int, target_id) __field(unsigned int, nr_regions) __field(unsigned long, start) __field(unsigned long, end) @@ -26,7 +26,7 @@ TRACE_EVENT(damon_aggregated, ), TP_fast_assign( - __entry->target_id = t->id; + __entry->target_id = (int)pid_vnr((struct pid *)t->id);I think this would break physical address space monitoring. Have you tested this change for that?
Yes, you are right, But I encountered some problems while testing physical address, it seems that my operation did not work
I did some test like this:
# echo "42 0x0000000840000000 0x000000103fffffff" > init_regions
# echo paddr > target_ids
# echo on > monitor_on
i get the physical address from my kernel startup log.
15 [ 0.000000] Early memory node ranges
16 [ 0.000000] node 0: [mem 0x0000000040000000-0x000000083bc7ffff]
17 [ 0.000000] node 0: [mem 0x000000083bc80000-0x000000083bffffff]
18 [ 0.000000] node 0: [mem 0x000000083c000000-0x000000083c03ffff]
19 [ 0.000000] node 0: [mem 0x000000083c040000-0x000000083c0fffff]
20 [ 0.000000] node 0: [mem 0x000000083c100000-0x000000083f3dffff]
21 [ 0.000000] node 0: [mem 0x000000083f3e0000-0x000000083f46ffff]
22 [ 0.000000] node 0: [mem 0x000000083f470000-0x000000083f47ffff]
23 [ 0.000000] node 0: [mem 0x000000083f480000-0x000000083f59ffff]
24 [ 0.000000] node 0: [mem 0x000000083f5a0000-0x000000083fffffff]
25 [ 0.000000] node 1: [mem 0x0000000840000000-0x000000103fffffff]
26 [ 0.000000] node 2: [mem 0x0000001040000000-0x000000183fffffff]
27 [ 0.000000] node 3: [mem 0x0000001840000000-0x000000203fffffff]
28 [ 0.000000] Initmem setup node 0 [mem 0x0000000040000000-0x000000083fffffff]
29 [ 0.000000] On node 0 totalpages: 8388608
Is there anything wrong ?
Thanks, SJ__entry->nr_regions = nr_regions; __entry->start = r->ar.start; __entry->end = r->ar.end; @@ -34,7 +34,7 @@ TRACE_EVENT(damon_aggregated, __entry->age = r->age; ), - TP_printk("target_id=%lu nr_regions=%u %lu-%lu: %u %u", + TP_printk("target_id=%u nr_regions=%u %lx-%lx: %u %u", __entry->target_id, __entry->nr_regions, __entry->start, __entry->end, __entry->nr_accesses, __entry->age) -- 2.31.0
-- Best Regards! Xin Hao