lkml.org 
[lkml]   [2012]   [Mar]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH] perf tools: Fix ordering with unstable tsc
On Wed, Mar 14, 2012 at 04:55:35PM -0300, Arnaldo Carvalho de Melo wrote:
> Em Sat, Feb 18, 2012 at 05:50:37PM +0100, Frederic Weisbecker escreveu:
> > +static int alloc_cpus_timestamp_array(struct perf_session *s,
> > + struct perf_sample *sample,
> > + struct ordered_samples *os)
> > +{
> > + int i;
> > + int nr_cpus;
> > +
> > + if (sample->cpu < s->nr_cpus)
> > + return 0;
>
>
> Shouldn't we try to robustify this checking against HEADER_NRCPUS (if
> present)?
>
> I just tried to see how to find that info, but unfortunately it just
> prints it when calling perf_header__fprintf_info, it can be made to
> work.
>
> I need to work on storing those values in a struct accessible thru
> perf_session or perf_evlist, so that I can show that info on the TUI,
> perhaps at that time I can robustify this way.

Yeah I thought about that too. I can try to make that working.
I just thought this was an optimization that I could later add (ie: first
try to see if the core idea of the patch is accepted).

Of course the real long term optimization is going to have one file per
CPU. There, the ordering will be much easier and deterministically
correct.

>
> > +
> > + nr_cpus = sample->cpu + 1;
> > +
> > + if (!os->last_cpu_timestamp)
> > + os->last_cpu_timestamp = malloc(sizeof(u64) * nr_cpus);
> > + else
> > + os->last_cpu_timestamp = realloc(os->last_cpu_timestamp,
> > + sizeof(u64) * nr_cpus);
>
> If realloc fails we return -ENOMEM, but leak the old buffer.

Doh! the common trap with realloc...

>
> At some point we can have in the TUI/GUI a way for the user to ask for
> an specific perf.data file to be processed, if it fails to process due
> to the above realloc, we'll continue, allowing other perf.data files to
> be processed, but will have this leak.

Ok. Will fix.

Thanks.


\
 
 \ /
  Last update: 2012-03-22 01:13    [W:0.084 / U:0.288 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site