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: 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>
This commit is contained in:
parent
cec94d6963
commit
8b76a3188b
|
@ -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;
|
||||||
|
|
||||||
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)
|
||||||
*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)
|
||||||
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,
|
||||||
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,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
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,
|
||||||
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,
|
||||||
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) {
|
||||||
|
|
Loading…
Reference in New Issue