Re: [GIT PULL] Vendor events file/dir names

From: Ingo Molnar
Date: Wed Oct 19 2016 - 10:30:30 EST



* Arnaldo Carvalho de Melo <acme@xxxxxxxxxx> wrote:

> Em Tue, Oct 18, 2016 at 09:59:01AM +0200, Ingo Molnar escreveu:
> > * Arnaldo Carvalho de Melo <acme@xxxxxxxxxx> wrote:
> > > Ingo pointed out to me that in the kernel sources we do not use
> > > file/dir names with uppercase chars (look, for instance, at arch/), so I
> > > mostly scripted a conversion to lowercase and what I got is at:
>
> > > git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git perf/vendor_events
>
> > > Please let me know if you have any technical argument against
> > > this move,
> >
> > Looks good to me!
>
> So I've made this signed tag available with just what is in this branch,
> that was based off tip/perf/urgent, please pull it into the most convenient
> branch at this time,
>
> Thanks,
>
> - Arnaldo
>
> tag perf-vendor_events-for-mingo-20161018

Ok, I tried this out, and I like it mostly - the event files hierarchy looks good
and the 'perf list' output looks good, but I found a couple of usability problems
when trying to actually navigate and search the new hw events:

1)

How do I query individual hw event groups?

'perf list' output is really long now, and for example it gives me:

cache:
l1d.replacement
[L1D data line replacements]
...

If I knew that I'm interested in cache related events, I'd have expected to be
able to do:

perf list cache

or at least:

perf list cache:

or something similar to list just - but it does not seem to do the right thing.

2)

Another problem I found is that there does not appear to be an easy way to get the
long description of events. For example:

triton:~/tip> perf list longest_lat_cache.miss

List of pre-defined events (to be used in -e):

cache:
longest_lat_cache.miss
[Core-originated cacheable demand requests missed LLC]

But the event table actually includes the following as well:

"PublicDescription": "This event counts each cache miss condition for references to the last level cache.",

which is not printed anywhere. I tried the obvious 'perf list -v longest_lat_cache.miss'.

3)

If I come with an event from the vendor world, say "LONGEST_LAT_CACHE.MISS", and
try to list it, 'perf list' does not recognize it:

triton:~/tip> perf list LONGEST_LAT_CACHE.MISS

List of pre-defined events (to be used in -e):

I believe the searching of events in perf list should be case insentitive in
general.

Event parsing correctly recognizes it:

triton:~/tip> perf stat -e longest_lat_cache.miss -e LONGEST_LAT_CACHE.MISS -e LoNgEsT_lAt_CaChE.MisS sleep 1

Performance counter stats for 'sleep 1':

2,669 longest_lat_cache.miss
2,669 LONGEST_LAT_CACHE.MISS
2,669 LoNgEsT_lAt_CaChE.MisS

Thanks,

Ingo