All of lore.kernel.org
 help / color / mirror / Atom feed
* [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

* [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

* [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 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

* [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

* [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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.