mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Namhyung Kim <namhyung@kernel.org>
To: Arnaldo Carvalho de Melo <acme@kernel.org>
Cc: Ingo Molnar <mingo@kernel.org>,
	Peter Zijlstra <peterz@infradead.org>,
	Jiri Olsa <jolsa@kernel.org>, LKML <linux-kernel@vger.kernel.org>,
	David Ahern <dsahern@gmail.com>, Andi Kleen <andi@firstfloor.org>,
	Stephane Eranian <eranian@google.com>,
	Wang Nan <wangnan0@huawei.com>
Subject: [PATCH 4/8] perf tools: Support multiple sort keys in a hierarchy
Date: Thu,  3 Mar 2016 01:12:04 +0900	[thread overview]
Message-ID: <1456935128-31299-5-git-send-email-namhyung@kernel.org> (raw)
In-Reply-To: <1456935128-31299-1-git-send-email-namhyung@kernel.org>

This implements having multiple sort keys in a single hierarchy level.
Originally only single sort key is supported for each level, but now
using the ':' separator, user can set more than one sort key in a
level.

For example:

  $ perf report --hierarchy -s comm:dso,sym
  ...
  #       Overhead  Command / Shared Object / Symbol
  # ..............  ..........................................
  #
      48.67%        swapper          [kernel.vmlinux]
         34.42%        [k] intel_idle
          1.30%        [k] __tick_nohz_idle_enter
          1.03%        [k] cpuidle_reflect
       8.87%        firefox          libpthread-2.22.so
          6.60%        [.] __GI___libc_recvmsg
          1.18%        [.] pthread_cond_signal@@GLIBC_2.3.2
          1.09%        [.] 0x000000000000ff4b
       6.11%        Xorg             libc-2.22.so
          5.27%        [.] __memcpy_sse2_unaligned

In the above example, the command name and the shared object name are
shown on the same line but the symbol name is on the different line.
Since the first two are separated by ':', and the symbol is separated by
',' as usual.

Suggested-by: Arnaldo Carvalho de Melo <acme@kernel.org>
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
---
 tools/perf/util/sort.c | 22 ++++++++++++++++++----
 1 file changed, 18 insertions(+), 4 deletions(-)

diff --git a/tools/perf/util/sort.c b/tools/perf/util/sort.c
index 29c75f0374c4..95cee0b0d7ea 100644
--- a/tools/perf/util/sort.c
+++ b/tools/perf/util/sort.c
@@ -2307,10 +2307,22 @@ static int setup_sort_list(char *str, struct perf_evlist *evlist)
 	char *tmp, *tok;
 	int ret = 0;
 	int level = 0;
+	int next_level;
+
+	do {
+		tok = str;
+		tmp = strpbrk(str, ":, ");
+		if (tmp) {
+			if (*tmp == ':')
+				next_level = level;
+			else
+				next_level = level + 1;
+
+			*tmp = '\0';
+			str = tmp + 1;
+		}
 
-	for (tok = strtok_r(str, ", ", &tmp);
-			tok; tok = strtok_r(NULL, ", ", &tmp)) {
-		ret = sort_dimension__add(tok, evlist, level++);
+		ret = sort_dimension__add(tok, evlist, level);
 		if (ret == -EINVAL) {
 			error("Invalid --sort key: `%s'", tok);
 			break;
@@ -2318,7 +2330,9 @@ static int setup_sort_list(char *str, struct perf_evlist *evlist)
 			error("Unknown --sort key: `%s'", tok);
 			break;
 		}
-	}
+
+		level = next_level;
+	} while (tmp);
 
 	return ret;
 }
-- 
2.7.1

  parent reply	other threads:[~2016-03-02 16:13 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-03-02 16:12 [PATCHSET 0/8] perf tools: Support multiple keys in a single hierarchy level (v1) Namhyung Kim
2016-03-02 16:12 ` [PATCH 1/8] perf tools: Add level field to struct perf_hpp_fmt Namhyung Kim
2016-03-02 16:12 ` [PATCH 2/8] perf tools: Introduce perf_hpp__setup_hists_formats() Namhyung Kim
2016-03-03 13:40   ` Jiri Olsa
2016-03-03 23:52     ` Namhyung Kim
2016-03-03 13:40   ` Jiri Olsa
2016-03-03 23:53     ` Namhyung Kim
2016-03-02 16:12 ` [PATCH 3/8] perf tools: Use own hpp_list for hierarchy mode Namhyung Kim
2016-03-02 16:12 ` Namhyung Kim [this message]
2016-03-02 16:12 ` [PATCH 5/8] perf tools: Fix indent for multiple hierarchy sort key Namhyung Kim
2016-03-02 16:12 ` [PATCH 6/8] perf report: Use hierarchy hpp list on stdio Namhyung Kim
2016-03-02 16:12 ` [PATCH 7/8] perf hists browser: Use hierarchy hpp list Namhyung Kim
2016-03-02 16:12 ` [PATCH 8/8] perf report: Use hierarchy hpp list on gtk Namhyung Kim
2016-03-02 16:25 ` [PATCHSET 0/8] perf tools: Support multiple keys in a single hierarchy level (v1) Arnaldo Carvalho de Melo
2016-03-02 23:16   ` Namhyung Kim
2016-03-03 13:08     ` [RFC] " Arnaldo Carvalho de Melo
2016-03-03 23:50       ` Namhyung Kim
2016-03-04 13:32         ` Arnaldo Carvalho de Melo

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=1456935128-31299-5-git-send-email-namhyung@kernel.org \
    --to=namhyung@kernel.org \
    --cc=acme@kernel.org \
    --cc=andi@firstfloor.org \
    --cc=dsahern@gmail.com \
    --cc=eranian@google.com \
    --cc=jolsa@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=peterz@infradead.org \
    --cc=wangnan0@huawei.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

Powered by JetHome