Output some summary stats based on the processed records. Mainly diagnostic uses.
Stats done by Dick Fowles, backported by me. Sample output: ================================================= Trace Event Information ================================================= Total records : 1322047 Locked Load/Store Operations : 206317 Load Operations : 355701 Loads - uncacheable : 590 Loads - IO : 0 Loads - Miss : 440 Loads - no mapping : 207 Load Fill Buffer Hit : 100214 Load L1D hit : 148454 Load L2D hit : 15170 Load LLC hit : 53872 Load Local HITM : 15388 Load Remote HITM : 26760 Load Remote HIT : 3910 Load Local DRAM : 2436 Load Remote DRAM : 3648 Load MESI State Exclusive : 2883 Load MESI State Shared : 3201 Load LLC Misses : 36754 LLC Misses to Local DRAM : 6.6% LLC Misses to Remote DRAM : 9.9% LLC Misses to Remote cache (HIT) : 10.6% LLC Misses to Remote cache (HITM) : 72.8% Store Operations : 966322 Store - uncacheable : 0 Store - no mapping : 42931 Store L1D Hit : 915696 Store L1D Miss : 7695 No Page Map Rejects : 1193 Unable to parse data source : 24 V2: refresh to hist_entry Original-by: Dick Fowles <rfow...@redhat.com> Signed-off-by: Don Zickus <dzic...@redhat.com> --- tools/perf/builtin-c2c.c | 47 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 46 insertions(+), 1 deletion(-) diff --git a/tools/perf/builtin-c2c.c b/tools/perf/builtin-c2c.c index 363deec..37bf0bd 100644 --- a/tools/perf/builtin-c2c.c +++ b/tools/perf/builtin-c2c.c @@ -966,7 +966,6 @@ static void print_hitm_cacheline_offset(struct c2c_hit *clo, 23, stdout); } } - static void print_c2c_hitm_report(struct rb_root *hitm_tree, struct c2c_stats *hitm_stats __maybe_unused, struct c2c_stats *c2c_stats) @@ -1161,6 +1160,51 @@ cleanup: return; } +static void print_c2c_trace_report(struct perf_c2c *c2c) +{ + int llc_misses; + struct c2c_stats *stats = &c2c->stats; + + llc_misses = stats->t.lcl_dram + + stats->t.rmt_dram + + stats->t.rmt_hit + + stats->t.rmt_hitm; + + printf("=================================================\n"); + printf(" Trace Event Information \n"); + printf("=================================================\n"); + printf(" Total records : %10d\n", c2c->stats.nr_entries); + printf(" Locked Load/Store Operations : %10d\n", stats->t.locks); + printf(" Load Operations : %10d\n", stats->t.load); + printf(" Loads - uncacheable : %10d\n", stats->t.ld_uncache); + printf(" Loads - IO : %10d\n", stats->t.ld_io); + printf(" Loads - Miss : %10d\n", stats->t.ld_miss); + printf(" Loads - no mapping : %10d\n", stats->t.ld_noadrs); + printf(" Load Fill Buffer Hit : %10d\n", stats->t.ld_fbhit); + printf(" Load L1D hit : %10d\n", stats->t.ld_l1hit); + printf(" Load L2D hit : %10d\n", stats->t.ld_l2hit); + printf(" Load LLC hit : %10d\n", stats->t.ld_llchit + stats->t.lcl_hitm); + printf(" Load Local HITM : %10d\n", stats->t.lcl_hitm); + printf(" Load Remote HITM : %10d\n", stats->t.rmt_hitm); + printf(" Load Remote HIT : %10d\n", stats->t.rmt_hit); + printf(" Load Local DRAM : %10d\n", stats->t.lcl_dram); + printf(" Load Remote DRAM : %10d\n", stats->t.rmt_dram); + printf(" Load MESI State Exclusive : %10d\n", stats->t.ld_excl); + printf(" Load MESI State Shared : %10d\n", stats->t.ld_shared); + printf(" Load LLC Misses : %10d\n", llc_misses); + printf(" LLC Misses to Local DRAM : %10.1f%%\n", ((double)stats->t.lcl_dram/(double)llc_misses) * 100.); + printf(" LLC Misses to Remote DRAM : %10.1f%%\n", ((double)stats->t.rmt_dram/(double)llc_misses) * 100.); + printf(" LLC Misses to Remote cache (HIT) : %10.1f%%\n", ((double)stats->t.rmt_hit /(double)llc_misses) * 100.); + printf(" LLC Misses to Remote cache (HITM) : %10.1f%%\n", ((double)stats->t.rmt_hitm/(double)llc_misses) * 100.); + printf(" Store Operations : %10d\n", stats->t.store); + printf(" Store - uncacheable : %10d\n", stats->t.st_uncache); + printf(" Store - no mapping : %10d\n", stats->t.st_noadrs); + printf(" Store L1D Hit : %10d\n", stats->t.st_l1hit); + printf(" Store L1D Miss : %10d\n", stats->t.st_l1miss); + printf(" No Page Map Rejects : %10d\n", stats->t.nomap); + printf(" Unable to parse data source : %10d\n", stats->t.noparse); +} + static int perf_c2c__process_events(struct perf_session *session, struct perf_c2c *c2c) { @@ -1172,6 +1216,7 @@ static int perf_c2c__process_events(struct perf_session *session, goto err; } + print_c2c_trace_report(c2c); c2c_analyze_hitms(c2c); err: -- 1.7.11.7 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/