From: Namhyung Kim <namhyung@kernel.org>
To: Tom Zanussi <tom.zanussi@linux.intel.com>
Cc: rostedt@goodmis.org, daniel.wagner@bmw-carit.de,
masami.hiramatsu.pt@hitachi.com, josh@joshtriplett.org,
andi@firstfloor.org, mathieu.desnoyers@efficios.com,
peterz@infradead.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v11 24/28] tracing: Add support for multiple hist triggers per event
Date: Tue, 3 Nov 2015 09:34:37 +0900 [thread overview]
Message-ID: <20151103003437.GC11498@danjae.kornet> (raw)
In-Reply-To: <34f2d91cadfd4c7450d612172b4bbf5211a5a8c0.1445530672.git.tom.zanussi@linux.intel.com>
On Thu, Oct 22, 2015 at 01:14:28PM -0500, Tom Zanussi wrote:
> Allow users to define any number of hist triggers per trace event.
> Any number of hist triggers may be added for a given event, which may
> differ by key, value, or filter.
>
> Reading the event's 'hist' file will display the output of all the
> hist triggers defined on an event concatenated in the order they were
> defined.
>
> Signed-off-by: Tom Zanussi <tom.zanussi@linux.intel.com>
> Tested-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
> ---
> Documentation/trace/events.txt | 151 +++++++++++++++++++++++++++++++++++++--
> kernel/trace/trace.c | 8 ++-
> kernel/trace/trace_events_hist.c | 138 ++++++++++++++++++++++++++---------
> 3 files changed, 256 insertions(+), 41 deletions(-)
>
> diff --git a/Documentation/trace/events.txt b/Documentation/trace/events.txt
> index b3aa47e..6c64cb7 100644
> --- a/Documentation/trace/events.txt
> +++ b/Documentation/trace/events.txt
> @@ -532,12 +532,14 @@ The following commands are supported:
>
> 'hist' triggers add a 'hist' file to each event's subdirectory.
> Reading the 'hist' file for the event will dump the hash table in
> - its entirety to stdout. Each printed hash table entry is a simple
> - list of the keys and values comprising the entry; keys are printed
> - first and are delineated by curly braces, and are followed by the
> - set of value fields for the entry. By default, numeric fields are
> - displayed as base-10 integers. This can be modified by appending
> - any of the following modifiers to the field name:
> + its entirety to stdout. If there are multiple hist triggers
> + attached to an event, there will be a table for each trigger in the
> + output. Each printed hash table entry is a simple list of the keys
> + and values comprising the entry; keys are printed first and are
> + delineated by curly braces, and are followed by the set of value
> + fields for the entry. By default, numeric fields are displayed as
> + base-10 integers. This can be modified by appending any of the
> + following modifiers to the field name:
>
> .hex display a number as a hex value
> .sym display an address as a symbol
> @@ -1629,3 +1631,140 @@ The following commands are supported:
> .
> .
> .
> +
> + The following example demonstrates how multiple hist triggers can be
> + attached to a given event. This capability can be useful for
> + creating a set of different summaries derived from the same set of
> + events, or for comparing the effects of different filters, among
> + other things.
> +
> + # echo 'hist:keys=skbaddr.hex:vals=len if len < 0' > \
> + /sys/kernel/debug/tracing/events/net/netif_receive_skb/trigger
> + # echo 'hist:keys=skbaddr.hex:vals=len if len > 4096' > \
> + /sys/kernel/debug/tracing/events/net/netif_receive_skb/trigger
> + # echo 'hist:keys=skbaddr.hex:vals=len if len == 256' > \
> + /sys/kernel/debug/tracing/events/net/netif_receive_skb/trigger
> + # echo 'hist:keys=skbaddr.hex:vals=len' > \
> + /sys/kernel/debug/tracing/events/net/netif_receive_skb/trigger
> + # echo 'hist:keys=len:vals=common_preempt_count' > \
> + /sys/kernel/debug/tracing/events/net/netif_receive_skb/trigger
AFAIK other tracefs files honor the truncation flag so open for
writing would destroy other hist triggers. What do you think?
> +
> + The above set of commands create four triggers differing only in
> + their filters, along with a completely different though fairly
> + nonsensical trigger.
[SNIP]
> @@ -1289,22 +1368,18 @@ static int event_hist_trigger_func(struct event_command *cmd_ops,
>
> trigger_data->private_data = hist_data;
>
> + if (param) { /* if param is non-empty, it's supposed to be a filter */
> + ret = cmd_ops->set_filter(param, trigger_data, file);
Maybe you want to check ->set_filter being NULL first. :)
Thanks,
Namhyung
> + if (ret < 0)
> + goto out_free;
> + }
> +
> if (glob[0] == '!') {
> cmd_ops->unreg(glob+1, trigger_ops, trigger_data, file);
> ret = 0;
> goto out_free;
> }
>
> - if (!param) /* if param is non-empty, it's supposed to be a filter */
> - goto out_reg;
> -
> - if (!cmd_ops->set_filter)
> - goto out_reg;
> -
> - ret = cmd_ops->set_filter(param, trigger_data, file);
> - if (ret < 0)
> - goto out_free;
> - out_reg:
> ret = cmd_ops->reg(glob, trigger_ops, trigger_data, file);
> /*
> * The above returns on success the # of triggers registered,
> @@ -1337,7 +1412,7 @@ static struct event_command trigger_hist_cmd = {
> .needs_rec = true,
> .func = event_hist_trigger_func,
> .reg = hist_register_trigger,
> - .unreg = unregister_trigger,
> + .unreg = hist_unregister_trigger,
> .get_trigger_ops = event_hist_get_trigger_ops,
> .set_filter = set_trigger_filter,
> };
> @@ -1364,7 +1439,6 @@ hist_enable_trigger(struct event_trigger_data *data, void *rec)
> test->paused = false;
> else
> test->paused = true;
> - break;
> }
> }
> }
> --
> 1.9.3
>
next prev parent reply other threads:[~2015-11-03 0:34 UTC|newest]
Thread overview: 55+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-10-22 18:14 [PATCH 00/28] tracing: 'hist' triggers Tom Zanussi
2015-10-22 18:14 ` [PATCH v11 01/28] tracing: Update cond flag when enabling or disabling a trigger Tom Zanussi
2015-10-22 18:14 ` [PATCH v11 02/28] tracing: Make ftrace_event_field checking functions available Tom Zanussi
2015-10-22 18:14 ` [PATCH v11 03/28] tracing: Make event trigger " Tom Zanussi
2015-10-22 18:14 ` [PATCH v11 04/28] tracing: Add event record param to trigger_ops.func() Tom Zanussi
2015-10-22 18:14 ` [PATCH v11 05/28] tracing: Add get_syscall_name() Tom Zanussi
2015-10-22 18:14 ` [PATCH v11 06/28] tracing: Add a per-event-trigger 'paused' field Tom Zanussi
2015-10-22 18:14 ` [PATCH v11 07/28] tracing: Add needs_rec flag to event triggers Tom Zanussi
2015-10-22 18:14 ` [PATCH v11 08/28] tracing: Add lock-free tracing_map Tom Zanussi
2015-10-29 8:31 ` Namhyung Kim
2015-10-29 18:35 ` Tom Zanussi
2015-11-02 7:08 ` Namhyung Kim
2015-11-04 1:47 ` Tom Zanussi
2015-11-04 2:26 ` Namhyung Kim
2015-11-04 2:56 ` Tom Zanussi
2015-10-22 18:14 ` [PATCH v11 09/28] tracing: Add 'hist' event trigger command Tom Zanussi
2015-10-29 9:11 ` Namhyung Kim
2015-10-29 18:37 ` Tom Zanussi
2015-10-22 18:14 ` [PATCH v11 10/28] tracing: Add hist trigger support for multiple values ('vals=' param) Tom Zanussi
2015-11-02 7:42 ` Namhyung Kim
2015-10-22 18:14 ` [PATCH v11 11/28] tracing: Add hist trigger support for compound keys Tom Zanussi
2015-10-22 18:14 ` [PATCH v11 12/28] tracing: Add hist trigger support for user-defined sorting ('sort=' param) Tom Zanussi
2015-11-02 8:03 ` Namhyung Kim
2015-10-22 18:14 ` [PATCH v11 13/28] tracing: Add hist trigger support for pausing and continuing a trace Tom Zanussi
2015-11-03 8:38 ` Namhyung Kim
2015-11-04 1:53 ` Tom Zanussi
2015-10-22 18:14 ` [PATCH v11 14/28] tracing: Add hist trigger support for clearing " Tom Zanussi
2015-11-03 8:43 ` Namhyung Kim
2015-10-22 18:14 ` [PATCH v11 15/28] tracing: Add hist trigger 'hex' modifier for displaying numeric fields Tom Zanussi
2015-10-22 18:14 ` [PATCH v11 16/28] tracing: Add hist trigger 'sym' and 'sym-offset' modifiers Tom Zanussi
2015-10-22 18:14 ` [PATCH v11 17/28] tracing: Add hist trigger 'execname' modifier Tom Zanussi
2015-11-02 14:10 ` Namhyung Kim
2015-11-04 2:37 ` Tom Zanussi
2015-10-22 18:14 ` [PATCH v11 18/28] tracing: Add hist trigger 'syscall' modifier Tom Zanussi
2015-10-22 18:14 ` [PATCH v11 19/28] tracing: Add hist trigger support for stacktraces as keys Tom Zanussi
2015-10-22 18:14 ` [PATCH v11 20/28] tracing: Support string type key properly Tom Zanussi
2015-10-22 18:14 ` [PATCH v11 21/28] tracing: Remove restriction on string position in hist trigger keys Tom Zanussi
2015-11-02 14:40 ` Namhyung Kim
2015-10-22 18:14 ` [PATCH v11 22/28] tracing: Add enable_hist/disable_hist triggers Tom Zanussi
2015-11-03 8:55 ` Namhyung Kim
2015-11-04 1:58 ` Tom Zanussi
2015-10-22 18:14 ` [PATCH v11 23/28] tracing: Add 'hist' trigger Documentation Tom Zanussi
2015-10-22 18:14 ` [PATCH v11 24/28] tracing: Add support for multiple hist triggers per event Tom Zanussi
2015-11-03 0:34 ` Namhyung Kim [this message]
2015-11-04 1:52 ` Tom Zanussi
2015-10-22 18:14 ` [PATCH v11 25/28] tracing: Add support for named triggers Tom Zanussi
2015-10-22 18:14 ` [PATCH v11 26/28] tracing: Add support for named hist triggers Tom Zanussi
2015-10-22 18:14 ` [PATCH v11 27/28] kselftests/ftrace : Add event trigger testcases Tom Zanussi
2015-10-22 18:14 ` [PATCH v11 28/28] kselftests/ftrace: Add hist " Tom Zanussi
2015-10-22 18:21 ` [PATCH 00/28] tracing: 'hist' triggers Steven Rostedt
2015-10-22 18:31 ` Tom Zanussi
2015-11-05 14:43 ` Namhyung Kim
2015-11-05 14:59 ` 平松雅巳 / HIRAMATU,MASAMI
2015-11-05 22:13 ` Tom Zanussi
2015-11-05 23:18 ` Namhyung Kim
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20151103003437.GC11498@danjae.kornet \
--to=namhyung@kernel.org \
--cc=andi@firstfloor.org \
--cc=daniel.wagner@bmw-carit.de \
--cc=josh@joshtriplett.org \
--cc=linux-kernel@vger.kernel.org \
--cc=masami.hiramatsu.pt@hitachi.com \
--cc=mathieu.desnoyers@efficios.com \
--cc=peterz@infradead.org \
--cc=rostedt@goodmis.org \
--cc=tom.zanussi@linux.intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox