Re: [PATCH 10/13] perf, tools, stat: Output JSON MetricExpr metric

From: Jiri Olsa
Date: Tue Mar 21 2017 - 10:48:59 EST


On Mon, Mar 20, 2017 at 01:17:08PM -0700, Andi Kleen wrote:
> From: Andi Kleen <ak@xxxxxxxxxxxxxxx>
>
> Add generic infrastructure to perf stat to output ratios for "MetricExpr"
> entries in the event lists. Many events are more useful as ratios
> than in raw form, typically some count in relation to total ticks.
>
> Transfer the MetricExpr information from the alias to the evsel.
>
> We mark the events that need to be collected for MetricExpr, and also
> link the events using them with a pointer. The code is careful
> to always prefer the right event in the same group to minimize
> multiplexing errors. At the moment only a single relation is supported.
>
> Then add a rblist to the stat shadow code that remembers stats based
> on the cpu and context.
>
> Then finally update and retrieve and print these values similarly to the
> existing hardcoded perf metrics. We use the simple expression parser
> added earlier to evaluate the expression.
>
> Normally we just output the result without further commentary,
> but for --metric-only this would lead to empty columns. So for this
> case use the original event as description.
>
> There is no attempt to automatically add the MetricExpr event,
> if it is missing, however we suggest it to the user, because
> the user tool doesn't have enough information to reliably
> construct a group that is guaranteed to schedule. So we leave
> that to the user.
>
> % perf stat -a -I 1000 -e '{unc_p_clockticks,unc_p_freq_max_os_cycles}'
> 1.000147889 800,085,181 unc_p_clockticks
> 1.000147889 93,126,241 unc_p_freq_max_os_cycles # 11.6
> 2.000448381 800,218,217 unc_p_clockticks
> 2.000448381 142,516,095 unc_p_freq_max_os_cycles # 17.8
> 3.000639852 800,243,057 unc_p_clockticks
> 3.000639852 162,292,689 unc_p_freq_max_os_cycles # 20.3
>
> % perf stat -a -I 1000 -e '{unc_p_clockticks,unc_p_freq_max_os_cycles}' --metric-only
> 1.000127077 0.9
> 2.000301436 0.7
> 3.000456379 0.0

The comment above suggest I'll see 'original event as description' in this example??

jirka