* [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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).