[PATCH v2 00/10] tracing/boot: Add histogram syntax support in boot-time tracing

From: Masami Hiramatsu
Date: Mon Aug 09 2021 - 11:47:55 EST


Hi,

Here is the 3rd version of boot-time tracing to add histogram
syntax extension with a bugfix related hist-trigger.

In this version, I updated the first bugfix to use IS_ENABLED()
and show error if CONFIG_HIST_TRIGGERS=n ([1/10]), allow the spaces
in the variable expressions ([2/10]), and update ktest bootconfig
testcase ([10/10]).


'Histogram' options
-------------------
Currently, the boot-time tracing only supports per-event actions
for setting trigger actions. This is enough for short actions
like 'traceon', 'traceoff', 'snapshot' etc. However, it is not good
for the 'hist' trigger action because it is usually too long to write
it in a single string especially if it has an 'onmatch' action.

Here is the new syntax.

ftrace[.instance.INSTANCE].event.GROUP.EVENT.hist[.N] {
keys = <KEY>[,...]
values = <VAL>[,...]
sort = <SORT-KEY>[,...]
size = <ENTRIES>
name = <HISTNAME>
var { <VAR> = <EXPR> ... }
pause|continue|clear
onmax|onchange[.M] { var = <VAR>, <ACTION> [= <PARAM>] }
onmatch[.M] { event = <EVENT>, <ACTION> [= <PARAM>] }
filter = <FILTER>
}

Where <ACTION> is one of below;

trace = <EVENT>, <ARG1>[, ...]
save = <ARG1>[, ...]
snapshot

And "N" and "M" are digit started strings for multiple histograms
and actions.

For example,

initcall.initcall_finish.actions =
"hist:keys=func:lat=common_timestamp.usecs-$ts0:onmatch(initcall.initcall_start).trace(initcall_latency,func,$lat)"

This can be written as below;

initcall.initcall_finish.hist {
keys = func
var.lat = common_timestamp.usecs-$ts0
onmatch {
event = initcall.initcall_start
trace = initcall_latency, func, $lat
}
}

Also, you can add comments for each options.


Thank you,

---

Masami Hiramatsu (10):
tracing/boot: Fix a hist trigger dependency for boot time tracing
tracing/boot: Add per-event histogram action options
tracing/boot: Support multiple handlers for per-event histogram
tracing/boot: Support multiple histograms for each event
tracing/boot: Show correct histogram error command
Documentation: tracing: Add histogram syntax to boot-time tracing
tools/bootconfig: Support per-group/all event enabling option
tools/bootconfig: Add histogram syntax support to bconf2ftrace.sh
tools/bootconfig: Use per-group/all enable option in ftrace2bconf script
bootconfig/tracing/ktest: Update ktest example for boot-time tracing


Documentation/trace/boottime-trace.rst | 85 +++++-
kernel/trace/trace_boot.c | 301 ++++++++++++++++++++
tools/bootconfig/scripts/bconf2ftrace.sh | 97 ++++++
tools/bootconfig/scripts/ftrace2bconf.sh | 24 +-
tools/bootconfig/scripts/xbc.sh | 4
.../ktest/examples/bootconfigs/boottrace.bconf | 20 +
.../ktest/examples/bootconfigs/verify-boottrace.sh | 2
7 files changed, 508 insertions(+), 25 deletions(-)

--
Masami Hiramatsu (Linaro) <mhiramat@xxxxxxxxxx>