Messages in this thread | | | From | Masami Hiramatsu <> | Subject | [PATCH v2 0/9] tracing/boot: Add histogram syntax support in boot-time tracing | Date | Fri, 6 Aug 2021 01:25:21 +0900 |
| |
Hi,
Here is the 2nd version of boot-time tracing to add histogram syntax extension with a bugfix related hist-trigger.
In this version, I added multi-histograms and multi-hist-actions support, and update bconf2ftrace.sh to support it. But the ftrace2bconf.sh is still uses per-event "actions" option because this "hist" syntax is for programming histogram on the bootconfig from scratch. This series also includes per-group/all event enable option support in bconf2ftrace.sh and ftrce2bconf.sh.
Other changes in v2: [2/9]: - Cleanup code to add ':' as a prefix for each element instead of fixup the last ':'. - Fix syntax typo for handler actions. - Make pause|continue|clear mutual exclusive. - Add __printf() attribute to the append_printf().
'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.
TODO ==== - Need to expand ktest testcase for checking this syntax.
Thank you,
---
Masami Hiramatsu (9): 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
tools/bootconfig/scripts/bconf2ftrace.sh | 97 ++++++++++++++++++++++++++++++ tools/bootconfig/scripts/ftrace2bconf.sh | 24 ++++++- tools/bootconfig/scripts/xbc.sh | 4 + 3 files changed, 117 insertions(+), 8 deletions(-)
-- Masami Hiramatsu (Linaro) <mhiramat@kernel.org>
| |