2016-04-25 13:54:00

by Liang, Kan

[permalink] [raw]
Subject: [PATCH V3 1/1] perf hists: clear dummy entry accumulated period

From: Kan Liang <[email protected]>

The accumulated period for dummy entry should also be 0.
Otherwise, the total overhead could be overcounted.
[perf]$ perf record -e '{LLC-load-misses,cpu/instructions/}'
--call-graph=lbr ./tchain
[perf]$ perf report --stdio
# To display the perf.data header info, please use
--header/--header-only options.
#
#
# Total Lost Samples: 0
#
# Samples: 21K of event 'anon group { LLC-load-misses,
cpu/instructions/
}'
# Event count (approx.): 16313667937
#
# Children Self Command Shared Object
Symbol
# ................ ................ ........... ................
............................
#
4769.98% 0.01% 0.00% 0.01% tchain_edit [kernel.vmlinux]
[k] update_fast_timekeeper
4356.18% 0.01% 0.00% 0.01% tchain_edit [kernel.vmlinux]
[k] trigger_load_balance
3181.12% 0.01% 0.00% 0.01% tchain_edit [kernel.vmlinux]
[k] irq_work_tick
1592.37% 0.00% 0.00% 0.00% tchain_edit [kernel.vmlinux]
[k] cpu_needs_another_gp

Signed-off-by: Kan Liang <[email protected]>
---

Changes since V2:
- Use symbol_conf.cumulate_callchain check for existance of he->stat_acc
Changes since V1:
- check he->stat_acc. Because it only be available when option children is set

tools/perf/util/hist.c | 2 ++
1 file changed, 2 insertions(+)

