perf c2c report: Add llc load miss dimension key
tip-bot for Jiri Olsa
merge botCommit-ID: 04402d205a40d38d1ebf4b48fb369bba39d4e05b Gitweb: http://git.kernel.org/tip/04402d205a40d38d1ebf4b48fb369bba39d4e05b Author: Jiri Olsa <[email protected]> AuthorDate: Thu, 19 May 2016 10:10:51 +0200 Committer: Arnaldo Carvalho de Melo <[email protected]> CommitDate: Wed, 19 Oct 2016 13:18:31 -0300
perf c2c report: Add llc load miss dimension key
It is to be displayed in the main cachelines overall output:
ld_llcmiss
It displays bare number of LLC misses for cacheline.
Signed-off-by Jiri Olsa <[email protected]>
Cc Andi Kleen <[email protected]>
Cc David Ahern <[email protected]>
Cc Don Zickus <[email protected]>
Cc Joe Mario <[email protected]>
Cc Namhyung Kim <[email protected]>
Cc Peter Zijlstra <[email protected]>
Signed-off-by Arnaldo Carvalho de Melo <[email protected]>
--- tools/perf/builtin-c2c.c | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+)
tools/perf/builtin-c2c.c +47 -0
@@ -421,6 +421,44 @@ STAT_FN(ld_l2hit)STAT_FN (ld_llchit)STAT_FN (rmt_hit) +static uint64_t llc_miss(struct c2c_stats *stats) +{ + uint64_t llcmiss; + + llcmiss = stats->lcl_dram + + stats->rmt_dram + + stats->rmt_hitm + + stats->rmt_hit; + + return llcmiss; +} + +static int +ld_llcmiss_entry(struct perf_hpp_fmt *fmt, struct perf_hpp *hpp, + struct hist_entry *he) +{ +struct c2c_hist_entry *c2c_he; +int width =c2c_width (fmt, hpp, he->hists); + + c2c_he = container_of(he, struct c2c_hist_entry, he); + +return scnprintf (hpp->buf, hpp->size,"%*lu" , width, +llc_miss (&c2c_he->stats)); +} + +static int64_t +ld_llcmiss_cmp (struct perf_hpp_fmt *fmt__maybe_unused , +struct hist_entry *left,struct hist_entry *right) +{ +struct c2c_hist_entry *c2c_left; +struct c2c_hist_entry *c2c_right; + + c2c_left = container_of(left, struct c2c_hist_entry, he); + c2c_right = container_of(right, struct c2c_hist_entry, he); + +return llc_miss (&c2c_left->stats) -llc_miss (&c2c_right->stats); +} +#define HEADER_LOW (__h) \ { \ .line[1] = { \
@@ -600,6 +638,14 @@ static struct c2c_dimension dim_ld_rmthit = { .width = 8, }; +static struct c2c_dimension dim_ld_llcmiss = { + .header =HEADER_BOTH ("LLC" ,"Ld Miss" ), + .name ="ld_llcmiss" , + .cmp = ld_llcmiss_cmp, + .entry = ld_llcmiss_entry, + .width =7 , +}; +static struct c2c_dimension *dimensions[] = { &dim_dcacheline, &dim_offset,
@@ -619,6 +665,7 @@ static struct c2c_dimension *dimensions[] = { &dim_ld_l2hit, &dim_ld_llchit, &dim_ld_rmthit, + &dim_ld_llcmiss, NULL, };