Commit 8b76a318 authored by Namhyung Kim's avatar Namhyung Kim Committed by Arnaldo Carvalho de Melo

perf stat: Remove unused perf_counts.aggr field

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: default avatarNamhyung Kim <namhyung@kernel.org>
Acked-by: default avatarIan 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.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent cec94d69
...@@ -48,7 +48,6 @@ void perf_counts__reset(struct perf_counts *counts) ...@@ -48,7 +48,6 @@ void perf_counts__reset(struct perf_counts *counts)
{ {
xyarray__reset(counts->loaded); xyarray__reset(counts->loaded);
xyarray__reset(counts->values); xyarray__reset(counts->values);
memset(&counts->aggr, 0, sizeof(struct perf_counts_values));
} }
void evsel__reset_counts(struct evsel *evsel) void evsel__reset_counts(struct evsel *evsel)
......
...@@ -11,7 +11,6 @@ struct evsel; ...@@ -11,7 +11,6 @@ struct evsel;
struct perf_counts { struct perf_counts {
s8 scaled; s8 scaled;
struct perf_counts_values aggr;
struct xyarray *values; struct xyarray *values;
struct xyarray *loaded; struct xyarray *loaded;
}; };
......
...@@ -308,8 +308,6 @@ static void evsel__copy_prev_raw_counts(struct evsel *evsel) ...@@ -308,8 +308,6 @@ static void evsel__copy_prev_raw_counts(struct evsel *evsel)
*perf_counts(evsel->prev_raw_counts, idx, thread); *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) void evlist__copy_prev_raw_counts(struct evlist *evlist)
...@@ -320,26 +318,6 @@ 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); 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) static size_t pkg_id_hash(const void *__key, void *ctx __maybe_unused)
{ {
uint64_t *key = (uint64_t *) __key; uint64_t *key = (uint64_t *) __key;
...@@ -442,7 +420,6 @@ process_counter_values(struct perf_stat_config *config, struct evsel *evsel, ...@@ -442,7 +420,6 @@ process_counter_values(struct perf_stat_config *config, struct evsel *evsel,
int cpu_map_idx, int thread, int cpu_map_idx, int thread,
struct perf_counts_values *count) struct perf_counts_values *count)
{ {
struct perf_counts_values *aggr = &evsel->counts->aggr;
struct perf_stat_evsel *ps = evsel->stats; struct perf_stat_evsel *ps = evsel->stats;
static struct perf_counts_values zero; static struct perf_counts_values zero;
bool skip = false; bool skip = false;
...@@ -511,12 +488,6 @@ process_counter_values(struct perf_stat_config *config, struct evsel *evsel, ...@@ -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; return 0;
} }
...@@ -541,13 +512,10 @@ static int process_counter_maps(struct perf_stat_config *config, ...@@ -541,13 +512,10 @@ static int process_counter_maps(struct perf_stat_config *config,
int perf_stat_process_counter(struct perf_stat_config *config, int perf_stat_process_counter(struct perf_stat_config *config,
struct evsel *counter) struct evsel *counter)
{ {
struct perf_counts_values *aggr = &counter->counts->aggr;
struct perf_stat_evsel *ps = counter->stats; struct perf_stat_evsel *ps = counter->stats;
u64 *count = counter->counts->aggr.values; u64 *count;
int ret; int ret;
aggr->val = aggr->ena = aggr->run = 0;
if (counter->per_pkg) if (counter->per_pkg)
evsel__zero_per_pkg(counter); evsel__zero_per_pkg(counter);
...@@ -558,6 +526,11 @@ int perf_stat_process_counter(struct perf_stat_config *config, ...@@ -558,6 +526,11 @@ int perf_stat_process_counter(struct perf_stat_config *config,
if (config->aggr_mode != AGGR_GLOBAL) if (config->aggr_mode != AGGR_GLOBAL)
return 0; 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); update_stats(&ps->res_stats, *count);
if (verbose > 0) { if (verbose > 0) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment