Re: [PATCH V3 05/25] perf tools: Hit all build ids when AUX area tracing

Adrian Hunter
2015-04-29T12:26:17Z

On 28/04/15 15:45, Jiri Olsa wrote:
> On Fri, Apr 24, 2015 at 10:29:47PM +0300, Adrian Hunter wrote:
>> We need to include all buildids when a perf.data
>> file contains AUX area tracing data because we
>> do not decode the trace for that purpose because
>> it would take too long.
>>
>> Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
>> ---
>> tools/perf/builtin-buildid-list.c | 9 +++++++++
>> tools/perf/builtin-inject.c | 8 +++++++-
>> tools/perf/builtin-record.c | 10 +++++++++-
>> 3 files changed, 25 insertions(+), 2 deletions(-)
>>
>> diff --git a/tools/perf/builtin-buildid-list.c b/tools/perf/builtin-buildid-list.c
>> index feb420f..9fe93c8 100644
>> --- a/tools/perf/builtin-buildid-list.c
>> +++ b/tools/perf/builtin-buildid-list.c
>> @@ -69,6 +69,15 @@ static int perf_session__list_build_ids(bool force, bool with_hits)
>> session = perf_session__new(&file, false, &build_id__mark_dso_hit_ops);
>> if (session == NULL)
>> return -1;
>> +
>> + /*
>> + * We take all buildids when the file contains AUX area tracing data
>> + * because we do not decode the trace because it would take too long.
>> + */
>> + if (!perf_data_file__is_pipe(&file) &&
>> + perf_header__has_feat(&session->header, HEADER_AUXTRACE))
>> + with_hits = false;
>
> when there's auxtrace in the perf.data, all the dsos would have
> hits (as per builtin-record.c change below) and be display anyway,
> so it seems we dont need this hunk?

When there's auxtrace in the perf.data file, then all dsos would be recorded
with build ids in the build_id section.

This hunk causes:
1) no session processing to find hits
2) print all even if they have no hits

>
> jirka
>
> SNIP
>
>> * synthesized hardware events, so clear the feature flag.
>> diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c
>> index c8c784c..4d0ebbb 100644
>> --- a/tools/perf/builtin-record.c
>> +++ b/tools/perf/builtin-record.c
>> @@ -620,8 +620,16 @@ out_child:
>> if (!err && !file->is_pipe) {
>> rec->session->header.data_size += rec->bytes_written;
>>
>> - if (!rec->no_buildid)
>> + if (!rec->no_buildid) {
>> process_buildids(rec);
>> + /*
>> + * We take all buildids when the file contains
>> + * AUX area tracing data because we do not decode the
>> + * trace because it would take too long.
>> + */
>> + if (rec->opts.full_auxtrace)
>> + dsos__hit_all(rec->session);
>> + }
>> perf_session__write_header(rec->session, rec->evlist, fd, true);
>> }
>>
>> --
>> 1.9.1
>>
>
>