perf c2c: Add mean dimensions for peer operations
authorLeo Yan <leo.yan@linaro.org>
Thu, 11 Aug 2022 06:24:44 +0000 (14:24 +0800)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Thu, 11 Aug 2022 22:12:20 +0000 (19:12 -0300)
This patch adds two dimensions for the mean value of peer operations.

Reviewed-by: Ali Saidi <alisaidi@amazon.com>
Signed-off-by: Leo Yan <leo.yan@linaro.org>
Tested-by: Ali Saidi <alisaidi@amazon.com>
Acked-by: Ian Rogers <irogers@google.com>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Anshuman Khandual <anshuman.khandual@arm.com>
Cc: German Gomez <german.gomez@arm.com>
Cc: Gustavo A. R. Silva <gustavoars@kernel.org>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: James Clark <james.clark@arm.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: John Garry <john.garry@huawei.com>
Cc: Kajol Jain <kjain@linux.ibm.com>
Cc: Like Xu <likexu@tencent.com>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Mike Leach <mike.leach@linaro.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Timothy Hayes <timothy.hayes@arm.com>
Cc: Will Deacon <will@kernel.org>
Cc: linux-arm-kernel@lists.infradead.org
Link: https://lore.kernel.org/r/20220811062451.435810-9-leo.yan@linaro.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/builtin-c2c.c

index dd47f068b8da7eb2e1cd086b2bf91ac83ccf6e4a..8dd9218a052fcae4666701ea8cace5b1992acb74 100644 (file)
@@ -55,6 +55,8 @@ struct c2c_hists {
 struct compute_stats {
        struct stats             lcl_hitm;
        struct stats             rmt_hitm;
+       struct stats             lcl_peer;
+       struct stats             rmt_peer;
        struct stats             load;
 };
 
@@ -154,6 +156,8 @@ static void *c2c_he_zalloc(size_t size)
 
        init_stats(&c2c_he->cstats.lcl_hitm);
        init_stats(&c2c_he->cstats.rmt_hitm);
+       init_stats(&c2c_he->cstats.lcl_peer);
+       init_stats(&c2c_he->cstats.rmt_peer);
        init_stats(&c2c_he->cstats.load);
 
        return &c2c_he->he;
@@ -253,6 +257,10 @@ static void compute_stats(struct c2c_hist_entry *c2c_he,
                update_stats(&cstats->rmt_hitm, weight);
        else if (stats->lcl_hitm)
                update_stats(&cstats->lcl_hitm, weight);
+       else if (stats->rmt_peer)
+               update_stats(&cstats->rmt_peer, weight);
+       else if (stats->lcl_peer)
+               update_stats(&cstats->lcl_peer, weight);
        else if (stats->load)
                update_stats(&cstats->load, weight);
 }
@@ -1280,6 +1288,8 @@ __func(struct perf_hpp_fmt *fmt, struct perf_hpp *hpp, struct hist_entry *he)     \
 MEAN_ENTRY(mean_rmt_entry,  rmt_hitm);
 MEAN_ENTRY(mean_lcl_entry,  lcl_hitm);
 MEAN_ENTRY(mean_load_entry, load);
+MEAN_ENTRY(mean_rmt_peer_entry, rmt_peer);
+MEAN_ENTRY(mean_lcl_peer_entry, lcl_peer);
 
 static int
 cpucnt_entry(struct perf_hpp_fmt *fmt, struct perf_hpp *hpp,
@@ -1750,6 +1760,22 @@ static struct c2c_dimension dim_mean_load = {
        .width          = 8,
 };
 
+static struct c2c_dimension dim_mean_rmt_peer = {
+       .header         = HEADER_SPAN("---------- cycles ----------", "rmt peer", 2),
+       .name           = "mean_rmt_peer",
+       .cmp            = empty_cmp,
+       .entry          = mean_rmt_peer_entry,
+       .width          = 8,
+};
+
+static struct c2c_dimension dim_mean_lcl_peer = {
+       .header         = HEADER_SPAN_LOW("lcl peer"),
+       .name           = "mean_lcl_peer",
+       .cmp            = empty_cmp,
+       .entry          = mean_lcl_peer_entry,
+       .width          = 8,
+};
+
 static struct c2c_dimension dim_cpucnt = {
        .header         = HEADER_BOTH("cpu", "cnt"),
        .name           = "cpucnt",
@@ -1835,6 +1861,8 @@ static struct c2c_dimension *dimensions[] = {
        &dim_node,
        &dim_mean_rmt,
        &dim_mean_lcl,
+       &dim_mean_rmt_peer,
+       &dim_mean_lcl_peer,
        &dim_mean_load,
        &dim_cpucnt,
        &dim_srcline,