Messages in this thread | | | Date | Tue, 12 Jul 2011 19:03:20 +0200 | From | Frederic Weisbecker <> | Subject | Re: [PATCH 3/6] perf: add reference time event |
| |
On Tue, Jul 12, 2011 at 10:35:21AM -0600, David Ahern wrote: > On 07/12/2011 08:30 AM, Frederic Weisbecker wrote: > > Actually you first have to face a deeper problem. events are not stored > > in order in the flow, but they are sorted from perf_session__process_events(). > > > > The bunch of sorted events is flushed periodically and sent to the consumer. > > > > See flush_sample_queue(). > > > > And this sorting is made on top of the sample->time timestamps. So events > > are first sorted on sample->time and only afterward you have access to your > > gtod tracepoint samples. But if that gtod sample has been taken after a reboot > > then its sample->time is not consistant with the rest. It is not well sorted > > and thus the reftime won't be updated at the right moment. > > I was aware of this function and the buffering /sorting it does; I have > similar code in my local analysis tool (for older perf userspace). I had > not stopped to consider the impacts on the append mode since I never use > that option. > > > So the problem is that reftime update already depends on a consistant cpu > > timestamp. > > > > I can't think about a sane way to work around that. Sorting on gtod + cpu timestamp > > is not a solution because gtod can change. > > > > I'd rather propose to refuse append mode as long as we have any timestamp. That includes > > gtod but also sample timestamps. They are buggy if we reboot. > > I'm fine with restricting append mode if samples have timestamps. In > that case the time of day reference can be added to the header per the > original patch set. The change in behavior does impact a lot of record > use cases (system wide, raw).
Yep, sounds good.
| |