Re: [PATCH 2/6] perf, tools, stat: Implement CSV metrics output

From: Arnaldo Carvalho de Melo
Date: Mon Feb 29 2016 - 09:44:20 EST


Em Mon, Feb 29, 2016 at 11:20:48AM +0100, Jiri Olsa escreveu:
> On Fri, Feb 26, 2016 at 04:27:57PM -0800, Andi Kleen wrote:
> > From: Andi Kleen <ak@xxxxxxxxxxxxxxx>
> >
> > Now support CSV output for metrics. With the new output callbacks
> > this is relatively straight forward by creating new callbacks.
> >
> > This allows to easily plot metrics from CSV files.
> >
> > The new line callback needs to know the number of fields to skip them
> > correctly
> >
> > Example output before:
> >
> > % perf stat -x, true
> > 0.200687,,task-clock,200687,100.00
> > 0,,context-switches,200687,100.00
> > 0,,cpu-migrations,200687,100.00
> > 40,,page-faults,200687,100.00
> > 730871,,cycles,203601,100.00
> > 551056,,stalled-cycles-frontend,203601,100.00
> > <not supported>,,stalled-cycles-backend,0,100.00
> > 385523,,instructions,203601,100.00
> > 78028,,branches,203601,100.00
> > 3946,,branch-misses,203601,100.00
> >
> > After:
> >
> > % perf stat -x, true
> > .502457,,task-clock,502457,100.00,0.485,CPUs utilized
> > 0,,context-switches,502457,100.00,0.000,K/sec
> > 0,,cpu-migrations,502457,100.00,0.000,K/sec
> > 45,,page-faults,502457,100.00,0.090,M/sec
> > 644692,,cycles,509102,100.00,1.283,GHz
> > 423470,,stalled-cycles-frontend,509102,100.00,65.69,frontend cycles idle
> > <not supported>,,stalled-cycles-backend,0,100.00,,,,
> > 492701,,instructions,509102,100.00,0.76,insn per cycle
> > ,,,,,0.86,stalled cycles per insn
> > 97767,,branches,509102,100.00,194.578,M/sec
> > 4788,,branch-misses,509102,100.00,4.90,of all branches
> >
> > Two new fields are added: metric value and metric name.
>
> I'm still getting the empty line:

Ditto here.

> [jolsa@krava perf]$ ./perf stat -x, true
> 0.389590,,task-clock,389590,100.00,0.479,CPUs utilized
> 0,,context-switches,389590,100.00,0.000,K/sec
> 0,,cpu-migrations,389590,100.00,0.000,K/sec
> 43,,page-faults,389590,100.00,0.110,M/sec
> 536038,,cycles,393283,100.00,1.376,GHz
> 429548,,instructions,393283,100.00,0.80,insn per cycle
> ,,,,,,,,
> 85012,,branches,393283,100.00,218.209,M/sec
> 3600,,branch-misses,393283,100.00,4.23,of all branches
>
> it's not enough just not to include stalled cycles events
> in case they are not supported, like you do in patch 1
>
> perf_stat__print_shadow_stats prints stalled cycles
> data within instruction event case, so you need to check
> for stalled cycles in evlist in there
>
> we have pointer to the evlist in each evsel, so it should be easy
>
> thanks,
> jirka