Re: [PATCH 1/4] perf, tools: Add support for prepending LBRs to the callstack

Arnaldo Carvalho de Melo
2014-01-11T19:19:13Z

Em Sat, Jan 11, 2014 at 04:16:57PM -0300, Arnaldo Carvalho de Melo escreveu:
> Em Sat, Jan 11, 2014 at 06:58:16PM +0100, Andi Kleen escreveu:
> > On Sat, Jan 11, 2014 at 04:36:14PM +0100, Jiri Olsa wrote:
> > > On Fri, Jan 10, 2014 at 04:32:03AM -0800, Andi Kleen wrote:
> > > > From: Andi Kleen <ak@linux.intel.com>
> > > >
> > > > I never found the default LBR display mode which generates histograms
> > > > of individual branches particularly useful.
> > > >
> > > > This implements an alternative mode that creates histograms over complete
> > > > branch traces, instead of individual branches, similar to how normal
> > > > callgraphs are handled. This is done by putting it in
> > > > front of the normal callgraph and then using the normal callgraph
> > > > histogram infrastructure to unify them.
> > > >
> > > > This way in complex functions we can understand the control flow
> > > > that lead to a particular sample.
> > > >
> > > > The default output is unchanged.
> > > >
> > > > This is only implemented in perf report, no change to record
> > > > or anywhere else.
> > > >
> > > > This adds the basic code to report:
> > > > - add a new "branch" option to the -g option parser to enable this mode
> > > > - when the flag is set include the LBR into the callstack in machine.c.
> > > > The rest of the history code is unchanged and doesn't know the difference
> > > > between LBR entry and normal call entry.
> > >
> > > sounds like nice idea, but I could not get the patchset applied
> > > on acme's perf/core
> >
> > It was on Linus master.
> >
> > I tried to rebase on perf/core, but it seems to be totally broken by
> > itself. All the config tests fail on my opensuse system.
> >
> > Arnaldo?
>
> Oops, checking on some systems...

What was your build command line?

Here, on a f18 system it works with these:

$ make -C tools/perf O=/tmp/build/perf install

$ cd tools/perf ; make

Trying on another system...

- Arnaldo

> > Auto-detecting system features:
> > ... backtrace: [ OFF ]
> > ... dwarf: [ OFF ]
> > ... fortify-source: [ OFF ]
> > ... glibc: [ OFF ]
> > ... gtk2: [ OFF ]
> > ... gtk2-infobar: [ OFF ]
> > ... libaudit: [ OFF ]
> > ... libbfd: [ OFF ]
> > ... libelf: [ OFF ]
> > ... libelf-getphdrnum: [ OFF ]
> > ... libelf-mmap: [ OFF ]
> > ... libnuma: [ OFF ]
> > ... libperl: [ OFF ]
> > ... libpython: [ OFF ]
> > ... libpython-version: [ OFF ]
> > ... libslang: [ OFF ]
> > ... libunwind: [ OFF ]
> > ... on-exit: [ OFF ]
> > ... stackprotector-all: [ OFF ]
> > ... timerfd: [ OFF ]
> >
> > config/Makefile:282: *** No gnu/libc-version.h found, please install
> > glibc-dev[el]/glibc-static. Stop.
> > make: *** [all] Error 2
> >
> > -Andi