* [PATCH v4 0/3] perf annotate: Support '--group' option
@ 2018-05-21 14:57 Jin Yao
2018-05-21 14:57 ` [PATCH v4 1/3] perf evlist: Create new function perf_evlist__force_leader Jin Yao
` (2 more replies)
0 siblings, 3 replies; 9+ messages in thread
From: Jin Yao @ 2018-05-21 14:57 UTC (permalink / raw)
To: acme, jolsa, peterz, mingo, alexander.shishkin
Cc: Linux-kernel, ak, kan.liang, yao.jin, Jin Yao
For non-explicit group, perf report has already supported a option
'--group' which can enable group output.
This patch-set will support perf annotate with the same '--group'.
For example,
perf record -e cycles,branches ./div
perf annotate main --stdio --group
: Disassembly of section .text:
:
: 00000000004004b0 <main>:
: main():
:
: return i;
: }
:
: int main(void)
: {
0.00 0.00 : 4004b0: push %rbx
: int i;
: int flag;
: volatile double x = 1212121212, y = 121212;
:
: s_randseed = time(0);
0.00 0.00 : 4004b1: xor %edi,%edi
: srand(s_randseed);
0.00 0.00 : 4004b3: mov $0x77359400,%ebx
:
: return i;
: }
:
v4:
---
Change function name from perf_evlist_forced_leader to
perf_evlist__force_leader
Impact:
-------
perf evlist: Create new function perf_evlist__force_leader
perf report: Use perf_evlist__force_leader to support '--group'
perf annotate: Support '--group' option
v3:
---------
Move the comment which was on setup_forced_leader() to the
new function perf_evlist_forced_leader().
Impact
------
perf evlist: Create a new function perf_evlist_forced_leader
perf report: Use perf_evlist_forced_leader to support '--group'
v2:
---------
Arnaldo points out that it should be done the way it is for
perf report --group. v2 refers to this way and the patch is
totally rewritten.
Init post:
----------
Post the patch 'perf annotate: Support multiple events without group'
Jin Yao (3):
perf evlist: Create new function perf_evlist__force_leader
perf report: Use perf_evlist__force_leader to support '--group'
perf annotate: Support '--group' option
tools/perf/builtin-annotate.c | 7 +++++++
tools/perf/builtin-report.c | 13 ++-----------
tools/perf/util/evlist.c | 15 +++++++++++++++
tools/perf/util/evlist.h | 3 +++
4 files changed, 27 insertions(+), 11 deletions(-)
--
2.7.4
^ permalink raw reply [flat|nested] 9+ messages in thread* [PATCH v4 1/3] perf evlist: Create new function perf_evlist__force_leader 2018-05-21 14:57 [PATCH v4 0/3] perf annotate: Support '--group' option Jin Yao @ 2018-05-21 14:57 ` Jin Yao 2018-05-24 5:36 ` [tip:perf/core] perf evlist: Introduce force_leader() method tip-bot for Jin Yao 2018-05-21 14:57 ` [PATCH v4 2/3] perf report: Use perf_evlist__force_leader to support '--group' Jin Yao 2018-05-21 14:57 ` [PATCH v4 3/3] perf annotate: Support '--group' option Jin Yao 2 siblings, 1 reply; 9+ messages in thread From: Jin Yao @ 2018-05-21 14:57 UTC (permalink / raw) To: acme, jolsa, peterz, mingo, alexander.shishkin Cc: Linux-kernel, ak, kan.liang, yao.jin, Jin Yao For non-explicit group, perf report supports a option '--group' which can enable group output. We also need to support perf annotate with the same '--group'. Create a new function perf_evlist__force_leader which contains common code to force setting the group leader. Signed-off-by: Jin Yao <yao.jin@linux.intel.com> --- tools/perf/util/evlist.c | 15 +++++++++++++++ tools/perf/util/evlist.h | 3 +++ 2 files changed, 18 insertions(+) diff --git a/tools/perf/util/evlist.c b/tools/perf/util/evlist.c index a59281d..e7a4b31 100644 --- a/tools/perf/util/evlist.c +++ b/tools/perf/util/evlist.c @@ -1795,3 +1795,18 @@ bool perf_evlist__exclude_kernel(struct perf_evlist *evlist) return true; } + +/* + * Events in data file are not collect in groups, but we still want + * the group display. Set the artificial group and set the leader's + * forced_leader flag to notify the display code. + */ +void perf_evlist__force_leader(struct perf_evlist *evlist) +{ + if (!evlist->nr_groups) { + struct perf_evsel *leader = perf_evlist__first(evlist); + + perf_evlist__set_leader(evlist); + leader->forced_leader = true; + } +} diff --git a/tools/perf/util/evlist.h b/tools/perf/util/evlist.h index 6c41b2f..dc66436 100644 --- a/tools/perf/util/evlist.h +++ b/tools/perf/util/evlist.h @@ -309,4 +309,7 @@ struct perf_evsel *perf_evlist__event2evsel(struct perf_evlist *evlist, union perf_event *event); bool perf_evlist__exclude_kernel(struct perf_evlist *evlist); + +void perf_evlist__force_leader(struct perf_evlist *evlist); + #endif /* __PERF_EVLIST_H */ -- 2.7.4 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* [tip:perf/core] perf evlist: Introduce force_leader() method 2018-05-21 14:57 ` [PATCH v4 1/3] perf evlist: Create new function perf_evlist__force_leader Jin Yao @ 2018-05-24 5:36 ` tip-bot for Jin Yao 0 siblings, 0 replies; 9+ messages in thread From: tip-bot for Jin Yao @ 2018-05-24 5:36 UTC (permalink / raw) To: linux-tip-commits Cc: mingo, hpa, ak, alexander.shishkin, linux-kernel, kan.liang, yao.jin, jolsa, peterz, tglx, acme Commit-ID: e2bdbe80a0b7dea9ba73582701b8a67c01e1da4f Gitweb: https://git.kernel.org/tip/e2bdbe80a0b7dea9ba73582701b8a67c01e1da4f Author: Jin Yao <yao.jin@linux.intel.com> AuthorDate: Mon, 21 May 2018 22:57:44 +0800 Committer: Arnaldo Carvalho de Melo <acme@redhat.com> CommitDate: Mon, 21 May 2018 14:40:54 -0300 perf evlist: Introduce force_leader() method For non-explicit group (e.g. those created with -e '{eventA,eventB}'), 'perf report' supports a option '--group' which can enable group output. We also need to support 'perf annotate' with the same '--group'. Create a new function perf_evlist__force_leader() which contains common code to force setting the group leader. Signed-off-by: Jin Yao <yao.jin@linux.intel.com> Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com> Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> Cc: Andi Kleen <ak@linux.intel.com> Cc: Jiri Olsa <jolsa@kernel.org> Cc: Kan Liang <kan.liang@linux.intel.com> Cc: Peter Zijlstra <peterz@infradead.org> Link: http://lkml.kernel.org/r/1526914666-31839-2-git-send-email-yao.jin@linux.intel.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> --- tools/perf/util/evlist.c | 15 +++++++++++++++ tools/perf/util/evlist.h | 3 +++ 2 files changed, 18 insertions(+) diff --git a/tools/perf/util/evlist.c b/tools/perf/util/evlist.c index a59281d64368..e7a4b31a84fb 100644 --- a/tools/perf/util/evlist.c +++ b/tools/perf/util/evlist.c @@ -1795,3 +1795,18 @@ bool perf_evlist__exclude_kernel(struct perf_evlist *evlist) return true; } + +/* + * Events in data file are not collect in groups, but we still want + * the group display. Set the artificial group and set the leader's + * forced_leader flag to notify the display code. + */ +void perf_evlist__force_leader(struct perf_evlist *evlist) +{ + if (!evlist->nr_groups) { + struct perf_evsel *leader = perf_evlist__first(evlist); + + perf_evlist__set_leader(evlist); + leader->forced_leader = true; + } +} diff --git a/tools/perf/util/evlist.h b/tools/perf/util/evlist.h index 6c41b2f78713..dc66436add98 100644 --- a/tools/perf/util/evlist.h +++ b/tools/perf/util/evlist.h @@ -309,4 +309,7 @@ struct perf_evsel *perf_evlist__event2evsel(struct perf_evlist *evlist, union perf_event *event); bool perf_evlist__exclude_kernel(struct perf_evlist *evlist); + +void perf_evlist__force_leader(struct perf_evlist *evlist); + #endif /* __PERF_EVLIST_H */ ^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH v4 2/3] perf report: Use perf_evlist__force_leader to support '--group' 2018-05-21 14:57 [PATCH v4 0/3] perf annotate: Support '--group' option Jin Yao 2018-05-21 14:57 ` [PATCH v4 1/3] perf evlist: Create new function perf_evlist__force_leader Jin Yao @ 2018-05-21 14:57 ` Jin Yao 2018-05-24 5:37 ` [tip:perf/core] " tip-bot for Jin Yao 2018-05-21 14:57 ` [PATCH v4 3/3] perf annotate: Support '--group' option Jin Yao 2 siblings, 1 reply; 9+ messages in thread From: Jin Yao @ 2018-05-21 14:57 UTC (permalink / raw) To: acme, jolsa, peterz, mingo, alexander.shishkin Cc: Linux-kernel, ak, kan.liang, yao.jin, Jin Yao Since we have created a new function perf_evlist__force_leader, so now remove the old code and use perf_evlist__force_leader instead. Signed-off-by: Jin Yao <yao.jin@linux.intel.com> --- tools/perf/builtin-report.c | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/tools/perf/builtin-report.c b/tools/perf/builtin-report.c index 4c931af..ad978e3 100644 --- a/tools/perf/builtin-report.c +++ b/tools/perf/builtin-report.c @@ -194,20 +194,11 @@ static int hist_iter__branch_callback(struct hist_entry_iter *iter, return err; } -/* - * Events in data file are not collect in groups, but we still want - * the group display. Set the artificial group and set the leader's - * forced_leader flag to notify the display code. - */ static void setup_forced_leader(struct report *report, struct perf_evlist *evlist) { - if (report->group_set && !evlist->nr_groups) { - struct perf_evsel *leader = perf_evlist__first(evlist); - - perf_evlist__set_leader(evlist); - leader->forced_leader = true; - } + if (report->group_set) + perf_evlist__force_leader(evlist); } static int process_feature_event(struct perf_tool *tool, -- 2.7.4 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* [tip:perf/core] perf report: Use perf_evlist__force_leader to support '--group' 2018-05-21 14:57 ` [PATCH v4 2/3] perf report: Use perf_evlist__force_leader to support '--group' Jin Yao @ 2018-05-24 5:37 ` tip-bot for Jin Yao 0 siblings, 0 replies; 9+ messages in thread From: tip-bot for Jin Yao @ 2018-05-24 5:37 UTC (permalink / raw) To: linux-tip-commits Cc: jolsa, mingo, tglx, linux-kernel, hpa, peterz, kan.liang, yao.jin, acme, ak, alexander.shishkin Commit-ID: a26bb0ba706aef4f42cc9377c0d4e849378574a4 Gitweb: https://git.kernel.org/tip/a26bb0ba706aef4f42cc9377c0d4e849378574a4 Author: Jin Yao <yao.jin@linux.intel.com> AuthorDate: Mon, 21 May 2018 22:57:45 +0800 Committer: Arnaldo Carvalho de Melo <acme@redhat.com> CommitDate: Mon, 21 May 2018 14:41:01 -0300 perf report: Use perf_evlist__force_leader to support '--group' Since we created a new function perf_evlist__force_leader(), remove the old code and use that new evlist method. Signed-off-by: Jin Yao <yao.jin@linux.intel.com> Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com> Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> Cc: Andi Kleen <ak@linux.intel.com> Cc: Jiri Olsa <jolsa@kernel.org> Cc: Kan Liang <kan.liang@linux.intel.com> Cc: Peter Zijlstra <peterz@infradead.org> Link: http://lkml.kernel.org/r/1526914666-31839-3-git-send-email-yao.jin@linux.intel.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> --- tools/perf/builtin-report.c | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/tools/perf/builtin-report.c b/tools/perf/builtin-report.c index 4c931afb2e80..ad978e3ee2b8 100644 --- a/tools/perf/builtin-report.c +++ b/tools/perf/builtin-report.c @@ -194,20 +194,11 @@ out: return err; } -/* - * Events in data file are not collect in groups, but we still want - * the group display. Set the artificial group and set the leader's - * forced_leader flag to notify the display code. - */ static void setup_forced_leader(struct report *report, struct perf_evlist *evlist) { - if (report->group_set && !evlist->nr_groups) { - struct perf_evsel *leader = perf_evlist__first(evlist); - - perf_evlist__set_leader(evlist); - leader->forced_leader = true; - } + if (report->group_set) + perf_evlist__force_leader(evlist); } static int process_feature_event(struct perf_tool *tool, ^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH v4 3/3] perf annotate: Support '--group' option 2018-05-21 14:57 [PATCH v4 0/3] perf annotate: Support '--group' option Jin Yao 2018-05-21 14:57 ` [PATCH v4 1/3] perf evlist: Create new function perf_evlist__force_leader Jin Yao 2018-05-21 14:57 ` [PATCH v4 2/3] perf report: Use perf_evlist__force_leader to support '--group' Jin Yao @ 2018-05-21 14:57 ` Jin Yao 2018-05-21 17:43 ` Arnaldo Carvalho de Melo 2018-05-24 5:37 ` [tip:perf/core] " tip-bot for Jin Yao 2 siblings, 2 replies; 9+ messages in thread From: Jin Yao @ 2018-05-21 14:57 UTC (permalink / raw) To: acme, jolsa, peterz, mingo, alexander.shishkin Cc: Linux-kernel, ak, kan.liang, yao.jin, Jin Yao With the '--group' option, even for non-explicit group, perf annotate will enable the group output. For example, perf record -e cycles,branches ./div perf annotate main --stdio --group : Disassembly of section .text: : : 00000000004004b0 <main>: : main(): : : return i; : } : : int main(void) : { 0.00 0.00 : 4004b0: push %rbx : int i; : int flag; : volatile double x = 1212121212, y = 121212; : : s_randseed = time(0); 0.00 0.00 : 4004b1: xor %edi,%edi : srand(s_randseed); 0.00 0.00 : 4004b3: mov $0x77359400,%ebx : : return i; : } : But if without --group, there is only one event reported. perf annotate main --stdio : Disassembly of section .text: : : 00000000004004b0 <main>: : main(): : : return i; : } : : int main(void) : { 0.00 : 4004b0: push %rbx : int i; : int flag; : volatile double x = 1212121212, y = 121212; : : s_randseed = time(0); 0.00 : 4004b1: xor %edi,%edi : srand(s_randseed); 0.00 : 4004b3: mov $0x77359400,%ebx : : return i; : } Signed-off-by: Jin Yao <yao.jin@linux.intel.com> --- tools/perf/builtin-annotate.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/tools/perf/builtin-annotate.c b/tools/perf/builtin-annotate.c index 6e5d9f7..da57042 100644 --- a/tools/perf/builtin-annotate.c +++ b/tools/perf/builtin-annotate.c @@ -45,6 +45,7 @@ struct perf_annotate { bool print_line; bool skip_missing; bool has_br_stack; + bool group_set; const char *sym_hist_filter; const char *cpu_list; DECLARE_BITMAP(cpu_bitmap, MAX_NR_CPUS); @@ -508,6 +509,9 @@ int cmd_annotate(int argc, const char **argv) "Don't shorten the displayed pathnames"), OPT_BOOLEAN(0, "skip-missing", &annotate.skip_missing, "Skip symbols that cannot be annotated"), + OPT_BOOLEAN_SET(0, "group", &symbol_conf.event_group, + &annotate.group_set, + "Show event group information together"), OPT_STRING('C', "cpu", &annotate.cpu_list, "cpu", "list of cpus to profile"), OPT_CALLBACK(0, "symfs", NULL, "directory", "Look for files with symbols relative to this directory", @@ -570,6 +574,9 @@ int cmd_annotate(int argc, const char **argv) annotate.has_br_stack = perf_header__has_feat(&annotate.session->header, HEADER_BRANCH_STACK); + if (annotate.group_set) + perf_evlist__force_leader(annotate.session->evlist); + ret = symbol__annotation_init(); if (ret < 0) goto out_delete; -- 2.7.4 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH v4 3/3] perf annotate: Support '--group' option 2018-05-21 14:57 ` [PATCH v4 3/3] perf annotate: Support '--group' option Jin Yao @ 2018-05-21 17:43 ` Arnaldo Carvalho de Melo 2018-05-22 0:26 ` Jin, Yao 2018-05-24 5:37 ` [tip:perf/core] " tip-bot for Jin Yao 1 sibling, 1 reply; 9+ messages in thread From: Arnaldo Carvalho de Melo @ 2018-05-21 17:43 UTC (permalink / raw) To: Jin Yao Cc: jolsa, peterz, mingo, alexander.shishkin, Linux-kernel, ak, kan.liang, yao.jin Em Mon, May 21, 2018 at 10:57:46PM +0800, Jin Yao escreveu: > With the '--group' option, even for non-explicit group, perf annotate > will enable the group output. > > For example, > > perf record -e cycles,branches ./div > perf annotate main --stdio --group You forgot to make the first line to include the group event string, i.e. for cycles,instructions it will show only this: Percent | Source code & Disassembly of ld-2.26.so for cycles:u (1 samples) ---------------------------------------------------------------------------------------- : : : : Disassembly of section .text: : : 00000000000167e0 <__GI___tunables_init>: : __GI___tunables_init(): : /* Initialize the tunables list from the environment. For now we only use the : ENV_ALIAS to find values. Later we will also use the tunable names to find : values. */ : void : __tunables_init (char **envp) : { 0.00 0.00 : 167e0: push %r15 0.00 0.00 : 167e2: push %r14 I'm applying the patch, this can be done on top, - Arnaldo > > : Disassembly of section .text: > : > : 00000000004004b0 <main>: > : main(): > : > : return i; > : } > : > : int main(void) > : { > 0.00 0.00 : 4004b0: push %rbx > : int i; > : int flag; > : volatile double x = 1212121212, y = 121212; > : > : s_randseed = time(0); > 0.00 0.00 : 4004b1: xor %edi,%edi > : srand(s_randseed); > 0.00 0.00 : 4004b3: mov $0x77359400,%ebx > : > : return i; > : } > : > > But if without --group, there is only one event reported. > > perf annotate main --stdio > > : Disassembly of section .text: > : > : 00000000004004b0 <main>: > : main(): > : > : return i; > : } > : > : int main(void) > : { > 0.00 : 4004b0: push %rbx > : int i; > : int flag; > : volatile double x = 1212121212, y = 121212; > : > : s_randseed = time(0); > 0.00 : 4004b1: xor %edi,%edi > : srand(s_randseed); > 0.00 : 4004b3: mov $0x77359400,%ebx > : > : return i; > : } > > Signed-off-by: Jin Yao <yao.jin@linux.intel.com> > --- > tools/perf/builtin-annotate.c | 7 +++++++ > 1 file changed, 7 insertions(+) > > diff --git a/tools/perf/builtin-annotate.c b/tools/perf/builtin-annotate.c > index 6e5d9f7..da57042 100644 > --- a/tools/perf/builtin-annotate.c > +++ b/tools/perf/builtin-annotate.c > @@ -45,6 +45,7 @@ struct perf_annotate { > bool print_line; > bool skip_missing; > bool has_br_stack; > + bool group_set; > const char *sym_hist_filter; > const char *cpu_list; > DECLARE_BITMAP(cpu_bitmap, MAX_NR_CPUS); > @@ -508,6 +509,9 @@ int cmd_annotate(int argc, const char **argv) > "Don't shorten the displayed pathnames"), > OPT_BOOLEAN(0, "skip-missing", &annotate.skip_missing, > "Skip symbols that cannot be annotated"), > + OPT_BOOLEAN_SET(0, "group", &symbol_conf.event_group, > + &annotate.group_set, > + "Show event group information together"), > OPT_STRING('C', "cpu", &annotate.cpu_list, "cpu", "list of cpus to profile"), > OPT_CALLBACK(0, "symfs", NULL, "directory", > "Look for files with symbols relative to this directory", > @@ -570,6 +574,9 @@ int cmd_annotate(int argc, const char **argv) > annotate.has_br_stack = perf_header__has_feat(&annotate.session->header, > HEADER_BRANCH_STACK); > > + if (annotate.group_set) > + perf_evlist__force_leader(annotate.session->evlist); > + > ret = symbol__annotation_init(); > if (ret < 0) > goto out_delete; > -- > 2.7.4 ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v4 3/3] perf annotate: Support '--group' option 2018-05-21 17:43 ` Arnaldo Carvalho de Melo @ 2018-05-22 0:26 ` Jin, Yao 0 siblings, 0 replies; 9+ messages in thread From: Jin, Yao @ 2018-05-22 0:26 UTC (permalink / raw) To: Arnaldo Carvalho de Melo Cc: jolsa, peterz, mingo, alexander.shishkin, Linux-kernel, ak, kan.liang, yao.jin On 5/22/2018 1:43 AM, Arnaldo Carvalho de Melo wrote: > Em Mon, May 21, 2018 at 10:57:46PM +0800, Jin Yao escreveu: >> With the '--group' option, even for non-explicit group, perf annotate >> will enable the group output. >> >> For example, >> >> perf record -e cycles,branches ./div >> perf annotate main --stdio --group > > You forgot to make the first line to include the group event string, > i.e. for cycles,instructions it will show only this: > > Percent | Source code & Disassembly of ld-2.26.so for cycles:u (1 samples) > ---------------------------------------------------------------------------------------- > : > : > : > : Disassembly of section .text: > : > : 00000000000167e0 <__GI___tunables_init>: > : __GI___tunables_init(): > : /* Initialize the tunables list from the environment. For now we only use the > : ENV_ALIAS to find values. Later we will also use the tunable names to find > : values. */ > : void > : __tunables_init (char **envp) > : { > 0.00 0.00 : 167e0: push %r15 > 0.00 0.00 : 167e2: push %r14 > > I'm applying the patch, this can be done on top, > > - Arnaldo > Oh, 'perf annotate --group' can show the group string but 'perf annotate --group --stdio' shows only one event. I will check the '--stdio' and post a followup patch to fix that. Thanks Jin Yao >> >> : Disassembly of section .text: >> : >> : 00000000004004b0 <main>: >> : main(): >> : >> : return i; >> : } >> : >> : int main(void) >> : { >> 0.00 0.00 : 4004b0: push %rbx >> : int i; >> : int flag; >> : volatile double x = 1212121212, y = 121212; >> : >> : s_randseed = time(0); >> 0.00 0.00 : 4004b1: xor %edi,%edi >> : srand(s_randseed); >> 0.00 0.00 : 4004b3: mov $0x77359400,%ebx >> : >> : return i; >> : } >> : >> >> But if without --group, there is only one event reported. >> >> perf annotate main --stdio >> >> : Disassembly of section .text: >> : >> : 00000000004004b0 <main>: >> : main(): >> : >> : return i; >> : } >> : >> : int main(void) >> : { >> 0.00 : 4004b0: push %rbx >> : int i; >> : int flag; >> : volatile double x = 1212121212, y = 121212; >> : >> : s_randseed = time(0); >> 0.00 : 4004b1: xor %edi,%edi >> : srand(s_randseed); >> 0.00 : 4004b3: mov $0x77359400,%ebx >> : >> : return i; >> : } >> >> Signed-off-by: Jin Yao <yao.jin@linux.intel.com> >> --- >> tools/perf/builtin-annotate.c | 7 +++++++ >> 1 file changed, 7 insertions(+) >> >> diff --git a/tools/perf/builtin-annotate.c b/tools/perf/builtin-annotate.c >> index 6e5d9f7..da57042 100644 >> --- a/tools/perf/builtin-annotate.c >> +++ b/tools/perf/builtin-annotate.c >> @@ -45,6 +45,7 @@ struct perf_annotate { >> bool print_line; >> bool skip_missing; >> bool has_br_stack; >> + bool group_set; >> const char *sym_hist_filter; >> const char *cpu_list; >> DECLARE_BITMAP(cpu_bitmap, MAX_NR_CPUS); >> @@ -508,6 +509,9 @@ int cmd_annotate(int argc, const char **argv) >> "Don't shorten the displayed pathnames"), >> OPT_BOOLEAN(0, "skip-missing", &annotate.skip_missing, >> "Skip symbols that cannot be annotated"), >> + OPT_BOOLEAN_SET(0, "group", &symbol_conf.event_group, >> + &annotate.group_set, >> + "Show event group information together"), >> OPT_STRING('C', "cpu", &annotate.cpu_list, "cpu", "list of cpus to profile"), >> OPT_CALLBACK(0, "symfs", NULL, "directory", >> "Look for files with symbols relative to this directory", >> @@ -570,6 +574,9 @@ int cmd_annotate(int argc, const char **argv) >> annotate.has_br_stack = perf_header__has_feat(&annotate.session->header, >> HEADER_BRANCH_STACK); >> >> + if (annotate.group_set) >> + perf_evlist__force_leader(annotate.session->evlist); >> + >> ret = symbol__annotation_init(); >> if (ret < 0) >> goto out_delete; >> -- >> 2.7.4 ^ permalink raw reply [flat|nested] 9+ messages in thread
* [tip:perf/core] perf annotate: Support '--group' option 2018-05-21 14:57 ` [PATCH v4 3/3] perf annotate: Support '--group' option Jin Yao 2018-05-21 17:43 ` Arnaldo Carvalho de Melo @ 2018-05-24 5:37 ` tip-bot for Jin Yao 1 sibling, 0 replies; 9+ messages in thread From: tip-bot for Jin Yao @ 2018-05-24 5:37 UTC (permalink / raw) To: linux-tip-commits Cc: alexander.shishkin, yao.jin, peterz, jolsa, linux-kernel, ak, acme, hpa, kan.liang, tglx, mingo Commit-ID: 7ebaf4890f63eb90856b76864a0847413cdf6c86 Gitweb: https://git.kernel.org/tip/7ebaf4890f63eb90856b76864a0847413cdf6c86 Author: Jin Yao <yao.jin@linux.intel.com> AuthorDate: Mon, 21 May 2018 22:57:46 +0800 Committer: Arnaldo Carvalho de Melo <acme@redhat.com> CommitDate: Mon, 21 May 2018 14:41:25 -0300 perf annotate: Support '--group' option With the '--group' option, even for non-explicit group, 'perf annotate' will enable the group output. For example, $ perf record -e cycles,branches ./div $ perf annotate main --stdio --group : Disassembly of section .text: : : 00000000004004b0 <main>: : main(): : : return i; : } : : int main(void) : { 0.00 0.00 : 4004b0: push %rbx : int i; : int flag; : volatile double x = 1212121212, y = 121212; : : s_randseed = time(0); 0.00 0.00 : 4004b1: xor %edi,%edi : srand(s_randseed); 0.00 0.00 : 4004b3: mov $0x77359400,%ebx : : return i; : } : But if without --group, there is only one event reported. $ perf annotate main --stdio : Disassembly of section .text: : : 00000000004004b0 <main>: : main(): : : return i; : } : : int main(void) : { 0.00 : 4004b0: push %rbx : int i; : int flag; : volatile double x = 1212121212, y = 121212; : : s_randseed = time(0); 0.00 : 4004b1: xor %edi,%edi : srand(s_randseed); 0.00 : 4004b3: mov $0x77359400,%ebx : : return i; : } Signed-off-by: Jin Yao <yao.jin@linux.intel.com> Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com> Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> Cc: Andi Kleen <ak@linux.intel.com> Cc: Jiri Olsa <jolsa@kernel.org> Cc: Kan Liang <kan.liang@linux.intel.com> Cc: Peter Zijlstra <peterz@infradead.org> Link: http://lkml.kernel.org/r/1526914666-31839-4-git-send-email-yao.jin@linux.intel.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> --- tools/perf/builtin-annotate.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/tools/perf/builtin-annotate.c b/tools/perf/builtin-annotate.c index 6e5d9f718154..da5704240239 100644 --- a/tools/perf/builtin-annotate.c +++ b/tools/perf/builtin-annotate.c @@ -45,6 +45,7 @@ struct perf_annotate { bool print_line; bool skip_missing; bool has_br_stack; + bool group_set; const char *sym_hist_filter; const char *cpu_list; DECLARE_BITMAP(cpu_bitmap, MAX_NR_CPUS); @@ -508,6 +509,9 @@ int cmd_annotate(int argc, const char **argv) "Don't shorten the displayed pathnames"), OPT_BOOLEAN(0, "skip-missing", &annotate.skip_missing, "Skip symbols that cannot be annotated"), + OPT_BOOLEAN_SET(0, "group", &symbol_conf.event_group, + &annotate.group_set, + "Show event group information together"), OPT_STRING('C', "cpu", &annotate.cpu_list, "cpu", "list of cpus to profile"), OPT_CALLBACK(0, "symfs", NULL, "directory", "Look for files with symbols relative to this directory", @@ -570,6 +574,9 @@ int cmd_annotate(int argc, const char **argv) annotate.has_br_stack = perf_header__has_feat(&annotate.session->header, HEADER_BRANCH_STACK); + if (annotate.group_set) + perf_evlist__force_leader(annotate.session->evlist); + ret = symbol__annotation_init(); if (ret < 0) goto out_delete; ^ permalink raw reply related [flat|nested] 9+ messages in thread
end of thread, other threads:[~2018-05-24 5:39 UTC | newest] Thread overview: 9+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2018-05-21 14:57 [PATCH v4 0/3] perf annotate: Support '--group' option Jin Yao 2018-05-21 14:57 ` [PATCH v4 1/3] perf evlist: Create new function perf_evlist__force_leader Jin Yao 2018-05-24 5:36 ` [tip:perf/core] perf evlist: Introduce force_leader() method tip-bot for Jin Yao 2018-05-21 14:57 ` [PATCH v4 2/3] perf report: Use perf_evlist__force_leader to support '--group' Jin Yao 2018-05-24 5:37 ` [tip:perf/core] " tip-bot for Jin Yao 2018-05-21 14:57 ` [PATCH v4 3/3] perf annotate: Support '--group' option Jin Yao 2018-05-21 17:43 ` Arnaldo Carvalho de Melo 2018-05-22 0:26 ` Jin, Yao 2018-05-24 5:37 ` [tip:perf/core] " tip-bot for Jin Yao
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox