* [PATCH v2] perf stat: Update event skip condition
@ 2022-12-06 17:58 Namhyung Kim
2022-12-07 17:37 ` Arnaldo Carvalho de Melo
0 siblings, 1 reply; 2+ messages in thread
From: Namhyung Kim @ 2022-12-06 17:58 UTC (permalink / raw)
To: Arnaldo Carvalho de Melo, Jiri Olsa
Cc: Ingo Molnar, Peter Zijlstra, LKML, Ian Rogers, Adrian Hunter,
linux-perf-users, Athira Rajeev, Kan Liang, Leo Yan, Andi Kleen,
James Clark, Xing Zhengjun, Michael Petlan
In print_counter_aggrdata(), it skips some events that has no aggregate
count. It's actually for system-wide per-thread mode and merged uncore
and hybrid events.
Let's update the condition to check them explicitly.
Fixes: 91f85f98da7a ("Display event stats using aggr counts")
Reported-by: Athira Rajeev <atrajeev@linux.vnet.ibm.com>
Acked-by: Athira Rajeev <atrajeev@linux.vnet.ibm.com>
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
---
tools/perf/util/stat-display.c | 19 +++++++++----------
1 file changed, 9 insertions(+), 10 deletions(-)
diff --git a/tools/perf/util/stat-display.c b/tools/perf/util/stat-display.c
index 847acdb5dc40..a45aacc9df64 100644
--- a/tools/perf/util/stat-display.c
+++ b/tools/perf/util/stat-display.c
@@ -814,7 +814,8 @@ static void print_counter_aggrdata(struct perf_stat_config *config,
os->nr = aggr->nr;
os->evsel = counter;
- if (counter->supported && aggr->nr == 0)
+ /* Skip already merged uncore/hybrid events */
+ if (counter->merged_stat)
return;
uniquify_counter(config, counter);
@@ -823,6 +824,13 @@ static void print_counter_aggrdata(struct perf_stat_config *config,
ena = aggr->counts.ena;
run = aggr->counts.run;
+ /*
+ * Skip value 0 when enabling --per-thread globally, otherwise it will
+ * have too many 0 output.
+ */
+ if (val == 0 && config->aggr_mode == AGGR_THREAD && config->system_wide)
+ return;
+
if (!metric_only) {
if (config->json_output)
fputc('{', output);
@@ -899,9 +907,6 @@ static void print_aggr(struct perf_stat_config *config,
print_metric_begin(config, evlist, os, s);
evlist__for_each_entry(evlist, counter) {
- if (counter->merged_stat)
- continue;
-
print_counter_aggrdata(config, counter, s, os);
}
print_metric_end(config, os);
@@ -928,9 +933,6 @@ static void print_aggr_cgroup(struct perf_stat_config *config,
print_metric_begin(config, evlist, os, s);
evlist__for_each_entry(evlist, counter) {
- if (counter->merged_stat)
- continue;
-
if (counter->cgrp != os->cgrp)
continue;
@@ -950,9 +952,6 @@ static void print_counter(struct perf_stat_config *config,
if (!config->aggr_map)
return;
- if (counter->merged_stat)
- return;
-
for (s = 0; s < config->aggr_map->nr; s++) {
print_counter_aggrdata(config, counter, s, os);
}
--
2.39.0.rc0.267.gcb52ba06e7-goog
^ permalink raw reply related [flat|nested] 2+ messages in thread* Re: [PATCH v2] perf stat: Update event skip condition
2022-12-06 17:58 [PATCH v2] perf stat: Update event skip condition Namhyung Kim
@ 2022-12-07 17:37 ` Arnaldo Carvalho de Melo
0 siblings, 0 replies; 2+ messages in thread
From: Arnaldo Carvalho de Melo @ 2022-12-07 17:37 UTC (permalink / raw)
To: Namhyung Kim
Cc: Jiri Olsa, Ingo Molnar, Peter Zijlstra, LKML, Ian Rogers,
Adrian Hunter, linux-perf-users, Athira Rajeev, Kan Liang,
Leo Yan, Andi Kleen, James Clark, Xing Zhengjun, Michael Petlan
Em Tue, Dec 06, 2022 at 09:58:04AM -0800, Namhyung Kim escreveu:
> In print_counter_aggrdata(), it skips some events that has no aggregate
> count. It's actually for system-wide per-thread mode and merged uncore
> and hybrid events.
>
> Let's update the condition to check them explicitly.
Thanks, applied.
- Arnaldo
> Fixes: 91f85f98da7a ("Display event stats using aggr counts")
> Reported-by: Athira Rajeev <atrajeev@linux.vnet.ibm.com>
> Acked-by: Athira Rajeev <atrajeev@linux.vnet.ibm.com>
> Signed-off-by: Namhyung Kim <namhyung@kernel.org>
> ---
> tools/perf/util/stat-display.c | 19 +++++++++----------
> 1 file changed, 9 insertions(+), 10 deletions(-)
>
> diff --git a/tools/perf/util/stat-display.c b/tools/perf/util/stat-display.c
> index 847acdb5dc40..a45aacc9df64 100644
> --- a/tools/perf/util/stat-display.c
> +++ b/tools/perf/util/stat-display.c
> @@ -814,7 +814,8 @@ static void print_counter_aggrdata(struct perf_stat_config *config,
> os->nr = aggr->nr;
> os->evsel = counter;
>
> - if (counter->supported && aggr->nr == 0)
> + /* Skip already merged uncore/hybrid events */
> + if (counter->merged_stat)
> return;
>
> uniquify_counter(config, counter);
> @@ -823,6 +824,13 @@ static void print_counter_aggrdata(struct perf_stat_config *config,
> ena = aggr->counts.ena;
> run = aggr->counts.run;
>
> + /*
> + * Skip value 0 when enabling --per-thread globally, otherwise it will
> + * have too many 0 output.
> + */
> + if (val == 0 && config->aggr_mode == AGGR_THREAD && config->system_wide)
> + return;
> +
> if (!metric_only) {
> if (config->json_output)
> fputc('{', output);
> @@ -899,9 +907,6 @@ static void print_aggr(struct perf_stat_config *config,
> print_metric_begin(config, evlist, os, s);
>
> evlist__for_each_entry(evlist, counter) {
> - if (counter->merged_stat)
> - continue;
> -
> print_counter_aggrdata(config, counter, s, os);
> }
> print_metric_end(config, os);
> @@ -928,9 +933,6 @@ static void print_aggr_cgroup(struct perf_stat_config *config,
> print_metric_begin(config, evlist, os, s);
>
> evlist__for_each_entry(evlist, counter) {
> - if (counter->merged_stat)
> - continue;
> -
> if (counter->cgrp != os->cgrp)
> continue;
>
> @@ -950,9 +952,6 @@ static void print_counter(struct perf_stat_config *config,
> if (!config->aggr_map)
> return;
>
> - if (counter->merged_stat)
> - return;
> -
> for (s = 0; s < config->aggr_map->nr; s++) {
> print_counter_aggrdata(config, counter, s, os);
> }
> --
> 2.39.0.rc0.267.gcb52ba06e7-goog
--
- Arnaldo
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2022-12-07 17:38 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-12-06 17:58 [PATCH v2] perf stat: Update event skip condition Namhyung Kim
2022-12-07 17:37 ` 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.