xref: /openbmc/openbmc-tools/tracing/README.md (revision e310dd91688c0b6d6eaee9e6889bf61ee6ce09b7)
1*e310dd91SPatrick Williams# trace
2cf3c1e67SAndrew Jeffery
3*e310dd91SPatrick Williams## Description
4cf3c1e67SAndrew Jeffery
5*e310dd91SPatrick WilliamsThe trace script automates the process of enabling named sets of tracepoints and
6*e310dd91SPatrick Williamsdumping the trace file over the SSH connection, then cleaning up after itself.
7*e310dd91SPatrick Williams
8*e310dd91SPatrick Williams## Usage
9cf3c1e67SAndrew Jeffery
10cf3c1e67SAndrew JefferyTo run:
11cf3c1e67SAndrew Jeffery
12*e310dd91SPatrick Williams```text
13cf3c1e67SAndrew JefferyUsage: ./trace [USER@]HOST EVENTSET [EVENTSET...]
14cf3c1e67SAndrew Jeffery
15cf3c1e67SAndrew JefferyValid EVENTSETs: fsi, occ, sbefifo, timer, sched
16cf3c1e67SAndrew Jeffery```
17cf3c1e67SAndrew Jeffery
18cf3c1e67SAndrew JefferyTo stop the trace output and disable the tracepoints, hit `Return`.
19cf3c1e67SAndrew Jeffery
20cf3c1e67SAndrew JefferyFor example, capturing the defined tracepoints for the `sched` event set:
21cf3c1e67SAndrew Jeffery
22*e310dd91SPatrick Williams```sh
23cf3c1e67SAndrew Jeffery$ ./trace root@my-bmc sched
24cf3c1e67SAndrew Jeffery+ set -eou pipefail
25cf3c1e67SAndrew Jeffery+ set -x
26cf3c1e67SAndrew Jeffery+ EVENT_fsi='fsi fsi_master_gpio'
27cf3c1e67SAndrew Jeffery+ EVENT_occ='occ hwmon_occ'
28cf3c1e67SAndrew Jeffery+ EVENT_sbefifo=sbefifo
29cf3c1e67SAndrew Jeffery+ EVENT_timer='timer/timer_start timer/timer_cancel timer/timer_expire_entry timer/timer_expire_exit'
30cf3c1e67SAndrew Jeffery+ EVENT_sched='sched/sched_switch sched/sched_wakeup sched/sched_wakeup_new sched/sched_waking'
31cf3c1e67SAndrew Jeffery+ trap on_exit EXIT
32cf3c1e67SAndrew Jeffery+ CAT_PID=1867
33cf3c1e67SAndrew Jeffery+ for elem in sched
34cf3c1e67SAndrew Jeffery+ eval 'trace=\${EVENT_${elem}}'
35cf3c1e67SAndrew Jeffery++ trace='${EVENT_sched}'
36cf3c1e67SAndrew Jeffery++ eval echo '${EVENT_sched}'
37cf3c1e67SAndrew Jeffery+++ echo sched/sched_switch sched/sched_wakeup sched/sched_wakeup_new sched/sched_waking
38cf3c1e67SAndrew Jeffery+ for event in '$(eval echo ${trace})'
39cf3c1e67SAndrew Jeffery+ echo 1
40cf3c1e67SAndrew Jeffery+ for event in '$(eval echo ${trace})'
41cf3c1e67SAndrew Jeffery+ echo 1
42cf3c1e67SAndrew Jeffery+ for event in '$(eval echo ${trace})'
43cf3c1e67SAndrew Jeffery+ echo 1
44cf3c1e67SAndrew Jeffery+ for event in '$(eval echo ${trace})'
45cf3c1e67SAndrew Jeffery+ echo 1
46cf3c1e67SAndrew Jeffery+ echo 1
47cf3c1e67SAndrew Jeffery+ read
48cf3c1e67SAndrew Jeffery+ cat /sys/kernel/debug/tracing/per_cpu/cpu0/trace_pipe
49cf3c1e67SAndrew Jeffery              sh-1866  [000] d.h. 201821.030000: sched_waking: comm=rngd pid=987 prio=120 target_cpu=000
50cf3c1e67SAndrew Jeffery              sh-1866  [000] dnh. 201821.030000: sched_wakeup: comm=rngd pid=987 prio=120 target_cpu=000
51cf3c1e67SAndrew Jeffery              sh-1866  [000] dn.. 201821.030000: sched_waking: comm=ksoftirqd/0 pid=6 prio=120 target_cpu=000
52cf3c1e67SAndrew Jeffery              sh-1866  [000] dn.. 201821.030000: sched_wakeup: comm=ksoftirqd/0 pid=6 prio=120 target_cpu=000
53cf3c1e67SAndrew Jeffery              sh-1866  [000] d... 201821.030000: sched_switch: prev_comm=sh prev_pid=1866 prev_prio=120 prev_state=R ==> next_comm=rngd next_pid=987 next_prio=120
54cf3c1e67SAndrew Jeffery            rngd-987   [000] d... 201821.030000: sched_switch: prev_comm=rngd prev_pid=987 prev_prio=120 prev_state=S ==> next_comm=ksoftirqd/0 next_pid=6 next_prio=120
55cf3c1e67SAndrew Jeffery     ksoftirqd/0-6     [000] d... 201821.030000: sched_switch: prev_comm=ksoftirqd/0 prev_pid=6 prev_prio=120 prev_state=S ==> next_comm=sh next_pid=1866 next_prio=120
56cf3c1e67SAndrew Jeffery              sh-1866  [000] d.h. 201821.030000: sched_waking: comm=phosphor-hwmon- pid=1188 prio=120 target_cpu=000
57cf3c1e67SAndrew Jeffery              sh-1866  [000] dnh. 201821.030000: sched_wakeup: comm=phosphor-hwmon- pid=1188 prio=120 target_cpu=000
58cf3c1e67SAndrew Jeffery              sh-1866  [000] d... 201821.030000: sched_switch: prev_comm=sh prev_pid=1866 prev_prio=120 prev_state=R ==> next_comm=phosphor-hwmon- next_pid=1188 next_prio=120
59cf3c1e67SAndrew Jeffery phosphor-hwmon--1188  [000] d... 201821.030000: sched_switch: prev_comm=phosphor-hwmon- prev_pid=1188 prev_prio=120 prev_state=D ==> next_comm=sh next_pid=1866 next_prio=120
60cf3c1e67SAndrew Jeffery...
61cf3c1e67SAndrew Jeffery<RETURN>
62cf3c1e67SAndrew Jeffery...
63cf3c1e67SAndrew Jeffery+ kill 1867
64cf3c1e67SAndrew Jeffery+ on_exit
65cf3c1e67SAndrew Jeffery+ for elem in sched
66cf3c1e67SAndrew Jeffery+ eval 'trace=\${EVENT_${elem}}'
67cf3c1e67SAndrew Jeffery++ trace='${EVENT_sched}'
68cf3c1e67SAndrew Jeffery++ eval echo '${EVENT_sched}'
69cf3c1e67SAndrew Jeffery+++ echo sched/sched_switch sched/sched_wakeup sched/sched_wakeup_new sched/sched_waking
70cf3c1e67SAndrew Jeffery+ for event in '$(eval echo ${trace})'
71cf3c1e67SAndrew Jeffery+ echo 0
72cf3c1e67SAndrew Jeffery+ for event in '$(eval echo ${trace})'
73cf3c1e67SAndrew Jeffery+ echo 0
74cf3c1e67SAndrew Jeffery+ for event in '$(eval echo ${trace})'
75cf3c1e67SAndrew Jeffery+ echo 0
76cf3c1e67SAndrew Jeffery+ for event in '$(eval echo ${trace})'
77cf3c1e67SAndrew Jeffery+ echo 0
78cf3c1e67SAndrew Jeffery+ echo 0
79cf3c1e67SAndrew Jeffery+ on_exit
80cf3c1e67SAndrew Jeffery+ rm -f obmc-fsi-trace.Rz15GL
81cf3c1e67SAndrew Jeffery```
82