[PATCH] tools: perf: Report collisions in AUX records

Mathieu Poirier mathieu.poirier at linaro.org
Thu Sep 2 12:25:20 PDT 2021


On Sat, Jul 31, 2021 at 09:38:47AM +0800, Leo Yan wrote:
> On Wed, Jul 28, 2021 at 10:12:19AM +0100, Suzuki Kuruppassery Poulose wrote:
> > Just like the other flags in the AUX records, report a summary
> > of the Collisions if there were any.
> > 
> > Cc: Mike Leach <mike.leach at linaro.org>
> > Cc: Mathieu Poirier <mathieu.poirier at linaro.org>
> > Cc: Leo Yan <leo.yan at linaro.org>
> > Cc: James Clark <james.clark at arm.com>
> > Cc: Arnaldo Carvalho de Melo <acme at kernel.org>
> > Cc: Mark Rutland <mark.rutland at arm.com>
> > Cc: Jiri Olsa <jolsa at redhat.com>
> > Cc: linux-perf-users at vger.kernel.org
> > Cc: Alexander Shishkin <alexander.shishkin at linux.intel.com>
> > Signed-off-by: Suzuki K Poulose <suzuki.poulose at arm.com>
> 
> The change looks good to me:
> 
> Reviewed-by: Leo Yan <leo.yan at linaro.org>

Reviewed-by: Mathieu Poirier <mathieu.poirier at linaro.org>

> 
> > ---
> >  tools/perf/util/events_stats.h | 1 +
> >  tools/perf/util/session.c      | 9 +++++++++
> >  2 files changed, 10 insertions(+)
> > 
> > diff --git a/tools/perf/util/events_stats.h b/tools/perf/util/events_stats.h
> > index 3480bafd414b..1b0006092265 100644
> > --- a/tools/perf/util/events_stats.h
> > +++ b/tools/perf/util/events_stats.h
> > @@ -30,6 +30,7 @@ struct events_stats {
> >  	u64 total_lost_samples;
> >  	u64 total_aux_lost;
> >  	u64 total_aux_partial;
> > +	u64 total_aux_collision;
> >  	u64 total_invalid_chains;
> >  	u32 nr_events[PERF_RECORD_HEADER_MAX];
> >  	u32 nr_lost_warned;
> > diff --git a/tools/perf/util/session.c b/tools/perf/util/session.c
> > index 51f727402912..59b6c3fe0d01 100644
> > --- a/tools/perf/util/session.c
> > +++ b/tools/perf/util/session.c
> > @@ -1540,6 +1540,8 @@ static int machines__deliver_event(struct machines *machines,
> >  				evlist->stats.total_aux_lost += 1;
> >  			if (event->aux.flags & PERF_AUX_FLAG_PARTIAL)
> >  				evlist->stats.total_aux_partial += 1;
> > +			if (event->aux.flags & PERF_AUX_FLAG_COLLISION)
> > +				evlist->stats.total_aux_collision += 1;
> >  		}
> >  		return tool->aux(tool, event, sample, machine);
> >  	case PERF_RECORD_ITRACE_START:
> > @@ -1895,6 +1897,13 @@ static void perf_session__warn_about_errors(const struct perf_session *session)
> >  			    "");
> >  	}
> >  
> > +	if (session->tool->aux == perf_event__process_aux &&
> > +	    stats->total_aux_collision != 0) {
> > +		ui__warning("AUX data detected collision  %" PRIu64 " times out of %u!\n\n",
> > +			    stats->total_aux_collision,
> > +			    stats->nr_events[PERF_RECORD_AUX]);
> > +	}
> > +
> >  	if (stats->nr_unknown_events != 0) {
> >  		ui__warning("Found %u unknown events!\n\n"
> >  			    "Is this an older tool processing a perf.data "
> > -- 
> > 2.24.1
> > 



More information about the linux-arm-kernel mailing list