All of lore.kernel.org
 help / color / mirror / Atom feed
From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Namhyung Kim <namhyung@kernel.org>
Cc: Jiri Olsa <jolsa@redhat.com>, Ingo Molnar <mingo@kernel.org>,
	Peter Zijlstra <peterz@infradead.org>,
	Mark Rutland <mark.rutland@arm.com>,
	Alexander Shishkin <alexander.shishkin@linux.intel.com>,
	LKML <linux-kernel@vger.kernel.org>,
	Stephane Eranian <eranian@google.com>,
	Ian Rogers <irogers@google.com>, Sam Xi <xyzsam@google.com>,
	Andi Kleen <ak@linux.intel.com>
Subject: Re: [PATCH v2 1/2] perf stat: Use proper cpu for shadow stats
Date: Fri, 27 Nov 2020 14:32:26 -0300	[thread overview]
Message-ID: <20201127173226.GO70905@kernel.org> (raw)
In-Reply-To: <20201127041404.390276-1-namhyung@kernel.org>

Em Fri, Nov 27, 2020 at 01:14:03PM +0900, Namhyung Kim escreveu:
> Currently perf stat shows some metrics (like IPC) for defined events.
> But when no aggregation mode is used (-A option), it shows incorrect
> values since it used a value from a different cpu.
> 
> Before:
> 
>   $ perf stat -aA -e cycles,instructions sleep 1
> 
>    Performance counter stats for 'system wide':
> 
>   CPU0      116,057,380      cycles
>   CPU1       86,084,722      cycles
>   CPU2       99,423,125      cycles
>   CPU3       98,272,994      cycles
>   CPU0       53,369,217      instructions      #    0.46  insn per cycle
>   CPU1       33,378,058      instructions      #    0.29  insn per cycle
>   CPU2       58,150,086      instructions      #    0.50  insn per cycle
>   CPU3       40,029,703      instructions      #    0.34  insn per cycle
> 
>        1.001816971 seconds time elapsed
> 
> So the IPC for CPU1 should be 0.38 (= 33,378,058 / 86,084,722)
> but it was 0.29 (= 33,378,058 / 116,057,380) and so on.
> 
> After:
> 
>   $ perf stat -aA -e cycles,instructions sleep 1
> 
>    Performance counter stats for 'system wide':
> 
>   CPU0      109,621,384      cycles
>   CPU1      159,026,454      cycles
>   CPU2       99,460,366      cycles
>   CPU3      124,144,142      cycles
>   CPU0       44,396,706      instructions      #    0.41  insn per cycle
>   CPU1      120,195,425      instructions      #    0.76  insn per cycle
>   CPU2       44,763,978      instructions      #    0.45  insn per cycle
>   CPU3       69,049,079      instructions      #    0.56  insn per cycle
> 
>        1.001910444 seconds time elapsed

Thanks, applied, the new 'perf test' entry in 2/2 will be merged into
perf/core, as it isn't purely a fix,

- Arnaldo
 
> Reported-by: Sam Xi <xyzsam@google.com>
> Fixes: 44d49a600259 ("perf stat: Support metrics in --per-core/socket mode")
> Reviewed-by: Andi Kleen <ak@linux.intel.com>
> Acked-by: Jiri Olsa <jolsa@redhat.com>
> Signed-off-by: Namhyung Kim <namhyung@kernel.org>
> ---
>  tools/perf/util/stat-display.c | 5 +----
>  1 file changed, 1 insertion(+), 4 deletions(-)
> 
> diff --git a/tools/perf/util/stat-display.c b/tools/perf/util/stat-display.c
> index 4b57c0c07632..a963b5b8eb72 100644
> --- a/tools/perf/util/stat-display.c
> +++ b/tools/perf/util/stat-display.c
> @@ -324,13 +324,10 @@ static int first_shadow_cpu(struct perf_stat_config *config,
>  	struct evlist *evlist = evsel->evlist;
>  	int i;
>  
> -	if (!config->aggr_get_id)
> -		return 0;
> -
>  	if (config->aggr_mode == AGGR_NONE)
>  		return id;
>  
> -	if (config->aggr_mode == AGGR_GLOBAL)
> +	if (!config->aggr_get_id)
>  		return 0;
>  
>  	for (i = 0; i < evsel__nr_cpus(evsel); i++) {
> -- 
> 2.29.2.454.gaff20da3a2-goog
> 

-- 

- Arnaldo

      parent reply	other threads:[~2020-11-27 17:32 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-11-27  4:14 [PATCH v2 1/2] perf stat: Use proper cpu for shadow stats Namhyung Kim
2020-11-27  4:14 ` [PATCH v2 2/2] perf test: Add shadow stat test Namhyung Kim
2020-11-30 11:59   ` Arnaldo Carvalho de Melo
2020-11-27 17:32 ` Arnaldo Carvalho de Melo [this message]

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=20201127173226.GO70905@kernel.org \
    --to=acme@kernel.org \
    --cc=ak@linux.intel.com \
    --cc=alexander.shishkin@linux.intel.com \
    --cc=eranian@google.com \
    --cc=irogers@google.com \
    --cc=jolsa@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=mingo@kernel.org \
    --cc=namhyung@kernel.org \
    --cc=peterz@infradead.org \
    --cc=xyzsam@google.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.