Re: [PATCH 11/11] perf, tools, stat: Add extra output of counter values with -v

From: Arnaldo Carvalho de Melo
Date: Wed Apr 06 2016 - 10:32:30 EST


Em Mon, Apr 04, 2016 at 01:41:54PM -0700, Andi Kleen escreveu:
> From: Andi Kleen <ak@xxxxxxxxxxxxxxx>
>
> Add debug output of raw counter values per CPU when
> perf stat -v is specified, together with their cpu numbers.
> This is very useful to debug problems with per core counters,
> where we can normally only see aggregated values.

Can we do it only when per CPU is in place?

[acme@jouet linux]$ perf stat -v usleep 1
task-clock: 0: 1426718 1426718 1426718
task-clock: 1426718 1426718 1426718
context-switches: 0: 3 1426718 1426718
context-switches: 3 1426718 1426718
cpu-migrations: 0: 1 1426718 1426718
cpu-migrations: 1 1426718 1426718
page-faults: 0: 52 1426718 1426718
page-faults: 52 1426718 1426718
cycles: 0: 4338775 1437628 1437628
cycles: 4338775 1437628 1437628
instructions: 0: 754838 1437628 1437628
instructions: 754838 1437628 1437628
branches: 0: 146638 1437628 1437628
branches: 146638 1437628 1437628
branch-misses: 0: 7871 1437628 1437628
branch-misses: 7871 1437628 1437628

Performance counter stats for 'usleep 1':

1.426718 task-clock (msec) # 0.370 CPUs utilized
3 context-switches # 0.002 M/sec
1 cpu-migrations # 0.701 K/sec
52 page-faults # 0.036 M/sec
4,338,775 cycles # 3.041 GHz
754,838 instructions # 0.17 insn per cycle
146,638 branches # 102.780 M/sec
7,871 branch-misses # 5.37% of all branches

0.003859416 seconds time elapsed

[acme@jouet linux]$

> Signed-off-by: Andi Kleen <ak@xxxxxxxxxxxxxxx>
> ---
> tools/perf/builtin-stat.c | 8 ++++++++
> 1 file changed, 8 insertions(+)
>
> diff --git a/tools/perf/builtin-stat.c b/tools/perf/builtin-stat.c
> index 6d8ce72cd8c1..0ee224b80056 100644
> --- a/tools/perf/builtin-stat.c
> +++ b/tools/perf/builtin-stat.c
> @@ -314,6 +314,14 @@ static int read_counter(struct perf_evsel *counter)
> return -1;
> }
> }
> +
> + if (verbose) {
> + fprintf(stat_config.output,
> + "%s: %d: %" PRIu64 " %" PRIu64 " %" PRIu64 "\n",
> + perf_evsel__name(counter),
> + cpu,
> + count->val, count->ena, count->run);
> + }
> }
> }
>
> --
> 2.5.5