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