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
next prev 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