diff options
Diffstat (limited to 'tools/perf/util/stat-display.c')
| -rw-r--r-- | tools/perf/util/stat-display.c | 24 | 
1 files changed, 21 insertions, 3 deletions
diff --git a/tools/perf/util/stat-display.c b/tools/perf/util/stat-display.c index 8c61f8627ebc..bfc1d705f437 100644 --- a/tools/perf/util/stat-display.c +++ b/tools/perf/util/stat-display.c @@ -201,6 +201,9 @@ static void print_aggr_id_std(struct perf_stat_config *config,  		snprintf(buf, sizeof(buf), "S%d-D%d-L%d-ID%d",  			 id.socket, id.die, id.cache_lvl, id.cache);  		break; +	case AGGR_CLUSTER: +		snprintf(buf, sizeof(buf), "S%d-D%d-CLS%d", id.socket, id.die, id.cluster); +		break;  	case AGGR_DIE:  		snprintf(buf, sizeof(buf), "S%d-D%d", id.socket, id.die);  		break; @@ -251,6 +254,10 @@ static void print_aggr_id_csv(struct perf_stat_config *config,  		fprintf(config->output, "S%d-D%d-L%d-ID%d%s%d%s",  			id.socket, id.die, id.cache_lvl, id.cache, sep, aggr_nr, sep);  		break; +	case AGGR_CLUSTER: +		fprintf(config->output, "S%d-D%d-CLS%d%s%d%s", +			id.socket, id.die, id.cluster, sep, aggr_nr, sep); +		break;  	case AGGR_DIE:  		fprintf(output, "S%d-D%d%s%d%s",  			id.socket, id.die, sep, aggr_nr, sep); @@ -300,6 +307,10 @@ static void print_aggr_id_json(struct perf_stat_config *config,  		fprintf(output, "\"cache\" : \"S%d-D%d-L%d-ID%d\", \"aggregate-number\" : %d, ",  			id.socket, id.die, id.cache_lvl, id.cache, aggr_nr);  		break; +	case AGGR_CLUSTER: +		fprintf(output, "\"cluster\" : \"S%d-D%d-CLS%d\", \"aggregate-number\" : %d, ", +			id.socket, id.die, id.cluster, aggr_nr); +		break;  	case AGGR_DIE:  		fprintf(output, "\"die\" : \"S%d-D%d\", \"aggregate-number\" : %d, ",  			id.socket, id.die, aggr_nr); @@ -560,7 +571,7 @@ static void print_metric_only(struct perf_stat_config *config,  	if (color)  		mlen += strlen(color) + sizeof(PERF_COLOR_RESET) - 1; -	color_snprintf(str, sizeof(str), color ?: "", fmt, val); +	color_snprintf(str, sizeof(str), color ?: "", fmt ?: "", val);  	fprintf(out, "%*s ", mlen, str);  	os->first = false;  } @@ -1126,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) { @@ -1248,6 +1264,7 @@ static void print_header_interval_std(struct perf_stat_config *config,  	case AGGR_NODE:  	case AGGR_SOCKET:  	case AGGR_DIE: +	case AGGR_CLUSTER:  	case AGGR_CACHE:  	case AGGR_CORE:  		fprintf(output, "#%*s %-*s cpus", @@ -1550,6 +1567,7 @@ void evlist__print_counters(struct evlist *evlist, struct perf_stat_config *conf  	switch (config->aggr_mode) {  	case AGGR_CORE:  	case AGGR_CACHE: +	case AGGR_CLUSTER:  	case AGGR_DIE:  	case AGGR_SOCKET:  	case AGGR_NODE:  | 
