Skip to contentSkip to conversation

perf hists: clear dummy entry accumulated period

PATCH Superseded [email protected] 2 participants 2 messages Apr 22, 2016 – Apr 25, 2016 perf events

v2 of 3 Superseded Latest is v3 →

lore
Share & tools
lore
#0 lore raw

PATCH v2 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

---

Sorry for the noise which is brought by V1.
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(+)
tools/perf/util/hist.c +2 -0
index 991a351..acba139 100644
@@ -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 (he->stat_acc)
+			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);
Signature · 1 line
2.5.0
#1 lore raw
Quoted 47 lines · On Fri, Apr 22, 2016 at 12:58:58AM -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

---

Sorry for the noise which is brought by V1.
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(+)
tools/perf/util/hist.c +0 -0
index 991a351..acba139 100644

tools/perf/util/hist.c static struct hist_entry *hists__add_dummy_entry(struct hists *hists, · line 2066

Quoted 5 lines
tools/perf/util/hist.c +2 -0
@@ -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 (he->stat_acc)
+			memset(he->stat_acc, 0, sizeof(he->stat));

we use symbol_conf.cumulate_callchain check for existance of he->stat_acc I think we should keep it here as well

thanks,
jirka