All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v1] perf stat: Don't display metric header for non-leader uncore events
@ 2024-05-10  5:13 Ian Rogers
  2024-05-11 15:49 ` Arnaldo Carvalho de Melo
  0 siblings, 1 reply; 2+ messages in thread
From: Ian Rogers @ 2024-05-10  5:13 UTC (permalink / raw)
  To: Peter Zijlstra, Ingo Molnar, Arnaldo Carvalho de Melo,
	Namhyung Kim, Mark Rutland, Alexander Shishkin, Jiri Olsa,
	Ian Rogers, Adrian Hunter, Kan Liang, K Prateek Nayak,
	Yicong Yang, Kaige Ye, linux-perf-users, linux-kernel

On an Intel tigerlake laptop a metric like:
```
    {
        "BriefDescription": "Test",
        "MetricExpr": "imc_free_running@data_read@ + imc_free_running@data_write@",
        "MetricGroup": "Test",
        "MetricName": "Test",
        "ScaleUnit": "6.103515625e-5MiB"
    },
```
Will have 4 events:
uncore_imc_free_running_0/data_read/
uncore_imc_free_running_0/data_write/
uncore_imc_free_running_1/data_read/
uncore_imc_free_running_1/data_write/

If aggregration is disabled with metric-only 2 column headers are
needed:
```
$ perf stat -M test --metric-only -A -a sleep 1

 Performance counter stats for 'system wide':

                  MiB  Test            MiB  Test
CPU0                 1821.0               1820.5
```
But when not, the counts aggregated in the metric leader and only 1
column should be shown:
```
$ perf stat -M test --metric-only -a sleep 1
 Performance counter stats for 'system wide':

            MiB  Test
              5909.4

       1.001258915 seconds time elapsed
```
Achieve this by skipping events that aren't metric leaders when
printing column headers and aggregation isn't disabled.

The bug is long standing, the fixes tag is set to a refactor as that
is as far back as is reasonable to backport.

Fixes: 088519f318be ("perf stat: Move the display functions to stat-display.c")
Signed-off-by: Ian Rogers <irogers@google.com>
---
 tools/perf/util/stat-display.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/tools/perf/util/stat-display.c b/tools/perf/util/stat-display.c
index ea11e3437444..bb6bbb821b5a 100644
--- a/tools/perf/util/stat-display.c
+++ b/tools/perf/util/stat-display.c
@@ -1251,6 +1251,9 @@ static void print_metric_headers(struct perf_stat_config *config,
 
 	/* Print metrics headers only */
 	evlist__for_each_entry(evlist, counter) {
+		if (config->aggr_mode != AGGR_NONE && counter->metric_leader != counter)
+			continue;
+
 		os.evsel = counter;
 
 		perf_stat__print_shadow_stats(config, counter, 0,
-- 
2.45.0.118.g7fe29c98d7-goog


^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH v1] perf stat: Don't display metric header for non-leader uncore events
  2024-05-10  5:13 [PATCH v1] perf stat: Don't display metric header for non-leader uncore events Ian Rogers
@ 2024-05-11 15:49 ` Arnaldo Carvalho de Melo
  0 siblings, 0 replies; 2+ messages in thread
From: Arnaldo Carvalho de Melo @ 2024-05-11 15:49 UTC (permalink / raw)
  To: Ian Rogers
  Cc: Peter Zijlstra, Ingo Molnar, Namhyung Kim, Mark Rutland,
	Alexander Shishkin, Jiri Olsa, Adrian Hunter, Kan Liang,
	K Prateek Nayak, Yicong Yang, Kaige Ye, linux-perf-users,
	linux-kernel

On Thu, May 09, 2024 at 10:13:09PM -0700, Ian Rogers wrote:
> Achieve this by skipping events that aren't metric leaders when
> printing column headers and aggregation isn't disabled.
> 
> The bug is long standing, the fixes tag is set to a refactor as that
> is as far back as is reasonable to backport.

Thanks, applied to perf-tools-next,

- Arnaldo
 
> Fixes: 088519f318be ("perf stat: Move the display functions to stat-display.c")
> Signed-off-by: Ian Rogers <irogers@google.com>
> ---
>  tools/perf/util/stat-display.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/tools/perf/util/stat-display.c b/tools/perf/util/stat-display.c
> index ea11e3437444..bb6bbb821b5a 100644
> --- a/tools/perf/util/stat-display.c
> +++ b/tools/perf/util/stat-display.c
> @@ -1251,6 +1251,9 @@ static void print_metric_headers(struct perf_stat_config *config,
>  
>  	/* Print metrics headers only */
>  	evlist__for_each_entry(evlist, counter) {
> +		if (config->aggr_mode != AGGR_NONE && counter->metric_leader != counter)
> +			continue;
> +
>  		os.evsel = counter;
>  
>  		perf_stat__print_shadow_stats(config, counter, 0,
> -- 
> 2.45.0.118.g7fe29c98d7-goog

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2024-05-11 15:49 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-05-10  5:13 [PATCH v1] perf stat: Don't display metric header for non-leader uncore events Ian Rogers
2024-05-11 15:49 ` Arnaldo Carvalho de Melo

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.