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