All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jiri Olsa <jolsa@redhat.com>
To: "Jin, Yao" <yao.jin@linux.intel.com>
Cc: acme@kernel.org, jolsa@kernel.org, peterz@infradead.org,
	mingo@redhat.com, alexander.shishkin@linux.intel.com,
	Linux-kernel@vger.kernel.org, ak@linux.intel.com,
	kan.liang@intel.com, yao.jin@intel.com
Subject: Re: [PATCH v4 15/25] perf stat: Filter out unmatched aggregation for hybrid event
Date: Thu, 22 Apr 2021 12:26:22 +0200	[thread overview]
Message-ID: <YIFPTrp/Fw8uEYQg@krava> (raw)
In-Reply-To: <1da39794-bdc3-2a9d-4038-9e95e2c02660@linux.intel.com>

On Thu, Apr 22, 2021 at 11:10:54AM +0800, Jin, Yao wrote:
> Hi Jiri,
> 
> On 4/22/2021 2:29 AM, Jiri Olsa wrote:
> > On Fri, Apr 16, 2021 at 10:05:07PM +0800, Jin Yao wrote:
> > 
> > SNIP
> > 
> > > diff --git a/tools/perf/util/stat-display.c b/tools/perf/util/stat-display.c
> > > index 5255d78b1c30..15eafd249e46 100644
> > > --- a/tools/perf/util/stat-display.c
> > > +++ b/tools/perf/util/stat-display.c
> > > @@ -643,6 +643,20 @@ static void aggr_cb(struct perf_stat_config *config,
> > >   	}
> > >   }
> > > +static bool aggr_id_hybrid_matched(struct perf_stat_config *config,
> > > +				   struct evsel *counter, struct aggr_cpu_id id)
> > > +{
> > > +	struct aggr_cpu_id s;
> > > +
> > > +	for (int i = 0; i < evsel__nr_cpus(counter); i++) {
> > > +		s = config->aggr_get_id(config, evsel__cpus(counter), i);
> > > +		if (cpu_map__compare_aggr_cpu_id(s, id))
> > > +			return true;
> > > +	}
> > > +
> > > +	return false;
> > > +}
> > > +
> > >   static void print_counter_aggrdata(struct perf_stat_config *config,
> > >   				   struct evsel *counter, int s,
> > >   				   char *prefix, bool metric_only,
> > > @@ -656,6 +670,12 @@ static void print_counter_aggrdata(struct perf_stat_config *config,
> > >   	double uval;
> > >   	ad.id = id = config->aggr_map->map[s];
> > > +
> > > +	if (perf_pmu__has_hybrid() &&
> > > +	    !aggr_id_hybrid_matched(config, counter, id)) {
> > > +		return;
> > > +	}
> > > +
> > >   	ad.val = ad.ena = ad.run = 0;
> > >   	ad.nr = 0;
> > >   	if (!collect_data(config, counter, aggr_cb, &ad))
> > 
> > there's same check in aggr_cb, so it seems like we could just make check in here:
> > 
> > 	if (perf_pmu__has_hybrid() && ad.ena == 0)
> > 		return;
> > 
> > without another extra loop
> > 
> > jirka
> > 
> 
> I guess you recommended the patch like this:
> 
>  static void print_counter_aggrdata(struct perf_stat_config *config,
>                                    struct evsel *counter, int s,
>                                    char *prefix, bool metric_only,
> @@ -670,17 +656,14 @@ static void print_counter_aggrdata(struct perf_stat_config *config,
>         double uval;
> 
>         ad.id = id = config->aggr_map->map[s];
>         ad.val = ad.ena = ad.run = 0;
>         ad.nr = 0;
>         if (!collect_data(config, counter, aggr_cb, &ad))
>                 return;
> 
> +       if (perf_pmu__has_hybrid() && ad.ena == 0)
> +               return;
> +
>         nr = ad.nr;
>         ena = ad.ena;
>         run = ad.run;
> 
> Yes, it works. The test log is,

ok, great

thanks,
jirka

> 
> # perf stat --per-core -e cpu_core/cycles/ -a -- sleep 1
> 
>  Performance counter stats for 'system wide':
> 
> S0-D0-C0           2          2,341,923      cpu_core/cycles/
> S0-D0-C4           2          1,707,933      cpu_core/cycles/
> S0-D0-C8           2            845,805      cpu_core/cycles/
> S0-D0-C12          2          1,001,961      cpu_core/cycles/
> S0-D0-C16          2            932,004      cpu_core/cycles/
> S0-D0-C20          2          1,778,603      cpu_core/cycles/
> S0-D0-C24          2            804,448      cpu_core/cycles/
> S0-D0-C28          2            178,360      cpu_core/cycles/
> 
>        1.002264168 seconds time elapsed
> 
> Thanks
> Jin Yao
> 


  reply	other threads:[~2021-04-22 10:26 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-04-16 14:04 [PATCH v4 00/25] perf tool: AlderLake hybrid support series 1 Jin Yao
2021-04-16 14:04 ` [PATCH v4 01/25] tools headers uapi: Update tools's copy of linux/perf_event.h Jin Yao
2021-04-16 14:04 ` [PATCH v4 02/25] perf jevents: Support unit value "cpu_core" and "cpu_atom" Jin Yao
2021-04-16 14:04 ` [PATCH v4 03/25] perf pmu: Simplify arguments of __perf_pmu__new_alias Jin Yao
2021-04-16 14:04 ` [PATCH v4 04/25] perf pmu: Save pmu name Jin Yao
2021-04-16 14:04 ` [PATCH v4 05/25] perf pmu: Save detected hybrid pmus to a global pmu list Jin Yao
2021-04-16 14:04 ` [PATCH v4 06/25] perf pmu: Add hybrid helper functions Jin Yao
2021-04-16 14:04 ` [PATCH v4 07/25] perf stat: Uniquify hybrid event name Jin Yao
2021-04-16 14:05 ` [PATCH v4 08/25] perf parse-events: Create two hybrid hardware events Jin Yao
2021-04-16 14:05 ` [PATCH v4 09/25] perf parse-events: Create two hybrid cache events Jin Yao
2021-04-16 14:05 ` [PATCH v4 10/25] perf parse-events: Create two hybrid raw events Jin Yao
2021-04-16 14:05 ` [PATCH v4 11/25] perf parse-events: Compare with hybrid pmu name Jin Yao
2021-04-16 14:05 ` [PATCH v4 12/25] perf parse-events: Support event inside hybrid pmu Jin Yao
2021-04-21 18:29   ` Jiri Olsa
2021-04-22  1:44     ` Jin, Yao
2021-04-16 14:05 ` [PATCH v4 13/25] perf record: Create two hybrid 'cycles' events by default Jin Yao
2021-04-16 14:05 ` [PATCH v4 14/25] perf stat: Add default hybrid events Jin Yao
2021-04-21 18:29   ` Jiri Olsa
2021-04-22  2:12     ` Jin, Yao
2021-04-22 10:25       ` Jiri Olsa
2021-04-16 14:05 ` [PATCH v4 15/25] perf stat: Filter out unmatched aggregation for hybrid event Jin Yao
2021-04-21 18:29   ` Jiri Olsa
2021-04-22  3:10     ` Jin, Yao
2021-04-22 10:26       ` Jiri Olsa [this message]
2021-04-16 14:05 ` [PATCH v4 16/25] perf stat: Warn group events from different hybrid PMU Jin Yao
2021-04-16 14:05 ` [PATCH v4 17/25] perf record: Uniquify hybrid event name Jin Yao
2021-04-16 14:05 ` [PATCH v4 18/25] perf tests: Add hybrid cases for 'Parse event definition strings' test Jin Yao
2021-04-16 14:05 ` [PATCH v4 19/25] perf tests: Add hybrid cases for 'Roundtrip evsel->name' test Jin Yao
2021-04-16 14:05 ` [PATCH v4 20/25] perf tests: Skip 'Setup struct perf_event_attr' test for hybrid Jin Yao
2021-04-21 18:29   ` Jiri Olsa
2021-04-22  3:11     ` Jin, Yao
2021-04-16 14:05 ` [PATCH v4 21/25] perf tests: Support 'Track with sched_switch' " Jin Yao
2021-04-21 18:28   ` Jiri Olsa
2021-04-22  3:14     ` Jin, Yao
2021-04-16 14:05 ` [PATCH v4 22/25] perf tests: Support 'Parse and process metrics' " Jin Yao
2021-04-21 18:29   ` Jiri Olsa
2021-04-22  3:20     ` Jin, Yao
2021-04-16 14:05 ` [PATCH v4 23/25] perf tests: Support 'Session topology' " Jin Yao
2021-04-21 18:29   ` Jiri Olsa
2021-04-22  3:15     ` Jin, Yao
2021-04-16 14:05 ` [PATCH v4 24/25] perf tests: Support 'Convert perf time to TSC' " Jin Yao
2021-04-21 18:29   ` Jiri Olsa
2021-04-22  3:16     ` Jin, Yao
2021-04-16 14:05 ` [PATCH v4 25/25] perf tests: Skip 'perf stat metrics (shadow stat) test' " Jin Yao
2021-04-21  1:14 ` [PATCH v4 00/25] perf tool: AlderLake hybrid support series 1 Jin, Yao
2021-04-21 10:03   ` Jiri Olsa

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=YIFPTrp/Fw8uEYQg@krava \
    --to=jolsa@redhat.com \
    --cc=Linux-kernel@vger.kernel.org \
    --cc=acme@kernel.org \
    --cc=ak@linux.intel.com \
    --cc=alexander.shishkin@linux.intel.com \
    --cc=jolsa@kernel.org \
    --cc=kan.liang@intel.com \
    --cc=mingo@redhat.com \
    --cc=peterz@infradead.org \
    --cc=yao.jin@intel.com \
    --cc=yao.jin@linux.intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.