All of lore.kernel.org
 help / color / mirror / Atom feed
From: David Ahern <dsahern@gmail.com>
To: Saumil Merchant <msaumil@gmail.com>,
	john.stultz@linaro.org, Thomas Gleixner <tglx@linutronix.de>
Cc: linux-perf-users@vger.kernel.org, Stephane Eranian <eranian@google.com>
Subject: Re: perf trace timestamps
Date: Wed, 21 Nov 2012 08:54:54 -0700	[thread overview]
Message-ID: <50ACF94E.5010508@gmail.com> (raw)
In-Reply-To: <loom.20121120T122816-305@post.gmane.org>

On 11/20/12 4:33 AM, Saumil Merchant wrote:
> David Ahern <dsahern <at> gmail.com> writes:
>>>
>>> My original impression was that this timestamp (eg, 1746678.550895) would
>>> with time reported clk_gettime(MONOTONIC,...) function, but it does not. My
>>> function above prints out timestamps from clk_gettime(MONOTONIC,..)
>>> and there is a delta of >15 mins.
>>>
>>> Here is the printout on console:
>>> CLKTIME (MONOTONIC):  1748132.102228068
>>
>> At one time many, many releases ago perf timestamps did align with the
>> monotonic clock. I have tried (unsuccessfully) to get an option into
>> perf to correlate perf events with time-of-day stamps.
>>
>
>
> Since clk_gettime and perf timestamps do not align, I tried synchronizing
> timestamps at start my code. I used a syscall that I can track in the perf
> trace.  I can then normalize perf trace output timestamps using the delta
> between perf timestamp and clk_gettime timestamp for the syscall.  I chose to
> use nanosleep for this.  While doing this I realized that this normalizing
> delta between the perf and clk_gettime timestamps linearly increases with
> time.  Here is a simple C code that I used to check this behavior:
>
> #include <stdio.h>
> #include <stdlib.h>
> #include <time.h>
>
> int ITERATIONS=600;
> struct timespec sleepy, t1, t2;
>
> int main(int argc, char **argv) {
>      int i;
>
>      sleepy.tv_sec=0;
>      sleepy.tv_nsec=1000000;
>
>      for(i=0; i<ITERATIONS; i++) {
>          clock_gettime(CLOCK_MONOTONIC,&t1);
>          nanosleep(&sleepy,NULL);
>          clock_gettime(CLOCK_MONOTONIC,&t2);
>          printf("%d.%09d, %d.%09d\n",
>                 t1.tv_sec,t1.tv_nsec,t2.tv_sec,t2.tv_nsec);
>      }
>
>      return(0);
> }
>
> I correlated entry (t1) clk_gettime timestamps with entry nanosleep timestamps
> from perf.  Same with he exit timestamps.
> i.e. two arrays of "entry_clk_gettime - entry_perf" and
> "exit_clk_gettime - exit_perf".
>
> On plotting these two arrays against the iterations I got a plot which is
> straight line linearly increasing with slope 0.00000095.  The difference
> between the first and the last sample of these arrays is almost 0.6 msecs over
> just 600 iterations.  I was expecting variations when I plotted these two
> arrays, but was expecting random variations and not a linearly increasing
> straight line.  This tells me that perf is inflating the timestamps over time
> with probably a constant value.
>
> Is this an expected behavior or a bug?

Perhaps John or Thomas can explain what is going on. cc'ed. Added 
Stephane as well given his recent thread on the topic.

David

>
> I didn't want to bombard the list with a big spreadsheet file detailing the
> experiment outcomes, but I can email it separately to whoever wants to take a
> look at it.
>
>
>
>>>
>>> This delta has been varying from 5 mins to 15+ mins.  My objective is to
>>> correlate events in a kernel trace with the execution of our user program.
>>> understanding is that both perf and clk_gettime functions on newer x86
>>> use TSC as the clock source and hence I was confused why they do not align.
>>>
>>> Can someone please help?
>>
>> See John's explanations in this thread:
>> https://lkml.org/lkml/2012/10/16/173
>>
>> David
>>
>
>
>
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-perf-users" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>

  reply	other threads:[~2012-11-21 15:55 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-11-16 13:07 perf trace timestamps Saumil Merchant
2012-11-16 14:39 ` David Ahern
2012-11-20 11:33   ` Saumil Merchant
2012-11-21 15:54     ` David Ahern [this message]
2012-11-27  1:37       ` John Stultz

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=50ACF94E.5010508@gmail.com \
    --to=dsahern@gmail.com \
    --cc=eranian@google.com \
    --cc=john.stultz@linaro.org \
    --cc=linux-perf-users@vger.kernel.org \
    --cc=msaumil@gmail.com \
    --cc=tglx@linutronix.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.