Messages in this thread | | | Subject | Re: [PATCH v4 3/3] perf annotate: Support '--group' option | From | "Jin, Yao" <> | Date | Tue, 22 May 2018 08:26:18 +0800 |
| |
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
| |