Re: [PATCH 3/6] perf record: add time-of-day option

Arnaldo Carvalho de Melo
2011-03-01T17:09:50Z

Em Tue, Mar 01, 2011 at 02:07:50PM -0300, Arnaldo Carvalho de Melo escreveu:
> Em Tue, Mar 01, 2011 at 09:45:27AM -0700, David Ahern escreveu:
> > On 03/01/2011 09:37 AM, Peter Zijlstra wrote:
> > > On Tue, 2011-03-01 at 09:09 -0700, David Ahern wrote:
> > >>
> > >> I did not code it create samples of a realtime-clock event; I coded it
> > >> to add an event to the stream on demand -- whatever event the fd is
> > >> tied to.
> > >>
> > >>
> > > Well yes, but aside from you and the realtime clock stuff, who'd ever
> > > want to do this particular thing?
> >
> > One example would be a system watchdog that decided for some reason or
> > another to force an event sample because of some event it detected.
> >
> > >
> > > I'd much rather expose the whole
> > > local_clock()/perf_clock()/trace_clock() (should all be the same anyway)
> > > as a posix clock using CLOCK_TRACING or whatever would be an appropriate
> > > name.
> > >
> > > [ Since the whole thing is NMI safe it should be well possible to make a
> > > VDSO version as well. ]
> > >
> > > Anyway, once its visible as a posix clock you can sync up from
> > > userspace. And this clock is indeed wanted for other things too, like
> > > user-space tracing etc.
> > >
> >
> > And for some silly reason I sense a time trap here (pun intended) .....
> >
> > So your pushback is:
> > 1. throw out the realtime-clock event patch,
>
> Nope
>
> > 2. add a new CLOCK_TRACING type to clock_gettime with VDSO hook,
>
> Yes
>
> > 3. and use a synthesized event from userspace for snapshotting
> > perf_clock to time-of-day -- similar to what I have now, but one that
> > will guarantee a time-of-day to perf_clock correlation (versus the
> > current one which hopes that perf_clock is the monotonic clock).
>
> Nope.

I see, yeah, the very first CLOCK_REALTIME sample would be synthesized
from the return of clock_gettime(CLOCK_TRACING), all the others would
come in the event stream.

> My understanding was that for the initial gettime you use
> clock_gettime(), and then you get CLOCK_REALTIME events in the stream
> for resynch, etc.
>
> Peter?
>
> - Arnaldo