Re: [PATCH v1 1/4] perf annotate: create a new hists to manage multiple events samples

From: Jin, Yao
Date: Wed Sep 13 2017 - 21:04:10 EST




On 9/11/2017 9:33 AM, Jin, Yao wrote:
>
>
> On 9/8/2017 9:43 PM, Arnaldo Carvalho de Melo wrote:
>> Em Wed, Aug 16, 2017 at 06:18:33PM +0800, Jin Yao escreveu:
>>> An issue is found during using perf annotate.
>>>
>>> perf record -e cycles,branches ...
>>> perf annotate main --stdio
>>>
>>> The result only shows cycles. It should show both cycles and
>>> branches on the left side. It works with "--group", but need
>>> this to work even without groups.
>>>
>>> In current design, the hists is per event. So we need a new
>>> hists to manage the samples for multiple events and use a new
>>> hist_event data structure to save the map/symbol information
>>> for per event.
>> Humm, why do we need another hists? Don't we have one per evsel, don't
>> we have a evlist from where to get all of those evsels, can't we just
>> use that to add one column per evsel?
>>
>> - Arnaldo
>> Â
>
> Hi Arnaldo,
>
> I'm considering a case.
>
> Suppose we sample 2 events ("branches" and "cache-misses"). The samples of "branches" are hit in function A and the samples of "cache-misses" are hit in function B.
>
> The branches evsel has one hists and cache-misses evsel has another hists.
>
> The hists of branches evsel has one hist-entry which stands for the function A symbol. The hists of cache-misses evsel has one hist-entry which stands for the function B symbol.
>
> If we start to show the instructions in function B from cache-misses evsel, we will lose the function A.
>
> Because even if we get the branches evsel from the link in cache-misses evsel, but the function A is before function B and function B has been displayed yet, so the function A is lost.
>
> Considering the number of events can be greater than 2, the code will be much more complicated. So using a global hists should be an easy solution.
>
> Thanks
> Jin Yao
>

Hi Arnaldo,

Could the solution of using a new hists for multiple events be accepted?

Or anything I should update in the patches?

Thanks
Jin Yao