Merge tag 'trace-v5.1' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace
Pull tracing updates from Steven Rostedt: "The biggest change for this release is in the histogram code: - Add "onchange(var)" histogram handler that executes a action when $var changes. - Add new "snapshot()" action for histogram handlers, that causes a snapshot of the ring buffer when triggered. ie. onchange(var).snapshot() will trigger a snapshot if var changes. - Add alternative for "trace()" action. Currently, to trigger a synthetic event, the name of that event is used as the handler name, which is inconsistent with the other actions. onchange(var).synthetic(param) where it can now be onchange(var).trace(synthetic, param). The older method will still be allowed, as long as the synthetic events do not overlap with other handler names. - The histogram documentation at testcases were updated for the new changes. Outside of the histogram code, we have: - Added a quicker way to enable set_ftrace_filter files, that will make it much quicker to bisect tracing a function that shouldn't be traced and crashes the kernel. (You can echo in numbers to set_ftrace_filter, and it will select the corresponding function that is in available_filter_functions). - Some better displaying of the tracing data (and more information was added). The rest are small fixes and more clean ups to the code" * tag 'trace-v5.1' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace: (37 commits) tracing: Use strncpy instead of memcpy when copying comm in trace.c tracing: Use strncpy instead of memcpy when copying comm for hist triggers tracing: Use strncpy instead of memcpy for string keys in hist triggers tracing: Use str_has_prefix() in synth_event_create() x86/ftrace: Fix warning and considate ftrace_jmp_replace() and ftrace_call_replace() tracing/perf: Use strndup_user() instead of buggy open-coded version doc: trace: Fix documentation for uprobe_profile tracing: Fix spelling mistake: "analagous" -> "analogous" tracing: Comment why cond_snapshot is checked outside of max_lock protection tracing: Add hist trigger action 'expected fail' test case tracing: Add alternative synthetic event trace action test case tracing: Add hist trigger onchange() handler test case tracing: Add hist trigger snapshot() action test case tracing: Add SPDX license GPL-2.0 license identifier to inter-event testcases tracing: Add alternative synthetic event trace action syntax tracing: Add hist trigger onchange() handler Documentation tracing: Add hist trigger onchange() handler tracing: Add hist trigger snapshot() action Documentation tracing: Add hist trigger snapshot() action tracing: Add conditional snapshot ...
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
#!/bin/sh
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
# description: event trigger - test inter-event histogram trigger expected fail actions
|
||||
|
||||
fail() { #msg
|
||||
echo $1
|
||||
exit_fail
|
||||
}
|
||||
|
||||
if [ ! -f set_event ]; then
|
||||
echo "event tracing is not supported"
|
||||
exit_unsupported
|
||||
fi
|
||||
|
||||
if [ ! -f snapshot ]; then
|
||||
echo "snapshot is not supported"
|
||||
exit_unsupported
|
||||
fi
|
||||
|
||||
grep -q "snapshot()" README || exit_unsupported # version issue
|
||||
|
||||
echo "Test expected snapshot action failure"
|
||||
|
||||
echo 'hist:keys=comm:onmatch(sched.sched_wakeup).snapshot()' >> /sys/kernel/debug/tracing/events/sched/sched_waking/trigger && exit_fail
|
||||
|
||||
echo "Test expected save action failure"
|
||||
|
||||
echo 'hist:keys=comm:onmatch(sched.sched_wakeup).save(comm,prio)' >> /sys/kernel/debug/tracing/events/sched/sched_waking/trigger && exit_fail
|
||||
|
||||
exit_xfail
|
@@ -1,4 +1,5 @@
|
||||
#!/bin/sh
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
# description: event trigger - test extended error support
|
||||
|
||||
|
||||
|
@@ -1,4 +1,5 @@
|
||||
#!/bin/sh
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
# description: event trigger - test field variable support
|
||||
|
||||
fail() { #msg
|
||||
|
@@ -1,4 +1,5 @@
|
||||
#!/bin/sh
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
# description: event trigger - test inter-event combined histogram trigger
|
||||
|
||||
fail() { #msg
|
||||
|
@@ -1,4 +1,5 @@
|
||||
#!/bin/sh
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
# description: event trigger - test multiple actions on hist trigger
|
||||
|
||||
fail() { #msg
|
||||
|
@@ -0,0 +1,28 @@
|
||||
#!/bin/sh
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
# description: event trigger - test inter-event histogram trigger onchange action
|
||||
|
||||
fail() { #msg
|
||||
echo $1
|
||||
exit_fail
|
||||
}
|
||||
|
||||
if [ ! -f set_event ]; then
|
||||
echo "event tracing is not supported"
|
||||
exit_unsupported
|
||||
fi
|
||||
|
||||
grep -q "onchange(var)" README || exit_unsupported # version issue
|
||||
|
||||
echo "Test onchange action"
|
||||
|
||||
echo 'hist:keys=comm:newprio=prio:onchange($newprio).save(comm,prio) if comm=="ping"' >> /sys/kernel/debug/tracing/events/sched/sched_waking/trigger
|
||||
|
||||
ping $LOCALHOST -c 3
|
||||
nice -n 1 ping $LOCALHOST -c 3
|
||||
|
||||
if ! grep -q "changed:" events/sched/sched_waking/hist; then
|
||||
fail "Failed to create onchange action inter-event histogram"
|
||||
fi
|
||||
|
||||
exit 0
|
@@ -1,4 +1,5 @@
|
||||
#!/bin/sh
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
# description: event trigger - test inter-event histogram trigger onmatch action
|
||||
|
||||
fail() { #msg
|
||||
|
@@ -1,4 +1,5 @@
|
||||
#!/bin/sh
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
# description: event trigger - test inter-event histogram trigger onmatch-onmax action
|
||||
|
||||
fail() { #msg
|
||||
|
@@ -1,4 +1,5 @@
|
||||
#!/bin/sh
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
# description: event trigger - test inter-event histogram trigger onmax action
|
||||
|
||||
fail() { #msg
|
||||
|
@@ -0,0 +1,43 @@
|
||||
#!/bin/sh
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
# description: event trigger - test inter-event histogram trigger snapshot action
|
||||
|
||||
fail() { #msg
|
||||
echo $1
|
||||
exit_fail
|
||||
}
|
||||
|
||||
if [ ! -f set_event ]; then
|
||||
echo "event tracing is not supported"
|
||||
exit_unsupported
|
||||
fi
|
||||
|
||||
if [ ! -f snapshot ]; then
|
||||
echo "snapshot is not supported"
|
||||
exit_unsupported
|
||||
fi
|
||||
|
||||
grep -q "onchange(var)" README || exit_unsupported # version issue
|
||||
|
||||
grep -q "snapshot()" README || exit_unsupported # version issue
|
||||
|
||||
echo "Test snapshot action"
|
||||
|
||||
echo 1 > /sys/kernel/debug/tracing/events/sched/enable
|
||||
|
||||
echo 'hist:keys=comm:newprio=prio:onchange($newprio).save(comm,prio):onchange($newprio).snapshot() if comm=="ping"' >> /sys/kernel/debug/tracing/events/sched/sched_waking/trigger
|
||||
|
||||
ping $LOCALHOST -c 3
|
||||
nice -n 1 ping $LOCALHOST -c 3
|
||||
|
||||
echo 0 > tracing_on
|
||||
|
||||
if ! grep -q "changed:" events/sched/sched_waking/hist; then
|
||||
fail "Failed to create onchange action inter-event histogram"
|
||||
fi
|
||||
|
||||
if ! grep -q "comm=ping" snapshot; then
|
||||
fail "Failed to create snapshot action inter-event histogram"
|
||||
fi
|
||||
|
||||
exit 0
|
@@ -1,4 +1,5 @@
|
||||
#!/bin/sh
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
# description: event trigger - test synthetic event create remove
|
||||
|
||||
fail() { #msg
|
||||
|
@@ -0,0 +1,42 @@
|
||||
#!/bin/sh
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
# description: event trigger - test inter-event histogram trigger trace action
|
||||
|
||||
fail() { #msg
|
||||
echo $1
|
||||
exit_fail
|
||||
}
|
||||
|
||||
if [ ! -f set_event ]; then
|
||||
echo "event tracing is not supported"
|
||||
exit_unsupported
|
||||
fi
|
||||
|
||||
if [ ! -f synthetic_events ]; then
|
||||
echo "synthetic event is not supported"
|
||||
exit_unsupported
|
||||
fi
|
||||
|
||||
grep -q "trace(<synthetic_event>" README || exit_unsupported # version issue
|
||||
|
||||
echo "Test create synthetic event"
|
||||
|
||||
echo 'wakeup_latency u64 lat pid_t pid char comm[16]' > synthetic_events
|
||||
if [ ! -d events/synthetic/wakeup_latency ]; then
|
||||
fail "Failed to create wakeup_latency synthetic event"
|
||||
fi
|
||||
|
||||
echo "Test create histogram for synthetic event using trace action"
|
||||
echo "Test histogram variables,simple expression support and trace action"
|
||||
|
||||
echo 'hist:keys=pid:ts0=common_timestamp.usecs if comm=="ping"' > events/sched/sched_wakeup/trigger
|
||||
echo 'hist:keys=next_pid:wakeup_lat=common_timestamp.usecs-$ts0:onmatch(sched.sched_wakeup).trace(wakeup_latency,$wakeup_lat,next_pid,next_comm) if next_comm=="ping"' > events/sched/sched_switch/trigger
|
||||
echo 'hist:keys=comm,pid,lat:wakeup_lat=lat:sort=lat' > events/synthetic/wakeup_latency/trigger
|
||||
|
||||
ping $LOCALHOST -c 5
|
||||
|
||||
if ! grep -q "ping" events/synthetic/wakeup_latency/hist; then
|
||||
fail "Failed to create trace action inter-event histogram"
|
||||
fi
|
||||
|
||||
exit 0
|
Reference in New Issue
Block a user