perf stat: Fix metric-only aggregation index
Aggregation index was being computed using the evsel's cpumap which may have a different (typically the same or fewer) entries. Before: ``` $ perf stat --metric-only -A -M memory_bandwidth_total -a sleep 1 Performance counter stats for 'system wide': MB/s memory_bandwidth_total MB/s memory_bandwidth_total MB/s memory_bandwidth_total MB/s memory_bandwidth_total MB/s memory_bandwidth_total MB/s memory_bandwidth_total CPU0 12.8 0.0 12.9 12.7 0.0 12.6 CPU1 1.007806367 seconds time elapsed ``` After: ``` $ perf stat --metric-only -A -M memory_bandwidth_total -a sleep 1 Performance counter stats for 'system wide': MB/s memory_bandwidth_total MB/s memory_bandwidth_total MB/s memory_bandwidth_total MB/s memory_bandwidth_total MB/s memory_bandwidth_total MB/s memory_bandwidth_total CPU0 15.4 0.0 15.3 15.0 0.0 14.9 CPU18 0.0 0.0 13.5 5.2 0.0 11.9 1.007858736 seconds time elapsed ``` Signed-off-by: Ian Rogers <irogers@google.com> | Acked-by: Namhyung Kim <namhyung@kernel.org> Cc: K Prateek Nayak <kprateek.nayak@amd.com> Cc: Stephane Eranian <eranian@google.com> Cc: Kaige Ye <ye@kaige.org> Cc: Kajol Jain <kjain@linux.ibm.com> Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> Cc: Kan Liang <kan.liang@linux.intel.com> Cc: John Garry <john.g.garry@oracle.com> Signed-off-by: Namhyung Kim <namhyung@kernel.org> Link: https://lore.kernel.org/r/20240221070754.4163916-3-irogers@google.com
This commit is contained in:
parent
a59fb796a3
commit
bafd4e75c1
@ -1137,11 +1137,16 @@ static void print_no_aggr_metric(struct perf_stat_config *config,
|
||||
u64 ena, run, val;
|
||||
double uval;
|
||||
struct perf_stat_evsel *ps = counter->stats;
|
||||
int aggr_idx = perf_cpu_map__idx(evsel__cpus(counter), cpu);
|
||||
int aggr_idx = 0;
|
||||
|
||||
if (aggr_idx < 0)
|
||||
if (!perf_cpu_map__has(evsel__cpus(counter), cpu))
|
||||
continue;
|
||||
|
||||
cpu_aggr_map__for_each_idx(aggr_idx, config->aggr_map) {
|
||||
if (config->aggr_map->map[aggr_idx].cpu.cpu == cpu.cpu)
|
||||
break;
|
||||
}
|
||||
|
||||
os->evsel = counter;
|
||||
os->id = aggr_cpu_id__cpu(cpu, /*data=*/NULL);
|
||||
if (first) {
|
||||
|
Loading…
Reference in New Issue
Block a user