On Fri, 6 Dec 2024 12:03:29 +0530 Raghavendra K T <raghavendra.kt@xxxxxxx> wrote: > On 12/5/2024 11:16 PM, Steven Rostedt wrote: > > On Sun, 1 Dec 2024 15:38:17 +0000 > > Raghavendra K T <raghavendra.kt@xxxxxxx> wrote: > > > >> Add tracing support to track > >> - start and end of scanning. > >> - migration. > >> > >> CC: Steven Rostedt <rostedt@xxxxxxxxxxx> > >> CC: Masami Hiramatsu <mhiramat@xxxxxxxxxx> > >> CC: linux-trace-kernel@xxxxxxxxxxxxxxx > >> > > [...] > > >> + > >> + TP_STRUCT__entry( > >> + __array( char, comm, TASK_COMM_LEN ) > > > > Is there a reason to record "comm"? There's other ways to retrieve it than > > to always write it to the ring buffer. > > > > Thank you for the review Steve. The motivation was to filter benchmark > in the trace to understand the behavior. > I will explore regarding other ways of retrieving comm. > (or may be even PID is enough..) You can filter on current comm for any event with trace-cmd and even with the "filter" file. It doesn't need to be part of the event. For the filter file: # echo "COMM == rcu_preempt" > /sys/kernel/tracing/events/timer/hrtimer_cancel/filter or with trace-cmd # trace-cmd start -e hrtimer_cancel -f 'COMM == "rcu_preempt"' # trace-cmd show # tracer: nop # # entries-in-buffer/entries-written: 10/10 #P:8 # # _-----=> irqs-off/BH-disabled # / _----=> need-resched # | / _---=> hardirq/softirq # || / _--=> preempt-depth # ||| / _-=> migrate-disable # |||| / delay # TASK-PID CPU# ||||| TIMESTAMP FUNCTION # | | | ||||| | | rcu_preempt-18 [001] d..3. 54968.170887: hrtimer_cancel: hrtimer=00000000456b5702 rcu_preempt-18 [001] d..3. 54968.177704: hrtimer_cancel: hrtimer=00000000456b5702 rcu_preempt-18 [001] d..3. 54968.181678: hrtimer_cancel: hrtimer=00000000456b5702 rcu_preempt-18 [001] d..3. 54968.185679: hrtimer_cancel: hrtimer=00000000456b5702 rcu_preempt-18 [001] d..3. 54968.186092: hrtimer_cancel: hrtimer=00000000456b5702 rcu_preempt-18 [001] d..3. 54968.193676: hrtimer_cancel: hrtimer=00000000456b5702 rcu_preempt-18 [001] d..3. 54968.193686: hrtimer_cancel: hrtimer=00000000456b5702 rcu_preempt-18 [001] d..3. 54972.871315: hrtimer_cancel: hrtimer=00000000456b5702 rcu_preempt-18 [001] d..3. 54972.875176: hrtimer_cancel: hrtimer=00000000456b5702 rcu_preempt-18 [001] d..3. 54972.881751: hrtimer_cancel: hrtimer=00000000456b5702 Or you can do it after the fact from a trace.dat file: # trace-cmd record -e hrtimer_cancel sleep 10 # trace-cmd report | head cpus=8 sleep-1641 [006] d.h2. 55109.598846: hrtimer_cancel: hrtimer=0xffff9800fdfa1888 sleep-1641 [006] d..3. 55109.599089: hrtimer_cancel: hrtimer=0xffff9800fdfb3140 <idle>-0 [006] d..2. 55109.599111: hrtimer_cancel: hrtimer=0xffff9800fdfa1888 <idle>-0 [006] d.h7. 55109.603848: hrtimer_cancel: hrtimer=0xffff9800fdfb3180 <idle>-0 [006] dN.2. 55109.603895: hrtimer_cancel: hrtimer=0xffff9800fdfa1888 <idle>-0 [000] d.h3. 55109.604478: hrtimer_cancel: hrtimer=0xffff9800fde33180 <idle>-0 [000] dN.2. 55109.604492: hrtimer_cancel: hrtimer=0xffff9800fde21888 rcu_preempt-18 [000] d..3. 55109.604549: hrtimer_cancel: hrtimer=0xffff9800fde33140 <idle>-0 [000] d..2. 55109.604573: hrtimer_cancel: hrtimer=0xffff9800fde21888 # trace-cmd report -F '.*:COMM == "rcu_preempt"' cpus=8 rcu_preempt-18 [000] d..3. 55109.604549: hrtimer_cancel: hrtimer=0xffff9800fde33140 rcu_preempt-18 [000] d..3. 55109.609320: hrtimer_cancel: hrtimer=0xffff9800fde33140 rcu_preempt-18 [000] d..3. 55109.613350: hrtimer_cancel: hrtimer=0xffff9800fde33140 rcu_preempt-18 [000] d..3. 55119.609772: hrtimer_cancel: hrtimer=0xffff9800fde33140 -- Steve