diff --git a/tools/perf/util/hist.c b/tools/perf/util/hist.c
index 991a351..0f33d7e 100644
--- a/tools/perf/util/hist.c
+++ b/tools/perf/util/hist.c
@@ -2062,6 +2062,8 @@ static struct hist_entry *hists__add_dummy_entry(struct hists *hists,
if (he) {
memset(&he->stat, 0, sizeof(he->stat));
he->hists = hists;
+ if (symbol_conf.cumulate_callchain)
+ memset(he->stat_acc, 0, sizeof(he->stat));
rb_link_node(&he->rb_node_in, parent, p);
rb_insert_color(&he->rb_node_in, root);
hists__inc_stats(hists, he);
--
2.5.0


2016-04-25 18:15:04

by Jiri Olsa

[permalink] [raw]
Subject: Re: [PATCH V3 1/1] perf hists: clear dummy entry accumulated period

On Sun, Apr 24, 2016 at 11:28:09PM -0700, [email protected] wrote:
> From: Kan Liang <[email protected]>
>
> The accumulated period for dummy entry should also be 0.
> Otherwise, the total overhead could be overcounted.
> [perf]$ perf record -e '{LLC-load-misses,cpu/instructions/}'
> --call-graph=lbr ./tchain
> [perf]$ perf report --stdio
> # To display the perf.data header info, please use
> --header/--header-only options.
> #
> #
> # Total Lost Samples: 0
> #
> # Samples: 21K of event 'anon group { LLC-load-misses,
> cpu/instructions/
> }'
> # Event count (approx.): 16313667937
> #
> # Children Self Command Shared Object
> Symbol
> # ................ ................ ........... ................
> ............................
> #
> 4769.98% 0.01% 0.00% 0.01% tchain_edit [kernel.vmlinux]
> [k] update_fast_timekeeper
> 4356.18% 0.01% 0.00% 0.01% tchain_edit [kernel.vmlinux]
> [k] trigger_load_balance
> 3181.12% 0.01% 0.00% 0.01% tchain_edit [kernel.vmlinux]
> [k] irq_work_tick
> 1592.37% 0.00% 0.00% 0.00% tchain_edit [kernel.vmlinux]
> [k] cpu_needs_another_gp
>
> Signed-off-by: Kan Liang <[email protected]>
> ---
>
> Changes since V2:
> - Use symbol_conf.cumulate_callchain check for existance of he->stat_acc
> Changes since V1:
> - check he->stat_acc. Because it only be available when option children is set

Acked-by: Jiri Olsa <[email protected]>

thanks,
jirka

>
> tools/perf/util/hist.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/tools/perf/util/hist.c b/tools/perf/util/hist.c
> index 991a351..0f33d7e 100644
> --- a/tools/perf/util/hist.c
> +++ b/tools/perf/util/hist.c
> @@ -2062,6 +2062,8 @@ static struct hist_entry *hists__add_dummy_entry(struct hists *hists,
> if (he) {
> memset(&he->stat, 0, sizeof(he->stat));
> he->hists = hists;
> + if (symbol_conf.cumulate_callchain)
> + memset(he->stat_acc, 0, sizeof(he->stat));
> rb_link_node(&he->rb_node_in, parent, p);
> rb_insert_color(&he->rb_node_in, root);
> hists__inc_stats(hists, he);
> --
> 2.5.0
>

2016-04-25 23:26:59

by Arnaldo Carvalho de Melo

[permalink] [raw]
Subject: Re: [PATCH V3 1/1] perf hists: clear dummy entry accumulated period

Em Mon, Apr 25, 2016 at 08:15:00PM +0200, Jiri Olsa escreveu:
> On Sun, Apr 24, 2016 at 11:28:09PM -0700, [email protected] wrote:
> > From: Kan Liang <[email protected]>
> >
> > The accumulated period for dummy entry should also be 0.
> > Otherwise, the total overhead could be overcounted.
> > [perf]$ perf record -e '{LLC-load-misses,cpu/instructions/}'
> > --call-graph=lbr ./tchain
> > [perf]$ perf report --stdio
> > # To display the perf.data header info, please use
> > --header/--header-only options.
> > #
> > #
> > # Total Lost Samples: 0
> > #
> > # Samples: 21K of event 'anon group { LLC-load-misses,
> > cpu/instructions/
> > }'
> > # Event count (approx.): 16313667937
> > #
> > # Children Self Command Shared Object
> > Symbol
> > # ................ ................ ........... ................
> > ............................
> > #
> > 4769.98% 0.01% 0.00% 0.01% tchain_edit [kernel.vmlinux]
> > [k] update_fast_timekeeper
> > 4356.18% 0.01% 0.00% 0.01% tchain_edit [kernel.vmlinux]
> > [k] trigger_load_balance
> > 3181.12% 0.01% 0.00% 0.01% tchain_edit [kernel.vmlinux]
> > [k] irq_work_tick
> > 1592.37% 0.00% 0.00% 0.00% tchain_edit [kernel.vmlinux]
> > [k] cpu_needs_another_gp
> >
> > Signed-off-by: Kan Liang <[email protected]>
> > ---
> >
> > Changes since V2:
> > - Use symbol_conf.cumulate_callchain check for existance of he->stat_acc
> > Changes since V1:
> > - check he->stat_acc. Because it only be available when option children is set
>
> Acked-by: Jiri Olsa <[email protected]>

Thanks, applied.

- Arnaldo

Subject: [tip:perf/core] perf hists: Clear dummy entry accumulated period

Commit-ID: 09623d79466e996f5dc2753e16f04fda6f078041
Gitweb: http://git.kernel.org/tip/09623d79466e996f5dc2753e16f04fda6f078041
Author: Kan Liang <[email protected]>
AuthorDate: Sun, 24 Apr 2016 23:28:09 -0700
Committer: Arnaldo Carvalho de Melo <[email protected]>
CommitDate: Mon, 25 Apr 2016 20:35:59 -0300

perf hists: Clear dummy entry accumulated period

The accumulated period for dummy entry should also be 0. Otherwise, the
total overhead could be overcounted.

$ perf record -e '{LLC-load-misses,cpu/instructions/}' --call-graph=lbr ./tchain
$ perf report --stdio
# To display the perf.data header info, please use --header/--header-only options.
#
# Total Lost Samples: 0
#
# Samples: 21K of event 'anon group { LLC-load-misses, cpu/instructions/ }'
# Event count (approx.): 16313667937
#
# Children Self Command Shared Object Symbol
# ................ ................ ........... ................ ............................
#
4769.98% 0.01% 0.00% 0.01% tchain_edit [kernel.vmlinux] [k] update_fast_timekeeper
4356.18% 0.01% 0.00% 0.01% tchain_edit [kernel.vmlinux] [k] trigger_load_balance
3181.12% 0.01% 0.00% 0.01% tchain_edit [kernel.vmlinux] [k] irq_work_tick
1592.37% 0.00% 0.00% 0.00% tchain_edit [kernel.vmlinux] [k] cpu_needs_another_gp

Signed-off-by: Kan Liang <[email protected]>
Acked-by: Jiri Olsa <[email protected]>
Cc: Andi Kleen <[email protected]>
Cc: Namhyung Kim <[email protected]>
Link: http://lkml.kernel.org/r/[email protected]
Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
---
tools/perf/util/hist.c | 2 ++
1 file changed, 2 insertions(+)

diff --git a/tools/perf/util/hist.c b/tools/perf/util/hist.c
index 991a351..0f33d7e 100644
--- a/tools/perf/util/hist.c
+++ b/tools/perf/util/hist.c
@@ -2062,6 +2062,8 @@ static struct hist_entry *hists__add_dummy_entry(struct hists *hists,
if (he) {
memset(&he->stat, 0, sizeof(he->stat));
he->hists = hists;
+ if (symbol_conf.cumulate_callchain)
+ memset(he->stat_acc, 0, sizeof(he->stat));
rb_link_node(&he->rb_node_in, parent, p);
rb_insert_color(&he->rb_node_in, root);
hists__inc_stats(hists, he);