Re: [PATCH 0/7] generate full callchain cursor entries for inlined frames

From: Namhyung Kim
Date: Mon May 22 2017 - 05:06:53 EST


Hi Milian,

On Thu, May 18, 2017 at 10:05:36PM +0200, Milian Wolff wrote:
> On Donnerstag, 18. Mai 2017 21:34:04 CEST Milian Wolff wrote:
> > This series of patches completely reworks the way inline frames are handled.
> > Instead of querying for the inline nodes on-demand in the individual tools,
> > we now create proper callchain nodes for inlined frames. The advantages
> > this approach brings are numerous:
> >
> > - less duplicated code in the individual browser
> > - aggregated cost for inlined frames for the --children top-down list
> > - various bug fixes that arose from querying for a srcline/symbol based on
> > the IP of a sample, which will always point to the last inlined frame
> > instead of the corresponding non-inlined frame
> > - overall much better support for visualizing cost for heavily-inlined C++
> > code, which simply was confusing and unreliably before
> > - srcline honors the global setting as to whether full paths or basenames
> > should be shown
> >
> > For comparison, below lists the output before and after for `perf script`
> > and `perf report`. The example file I used to generate the perf data is:
>
> And of course shortly after sending this patch series I notice the first
> issues ;-) The new behavior shows confusing results for `-g function` because
> match_chain uses sym->start. I fixed this locally to compare the actual
> function name if either of the two symbols is an inlined fake symbol:

Why not making the fake symbol has start addr of the sample IP and
length of 1. The histogram sort code also compares the sym->start
which might confuse the output of the children mode too IMHO.

Thanks,
Namhyung


>
> https://github.com/milianw/linux/commit/
> a1fa4486c19976f36d6ee7df263676e888c2bdb9
>
> Before resending this whole series, it would be great if people could review
> the stuff in here such that I know whether I'm on the right track.
>
> You can checkout my clone from github for quick testing:
>
> https://github.com/milianw/linux/commits/wip/distinguish-inliners
>
> Thanks
>
> --
> Milian Wolff | milian.wolff@xxxxxxxx | Software Engineer
> KDAB (Deutschland) GmbH&Co KG, a KDAB Group company
> Tel: +49-30-521325470
> KDAB - The Qt Experts