perf c2c report: Add struct c2c_stats::tot_hitm field
authorJiri Olsa <jolsa@kernel.org>
Mon, 21 Nov 2016 21:33:29 +0000 (22:33 +0100)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Wed, 23 Nov 2016 13:44:05 +0000 (10:44 -0300)
Count total number of HITMs in a special field. This will ease up
addition of total HITM sorting into c2c report in the following patch.

Signed-off-by: Jiri Olsa <jolsa@redhat.com>
Cc: Andi Kleen <andi@firstfloor.org>
Cc: David Ahern <dsahern@gmail.com>
Cc: Don Zickus <dzickus@redhat.com>
Cc: Joe Mario <jmario@redhat.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/1479764011-10732-5-git-send-email-jolsa@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/util/mem-events.c
tools/perf/util/mem-events.h

index e507732..1d4ab53 100644 (file)
@@ -280,6 +280,12 @@ int c2c_decode_stats(struct c2c_stats *stats, struct mem_info *mi)
        u64 lock   = data_src->mem_lock;
        int err = 0;
 
+#define HITM_INC(__f)          \
+do {                           \
+       stats->__f++;           \
+       stats->tot_hitm++;      \
+} while (0)
+
 #define P(a, b) PERF_MEM_##a##_##b
 
        stats->nr_entries++;
@@ -303,7 +309,7 @@ int c2c_decode_stats(struct c2c_stats *stats, struct mem_info *mi)
                        if (lvl & P(LVL, L2 )) stats->ld_l2hit++;
                        if (lvl & P(LVL, L3 )) {
                                if (snoop & P(SNOOP, HITM))
-                                       stats->lcl_hitm++;
+                                       HITM_INC(lcl_hitm);
                                else
                                        stats->ld_llchit++;
                        }
@@ -331,7 +337,7 @@ int c2c_decode_stats(struct c2c_stats *stats, struct mem_info *mi)
                        if (snoop & P(SNOOP, HIT))
                                stats->rmt_hit++;
                        else if (snoop & P(SNOOP, HITM))
-                               stats->rmt_hitm++;
+                               HITM_INC(rmt_hitm);
                }
 
                if ((lvl & P(LVL, MISS)))
@@ -364,6 +370,7 @@ int c2c_decode_stats(struct c2c_stats *stats, struct mem_info *mi)
        }
 
 #undef P
+#undef HITM_INC
        return err;
 }
 
@@ -390,6 +397,7 @@ void c2c_add_stats(struct c2c_stats *stats, struct c2c_stats *add)
        stats->ld_llchit        += add->ld_llchit;
        stats->lcl_hitm         += add->lcl_hitm;
        stats->rmt_hitm         += add->rmt_hitm;
+       stats->tot_hitm         += add->tot_hitm;
        stats->rmt_hit          += add->rmt_hit;
        stats->lcl_dram         += add->lcl_dram;
        stats->rmt_dram         += add->rmt_dram;
index faf8040..40f72ee 100644 (file)
@@ -59,6 +59,7 @@ struct c2c_stats {
        u32     ld_llchit;           /* count of loads that hit LLC */
        u32     lcl_hitm;            /* count of loads with local HITM  */
        u32     rmt_hitm;            /* count of loads with remote HITM */
+       u32     tot_hitm;            /* count of loads with local and remote HITM */
        u32     rmt_hit;             /* count of loads with remote hit clean; */
        u32     lcl_dram;            /* count of loads miss to local DRAM */
        u32     rmt_dram;            /* count of loads miss to remote DRAM */