Re: [PATCH 2/2] perf, tools: Don't force MetricExprs to lower case

From: Wangnan (F)
Date: Thu Oct 12 2017 - 11:38:42 EST




On 2017/10/9 22:39, Jiri Olsa wrote:
On Mon, Oct 09, 2017 at 11:12:58AM -0300, Arnaldo Carvalho de Melo wrote:
Em Mon, Oct 09, 2017 at 07:07:29AM -0700, Andi Kleen escreveu:
On Mon, Oct 09, 2017 at 03:41:51PM +0200, Jiri Olsa wrote:
On Wed, Oct 04, 2017 at 09:27:11AM -0700, Andi Kleen wrote:
On Wed, Oct 04, 2017 at 12:30:52PM +0200, Jiri Olsa wrote:
On Tue, Oct 03, 2017 at 01:06:05PM -0300, Arnaldo Carvalho de Melo wrote:
Em Tue, Sep 12, 2017 at 12:56:43PM -0700, Andi Kleen escreveu:
From: Andi Kleen <ak@xxxxxxxxxxxxxxx>

There are still problems with BPF misinterpreting some events
that include .c. An earlier fix made it work for stand alone
aliases, but it still fails for more complex constructs.
Hi Wang, Jiri,

Can you please take a look at this and see if there is something
we can do to help Andi?

- Arnaldo
REJECT keeps trying and trying a shorter string until
.c is matched and it appears like a valid BPF path.

% perf stat -e cpu/uops_executed.core,cmask=1/ true
bpf: builtin compilation failed: -95, try external compiler
ERROR: problems with path cpu/uops_executed.c: No such file or directory
event syntax error: 'cpu/uops_executed.core,cmask=1/'
\___ Failed to load cpu/uops_executed.c from source: Error when compiling BPF scriptlet

I tried to fix it, but it exceeds my flex knowledge, because
REJECT does not interact well with BEGIN states.

The BPF syntax in its current form really causes an ambigious
grammar.
right, it looks like we allow whole path (including / char)
for BPF file, which messes up with out pmu/.../ syntax

do we need that? (Cc-ed some bpf folks)

if not attached patch seems to fix things.. otherwise
we need to come up with another fix
I tried similar patches, but I always ran into more complex
situations where it still matched incorrectly.

e.g. try it with cpu/uops_executed.core,... vs uops_executed.core
hm, both works for me with the change:

perf stat -e cpu/uops_executed.core/ ls
perf stat -e uops_executed.core ls
Ok. If it works it's fine for me.
well it works, but it means that bpf file cannot contains any directory
part.. which im not sure is ok with bpf folks ;-) anyone?

Sorry I didn't see this thread these days.

Do you think adding a special escape character to suppress BPF
name parsing in a event is a good idea? for example:

% perf stat -e cpu/uops_executed.core,cmask=1/ true
bpf: builtin compilation failed: -95, try external compiler
ERROR: problems with path cpu/uops_executed.c: No such file or directory
event syntax error: 'cpu/uops_executed.core,cmask=1/'
\___ Failed to load cpu/uops_executed.c from source: Error when compiling BPF scriptlet. Add a leading '@' to avoid BPF syntax

% perf stat -e @cpu/uops_executed.core,cmask=1/ true
...