OSDN Git Service

perf stat: Remove unused perf_counts.aggr field
authorNamhyung Kim <namhyung@kernel.org>
Tue, 18 Oct 2022 02:02:27 +0000 (19:02 -0700)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Thu, 27 Oct 2022 19:37:25 +0000 (16:37 -0300)
The aggr field in the struct perf_counts is to keep the aggregated value
in the AGGR_GLOBAL for the old code.  But it's not used anymore.

Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Acked-by: Ian Rogers <irogers@google.com>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: Athira Jajeev <atrajeev@linux.vnet.ibm.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: James Clark <james.clark@arm.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Kan Liang <kan.liang@linux.intel.com>
Cc: Leo Yan <leo.yan@linaro.org>
Cc: Michael Petlan <mpetlan@redhat.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Xing Zhengjun <zhengjun.xing@linux.intel.com>
Link: https://lore.kernel.org/r/20221018020227.85905-21-namhyung@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/util/counts.c
tools/perf/util/counts.h
tools/perf/util/stat.c

index 7a447d9..11cd85b 100644 (file)
@@ -48,7 +48,6 @@ void perf_counts__reset(struct perf_counts *counts)
 {
        xyarray__reset(counts->loaded);
        xyarray__reset(counts->values);
-       memset(&counts->aggr, 0, sizeof(struct perf_counts_values));
 }
 
 void evsel__reset_counts(struct evsel *evsel)
index 5de2751..4276024 100644 (file)
@@ -11,7 +11,6 @@ struct evsel;
 
 struct perf_counts {
        s8                        scaled;
-       struct perf_counts_values aggr;
        struct xyarray            *values;
        struct xyarray            *loaded;
 };
index 0316557..3a432a9 100644 (file)
@@ -308,8 +308,6 @@ static void evsel__copy_prev_raw_counts(struct evsel *evsel)
                                *perf_counts(evsel->prev_raw_counts, idx, thread);
                }
        }
-
-       evsel->counts->aggr = evsel->prev_raw_counts->aggr;
 }
 
 void evlist__copy_prev_raw_counts(struct evlist *evlist)
@@ -320,26 +318,6 @@ void evlist__copy_prev_raw_counts(struct evlist *evlist)
                evsel__copy_prev_raw_counts(evsel);
 }
 
-void evlist__save_aggr_prev_raw_counts(struct evlist *evlist)
-{
-       struct evsel *evsel;
-
-       /*
-        * To collect the overall statistics for interval mode,
-        * we copy the counts from evsel->prev_raw_counts to
-        * evsel->counts. The perf_stat_process_counter creates
-        * aggr values from per cpu values, but the per cpu values
-        * are 0 for AGGR_GLOBAL. So we use a trick that saves the
-        * previous aggr value to the first member of perf_counts,
-        * then aggr calculation in process_counter_values can work
-        * correctly.
-        */
-       evlist__for_each_entry(evlist, evsel) {
-               *perf_counts(evsel->prev_raw_counts, 0, 0) =
-                       evsel->prev_raw_counts->aggr;
-       }
-}
-
 static size_t pkg_id_hash(const void *__key, void *ctx __maybe_unused)
 {
        uint64_t *key = (uint64_t *) __key;
@@ -442,7 +420,6 @@ process_counter_values(struct perf_stat_config *config, struct evsel *evsel,
                       int cpu_map_idx, int thread,
                       struct perf_counts_values *count)
 {
-       struct perf_counts_values *aggr = &evsel->counts->aggr;
        struct perf_stat_evsel *ps = evsel->stats;
        static struct perf_counts_values zero;
        bool skip = false;
@@ -511,12 +488,6 @@ process_counter_values(struct perf_stat_config *config, struct evsel *evsel,
                }
        }
 
-       if (config->aggr_mode == AGGR_GLOBAL) {
-               aggr->val += count->val;
-               aggr->ena += count->ena;
-               aggr->run += count->run;
-       }
-
        return 0;
 }
 
@@ -541,13 +512,10 @@ static int process_counter_maps(struct perf_stat_config *config,
 int perf_stat_process_counter(struct perf_stat_config *config,
                              struct evsel *counter)
 {
-       struct perf_counts_values *aggr = &counter->counts->aggr;
        struct perf_stat_evsel *ps = counter->stats;
-       u64 *count = counter->counts->aggr.values;
+       u64 *count;
        int ret;
 
-       aggr->val = aggr->ena = aggr->run = 0;
-
        if (counter->per_pkg)
                evsel__zero_per_pkg(counter);
 
@@ -558,6 +526,11 @@ int perf_stat_process_counter(struct perf_stat_config *config,
        if (config->aggr_mode != AGGR_GLOBAL)
                return 0;
 
+       /*
+        * GLOBAL aggregation mode only has a single aggr counts,
+        * so we can use ps->aggr[0] as the actual output.
+        */
+       count = ps->aggr[0].counts.values;
        update_stats(&ps->res_stats, *count);
 
        if (verbose > 0) {