linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Masami Hiramatsu <mhiramat@kernel.org>
To: Steven Rostedt <rostedt@goodmis.org>
Cc: linux-kernel@vger.kernel.org, Tom Zanussi <zanussi@kernel.org>,
	Masami Hiramatsu <mhiramat@kernel.org>
Subject: [PATCH v2 4/9] tracing/boot: Support multiple histograms for each event
Date: Fri,  6 Aug 2021 01:25:51 +0900	[thread overview]
Message-ID: <162818075140.226227.834209417930766316.stgit@devnote2> (raw)
In-Reply-To: <162818072104.226227.18088999222035270055.stgit@devnote2>

Add multiple histograms support for each event. This allows
user to set multiple histograms to an event.

ftrace.[instance.INSTANCE.]event.GROUP.EVENT.hist[.N] {
...
}

The 'N' is a digit started string and it can be omitted
for the default histogram.

For example, multiple hist triggers example in the
Documentation/trace/histogram.rst can be written as below;

ftrace.event.net.netif_receive_skb.hist {
	1 {
		keys = skbaddr.hex
		values = len
		filter = len < 0
	}
	2 {
		keys = skbaddr.hex
		values = len
		filter = len > 4096
	}
	3 {
		keys = skbaddr.hex
		values = len
		filter = len == 256
	}
	4 {
		keys = skbaddr.hex
		values = len
	}
	5 {
		keys = len
		values = common_preempt_count
	}
}

Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
---
 0 files changed

diff --git a/kernel/trace/trace_boot.c b/kernel/trace/trace_boot.c
index 0db0775d37af..1f4b80f6fcb6 100644
--- a/kernel/trace/trace_boot.c
+++ b/kernel/trace/trace_boot.c
@@ -303,7 +303,7 @@ trace_boot_hist_add_handlers(struct xbc_node *hnode, char **bufp,
 /*
  * Histogram boottime tracing syntax.
  *
- * ftrace.[instance.INSTANCE.]event.GROUP.EVENT.hist {
+ * ftrace.[instance.INSTANCE.]event.GROUP.EVENT.hist[.N] {
  *	keys = <KEY>[,...]
  *	values = <VAL>[,...]
  *	sort = <SORT-KEY>[,...]
@@ -392,6 +392,32 @@ trace_boot_compose_hist_cmd(struct xbc_node *hnode, char *buf, size_t size)
 
 	return 0;
 }
+
+static void __init
+trace_boot_init_histograms(struct trace_event_file *file,
+			   struct xbc_node *hnode, char *buf, size_t size)
+{
+	struct xbc_node *node;
+	const char *p;
+
+	xbc_node_for_each_subkey(hnode, node) {
+		p = xbc_node_get_data(node);
+		if (!isdigit(p[0]))
+			continue;
+		/* All digit started node should be instances. */
+		if (trace_boot_compose_hist_cmd(node, buf, size) == 0) {
+			if (trigger_process_regex(file, buf) < 0)
+				pr_err("Failed to apply hist trigger: %s\n", buf);
+		}
+	}
+
+	if (xbc_node_find_child(hnode, "keys")) {
+		if (trace_boot_compose_hist_cmd(hnode, buf, size) == 0)
+			if (trigger_process_regex(file, buf) < 0)
+				pr_err("Failed to apply hist trigger: %s\n", buf);
+	}
+
+}
 #endif
 
 static void __init
@@ -435,11 +461,8 @@ trace_boot_init_one_event(struct trace_array *tr, struct xbc_node *gnode,
 			pr_err("Failed to apply an action: %s\n", buf);
 	}
 	anode = xbc_node_find_child(enode, "hist");
-	if (anode &&
-	    trace_boot_compose_hist_cmd(anode, buf, ARRAY_SIZE(buf)) == 0) {
-		if (trigger_process_regex(file, buf) < 0)
-			pr_err("Failed to apply hist trigger: %s\n", buf);
-	}
+	if (anode)
+		trace_boot_init_histograms(file, anode, buf, ARRAY_SIZE(buf));
 #endif
 
 	if (xbc_node_find_value(enode, "enable", NULL)) {


  parent reply	other threads:[~2021-08-05 16:25 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-08-05 16:25 [PATCH v2 0/9] tracing/boot: Add histogram syntax support in boot-time tracing Masami Hiramatsu
2021-08-05 16:25 ` [PATCH v2 1/9] tracing/boot: Fix a hist trigger dependency for boot time tracing Masami Hiramatsu
2021-08-07  1:47   ` Steven Rostedt
2021-08-08 14:43     ` Masami Hiramatsu
2021-08-05 16:25 ` [PATCH v2 2/9] tracing/boot: Add per-event histogram action options Masami Hiramatsu
2021-08-05 16:25 ` [PATCH v2 3/9] tracing/boot: Support multiple handlers for per-event histogram Masami Hiramatsu
2021-08-05 16:25 ` Masami Hiramatsu [this message]
2021-08-05 16:25 ` [PATCH v2 5/9] tracing/boot: Show correct histogram error command Masami Hiramatsu
2021-08-06  2:58   ` kernel test robot
2021-08-06 14:00     ` Masami Hiramatsu
2021-08-06 18:32       ` Steven Rostedt
2021-08-05 16:26 ` [PATCH v2 6/9] Documentation: tracing: Add histogram syntax to boot-time tracing Masami Hiramatsu
2021-08-05 16:26 ` [PATCH v2 7/9] tools/bootconfig: Support per-group/all event enabling option Masami Hiramatsu
2021-08-05 16:26 ` [PATCH v2 8/9] tools/bootconfig: Add histogram syntax support to bconf2ftrace.sh Masami Hiramatsu
2021-08-05 16:26 ` [PATCH v2 9/9] tools/bootconfig: Use per-group/all enable option in ftrace2bconf script Masami Hiramatsu

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=162818075140.226227.834209417930766316.stgit@devnote2 \
    --to=mhiramat@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=rostedt@goodmis.org \
    --cc=zanussi@kernel.org \
    /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;
as well as URLs for NNTP newsgroup(s).