|
|
Subscribe / Log in / New account

tracing/boot: Add histogram syntax support in boot-time tracing

From:  Masami Hiramatsu <mhiramat-AT-kernel.org>
To:  Steven Rostedt <rostedt-AT-goodmis.org>
Subject:  [PATCH v2 0/9] tracing/boot: Add histogram syntax support in boot-time tracing
Date:  Fri, 06 Aug 2021 01:25:21 +0900
Message-ID:  <162818072104.226227.18088999222035270055.stgit@devnote2>
Cc:  linux-kernel-AT-vger.kernel.org, Tom Zanussi <zanussi-AT-kernel.org>, Masami Hiramatsu <mhiramat-AT-kernel.org>
Archive-link:  Article

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>


Copyright © 2021, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds