All of lore.kernel.org
 help / color / mirror / Atom feed
* Re: [PATCH v2 2/3] perf report: Use perf_evlist_forced_leader to support '--group'
  2018-05-18 12:57 ` [PATCH v2 2/3] perf report: Use perf_evlist_forced_leader to support '--group' Jin Yao
@ 2018-05-18  7:04   ` Jiri Olsa
  2018-05-18  7:21     ` Jin, Yao
  0 siblings, 1 reply; 6+ messages in thread
From: Jiri Olsa @ 2018-05-18  7:04 UTC (permalink / raw)
  To: Jin Yao
  Cc: acme, jolsa, peterz, mingo, alexander.shishkin, Linux-kernel, ak,
	kan.liang, yao.jin

On Fri, May 18, 2018 at 08:57:39PM +0800, Jin Yao wrote:
> Since we have created a new function perf_evlist_forced_leader,
> so now remove the old code and use perf_evlist_forced_leader
> instead.
> 
> Signed-off-by: Jin Yao <yao.jin@linux.intel.com>
> ---
>  tools/perf/builtin-report.c | 8 ++------
>  1 file changed, 2 insertions(+), 6 deletions(-)
> 
> diff --git a/tools/perf/builtin-report.c b/tools/perf/builtin-report.c
> index 4c931af..63fe776 100644
> --- a/tools/perf/builtin-report.c
> +++ b/tools/perf/builtin-report.c
> @@ -202,12 +202,8 @@ static int hist_iter__branch_callback(struct hist_entry_iter *iter,

there's comment in this place, which no longer applies in here:


/*
 * 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.
 */

could you please move/change/apply it to perf_evlist_forced_leader

thanks,
jirka

>  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_forced_leader(evlist);
>  }
>  
>  static int process_feature_event(struct perf_tool *tool,
> -- 
> 2.7.4
> 

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v2 2/3] perf report: Use perf_evlist_forced_leader to support '--group'
  2018-05-18  7:04   ` Jiri Olsa
@ 2018-05-18  7:21     ` Jin, Yao
  0 siblings, 0 replies; 6+ messages in thread
From: Jin, Yao @ 2018-05-18  7:21 UTC (permalink / raw)
  To: Jiri Olsa
  Cc: acme, jolsa, peterz, mingo, alexander.shishkin, Linux-kernel, ak,
	kan.liang, yao.jin



On 5/18/2018 3:04 PM, Jiri Olsa wrote:
> On Fri, May 18, 2018 at 08:57:39PM +0800, Jin Yao wrote:
>> Since we have created a new function perf_evlist_forced_leader,
>> so now remove the old code and use perf_evlist_forced_leader
>> instead.
>>
>> Signed-off-by: Jin Yao <yao.jin@linux.intel.com>
>> ---
>>   tools/perf/builtin-report.c | 8 ++------
>>   1 file changed, 2 insertions(+), 6 deletions(-)
>>
>> diff --git a/tools/perf/builtin-report.c b/tools/perf/builtin-report.c
>> index 4c931af..63fe776 100644
>> --- a/tools/perf/builtin-report.c
>> +++ b/tools/perf/builtin-report.c
>> @@ -202,12 +202,8 @@ static int hist_iter__branch_callback(struct hist_entry_iter *iter,
> 
> there's comment in this place, which no longer applies in here:
> 
> 
> /*
>   * 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.
>   */
> 
> could you please move/change/apply it to perf_evlist_forced_leader
> 
> thanks,
> jirka
> 

Oh, yes, I should move the comment to perf_evlist_forced_leader.

I will do it in next version.

Thanks
Jin Yao

>>   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_forced_leader(evlist);
>>   }
>>   
>>   static int process_feature_event(struct perf_tool *tool,
>> -- 
>> 2.7.4
>>

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH v2 0/3] perf annotate: Support '--group' option
@ 2018-05-18 12:57 Jin Yao
  2018-05-18 12:57 ` [PATCH v2 1/3] perf evlist: Create a new function perf_evlist_forced_leader Jin Yao
                   ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: Jin Yao @ 2018-05-18 12: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;
                     :            }
                     :

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 a new function perf_evlist_forced_leader
  perf report: Use perf_evlist_forced_leader to support '--group'
  perf annotate: Support '--group' option

 tools/perf/builtin-annotate.c |  7 +++++++
 tools/perf/builtin-report.c   |  8 ++------
 tools/perf/util/evlist.c      | 10 ++++++++++
 tools/perf/util/evlist.h      |  3 +++
 4 files changed, 22 insertions(+), 6 deletions(-)

-- 
2.7.4

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH v2 1/3] perf evlist: Create a new function perf_evlist_forced_leader
  2018-05-18 12:57 [PATCH v2 0/3] perf annotate: Support '--group' option Jin Yao
@ 2018-05-18 12:57 ` Jin Yao
  2018-05-18 12:57 ` [PATCH v2 2/3] perf report: Use perf_evlist_forced_leader to support '--group' Jin Yao
  2018-05-18 12:57 ` [PATCH v2 3/3] perf annotate: Support '--group' option Jin Yao
  2 siblings, 0 replies; 6+ messages in thread
From: Jin Yao @ 2018-05-18 12: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_forced_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 | 10 ++++++++++
 tools/perf/util/evlist.h |  3 +++
 2 files changed, 13 insertions(+)

diff --git a/tools/perf/util/evlist.c b/tools/perf/util/evlist.c
index a59281d..ed8a9d5 100644
--- a/tools/perf/util/evlist.c
+++ b/tools/perf/util/evlist.c
@@ -1795,3 +1795,13 @@ bool perf_evlist__exclude_kernel(struct perf_evlist *evlist)
 
 	return true;
 }
+
+void perf_evlist_forced_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..d77d514 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_forced_leader(struct perf_evlist *evlist);
+
 #endif /* __PERF_EVLIST_H */
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH v2 2/3] perf report: Use perf_evlist_forced_leader to support '--group'
  2018-05-18 12:57 [PATCH v2 0/3] perf annotate: Support '--group' option Jin Yao
  2018-05-18 12:57 ` [PATCH v2 1/3] perf evlist: Create a new function perf_evlist_forced_leader Jin Yao
@ 2018-05-18 12:57 ` Jin Yao
  2018-05-18  7:04   ` Jiri Olsa
  2018-05-18 12:57 ` [PATCH v2 3/3] perf annotate: Support '--group' option Jin Yao
  2 siblings, 1 reply; 6+ messages in thread
From: Jin Yao @ 2018-05-18 12: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_forced_leader,
so now remove the old code and use perf_evlist_forced_leader
instead.

Signed-off-by: Jin Yao <yao.jin@linux.intel.com>
---
 tools/perf/builtin-report.c | 8 ++------
 1 file changed, 2 insertions(+), 6 deletions(-)

diff --git a/tools/perf/builtin-report.c b/tools/perf/builtin-report.c
index 4c931af..63fe776 100644
--- a/tools/perf/builtin-report.c
+++ b/tools/perf/builtin-report.c
@@ -202,12 +202,8 @@ static int hist_iter__branch_callback(struct hist_entry_iter *iter,
 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_forced_leader(evlist);
 }
 
 static int process_feature_event(struct perf_tool *tool,
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH v2 3/3] perf annotate: Support '--group' option
  2018-05-18 12:57 [PATCH v2 0/3] perf annotate: Support '--group' option Jin Yao
  2018-05-18 12:57 ` [PATCH v2 1/3] perf evlist: Create a new function perf_evlist_forced_leader Jin Yao
  2018-05-18 12:57 ` [PATCH v2 2/3] perf report: Use perf_evlist_forced_leader to support '--group' Jin Yao
@ 2018-05-18 12:57 ` Jin Yao
  2 siblings, 0 replies; 6+ messages in thread
From: Jin Yao @ 2018-05-18 12: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..5272d48 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_forced_leader(annotate.session->evlist);
+
 	ret = symbol__annotation_init();
 	if (ret < 0)
 		goto out_delete;
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2018-05-18  7:21 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-05-18 12:57 [PATCH v2 0/3] perf annotate: Support '--group' option Jin Yao
2018-05-18 12:57 ` [PATCH v2 1/3] perf evlist: Create a new function perf_evlist_forced_leader Jin Yao
2018-05-18 12:57 ` [PATCH v2 2/3] perf report: Use perf_evlist_forced_leader to support '--group' Jin Yao
2018-05-18  7:04   ` Jiri Olsa
2018-05-18  7:21     ` Jin, Yao
2018-05-18 12:57 ` [PATCH v2 3/3] perf annotate: Support '--group' option 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.