Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1305277
| From | tip-bot for Namhyung Kim <tipbot@zytor.com> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | [tip:perf/core] perf tools: Add 'trace_fields' dynamic sort key |
| Date | 2016-01-09 17:30 +0100 |
| Message-ID | <qP4yV-83p-55@gated-at.bofh.it> (permalink) |
| References | <qIyBI-6Kl-35@gated-at.bofh.it> <qNxvk-Wb-9@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
Commit-ID: 2e422fd1e4b0a1c0ca11d360be2147c87911dd1a
Gitweb: http://git.kernel.org/tip/2e422fd1e4b0a1c0ca11d360be2147c87911dd1a
Author: Namhyung Kim <namhyung@kernel.org>
AuthorDate: Wed, 23 Dec 2015 02:07:09 +0900
Committer: Arnaldo Carvalho de Melo <acme@redhat.com>
CommitDate: Wed, 6 Jan 2016 20:11:13 -0300
perf tools: Add 'trace_fields' dynamic sort key
The 'trace_fields' sort key is similar as 'trace' sort key, but it shows
each fields separately. Each event will get different columns as their
fields.
$ perf report -s trace_fields --stdio
# To display the perf.data header info, please use --header/--header-only options.
#
#
# Total Lost Samples: 0
#
# Samples: 20K of event 'kmem:kmalloc'
# Event count (approx.): 20533
#
# Overhead Command call_site ptr bytes_req bytes_alloc gfp_flags
# ........ ....... .................. .................. ......... ........... ...................
#
99.89% perf ffffffffa01d4396 0xffff8803ffb79720 96 96 GFP_NOFS|GFP_ZERO
0.06% sleep ffffffff8114e1cd 0xffff8803d228a000 4096 4096 GFP_KERNEL
0.03% perf ffffffff811d6ae6 0xffff8803f7678f00 240 256 GFP_KERNEL|GFP_ZERO
0.00% perf ffffffff812263c1 0xffff880406172380 128 128 GFP_KERNEL
0.00% perf ffffffff812264b9 0xffff8803ffac1600 504 512 GFP_KERNEL
0.00% perf ffffffff81226634 0xffff880401dc5280 28 32 GFP_KERNEL
0.00% sleep ffffffff81226da9 0xffff8803ffac3a00 392 512 GFP_KERNEL
# Samples: 20K of event 'kmem:kfree'
# Event count (approx.): 20597
#
# Overhead call_site ptr
# ........ .................. ..................
#
99.58% ffffffffa01d85ad 0xffff8803ffb79720
0.07% ffffffff81443f5c 0xffff8803f7669400
0.02% ffffffff811d5753 0xffff8803f7678f00
0.01% ffffffff81443f5c 0xffff8803f766be00
0.01% ffffffff8114e359 0xffff8803d228a000
0.01% ffffffff81443f5c 0xffff8800d156dc00
0.01% ffffffff81443f5c 0xffff8803f7669400
0.01% ffffffff8114e359 0xffff8803d228a000
0.01% ffffffff8114e359 0xffff8803d228a000
0.01% ffffffff8114e359 0xffff8803d228a000
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Acked-by: Jiri Olsa <jolsa@kernel.org>
Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Andi Kleen <andi@firstfloor.org>
Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: Wang Nan <wangnan0@huawei.com>
Link: http://lkml.kernel.org/r/1450804030-29193-13-git-send-email-namhyung@kernel.org
[ Combined with "perf tools: Fix segfault when using -s trace_fields" ]
Link: http://lkml.kernel.org/r/1451991518-25673-1-git-send-email-namhyung@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/util/sort.c | 47 ++++++++++++++++++++++++++++++++++++++---------
1 file changed, 38 insertions(+), 9 deletions(-)
diff --git a/tools/perf/util/sort.c b/tools/perf/util/sort.c
index fd56223..79aa71d 100644
--- a/tools/perf/util/sort.c
+++ b/tools/perf/util/sort.c
@@ -1932,6 +1932,38 @@ static int __dynamic_dimension__add(struct perf_evsel *evsel,
return 0;
}
+static int add_evsel_fields(struct perf_evsel *evsel, bool raw_trace)
+{
+ int ret;
+ struct format_field *field;
+
+ field = evsel->tp_format->format.fields;
+ while (field) {
+ ret = __dynamic_dimension__add(evsel, field, raw_trace);
+ if (ret < 0)
+ return ret;
+
+ field = field->next;
+ }
+ return 0;
+}
+
+static int add_all_dynamic_fields(struct perf_evlist *evlist, bool raw_trace)
+{
+ int ret;
+ struct perf_evsel *evsel;
+
+ evlist__for_each(evlist, evsel) {
+ if (evsel->attr.type != PERF_TYPE_TRACEPOINT)
+ continue;
+
+ ret = add_evsel_fields(evsel, raw_trace);
+ if (ret < 0)
+ return ret;
+ }
+ return 0;
+}
+
static int add_dynamic_entry(struct perf_evlist *evlist, const char *tok)
{
char *str, *event_name, *field_name, *opt_name;
@@ -1961,6 +1993,11 @@ static int add_dynamic_entry(struct perf_evlist *evlist, const char *tok)
raw_trace = true;
}
+ if (!strcmp(field_name, "trace_fields")) {
+ ret = add_all_dynamic_fields(evlist, raw_trace);
+ goto out;
+ }
+
evsel = find_evsel(evlist, event_name);
if (evsel == NULL) {
pr_debug("Cannot find event: %s\n", event_name);
@@ -1975,15 +2012,7 @@ static int add_dynamic_entry(struct perf_evlist *evlist, const char *tok)
}
if (!strcmp(field_name, "*")) {
- field = evsel->tp_format->format.fields;
-
- while (field) {
- ret = __dynamic_dimension__add(evsel, field, raw_trace);
- if (ret < 0)
- goto out;
-
- field = field->next;
- }
+ ret = add_evsel_fields(evsel, raw_trace);
} else {
field = pevent_find_any_field(evsel->tp_format, field_name);
if (field == NULL) {
Back to linux.kernel | Previous | Next — Previous in thread | Find similar | Unroll thread
[PATCH v2 1/5] perf tools: Fix segfault when using -s trace_fields Namhyung Kim <namhyung@kernel.org> - 2016-01-05 12:00 +0100
[PATCH v2 3/5] perf tools: Add document for dynamic sort keys Namhyung Kim <namhyung@kernel.org> - 2016-01-05 12:00 +0100
[tip:perf/core] perf report: Add documentation for dynamic sort keys tip-bot for Namhyung Kim <tipbot@zytor.com> - 2016-01-09 17:30 +0100
[PATCH v2 2/5] perf tools: Add all matching dynamic sort keys for field name Namhyung Kim <namhyung@kernel.org> - 2016-01-05 12:00 +0100
Re: [PATCH v2 2/5] perf tools: Add all matching dynamic sort keys for field name Jiri Olsa <jolsa@redhat.com> - 2016-01-05 15:30 +0100
[tip:perf/core] perf tools: Add all matching dynamic sort keys for field name tip-bot for Namhyung Kim <tipbot@zytor.com> - 2016-01-09 17:40 +0100
[PATCH v2 4/5] perf tools: Support dynamic sort keys for -F/--fields Namhyung Kim <namhyung@kernel.org> - 2016-01-05 12:10 +0100
Re: [PATCH v2 4/5] perf tools: Support dynamic sort keys for -F/--fields Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-01-05 23:20 +0100
Re: [PATCH v2 4/5] perf tools: Support dynamic sort keys for -F/--fields Namhyung Kim <namhyung@kernel.org> - 2016-01-06 01:00 +0100
[PATCH v2 5/5] perf evlist: Add -T/--trace option to show trace fields Namhyung Kim <namhyung@kernel.org> - 2016-01-05 12:10 +0100
Re: [PATCH v2 5/5] perf evlist: Add -T/--trace option to show trace fields Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-01-05 23:30 +0100
Re: [PATCH v2 5/5] perf evlist: Add -T/--trace option to show trace fields Namhyung Kim <namhyung@kernel.org> - 2016-01-06 01:10 +0100
Re: [PATCH v2 5/5] perf evlist: Add -T/--trace option to show trace fields Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-01-06 03:00 +0100
Re: [PATCH v2 1/5] perf tools: Fix segfault when using -s trace_fields Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-01-05 23:00 +0100
Re: [PATCH v2 1/5] perf tools: Fix segfault when using -s trace_fields Namhyung Kim <namhyung@kernel.org> - 2016-01-06 00:40 +0100
[tip:perf/core] perf tools: Add 'trace_fields' dynamic sort key tip-bot for Namhyung Kim <tipbot@zytor.com> - 2016-01-09 17:30 +0100
csiph-web