Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 09 Jul 2009 19:54:13 -0700
From:      Tim Kientzle <kientzle@freebsd.org>
To:        Andriy Gapon <avg@freebsd.org>
Cc:        =?ISO-8859-1?Q?Marius_N=FCnnerich?= <marius@nuenneri.ch>, freebsd-current@freebsd.org
Subject:   Re: dtrace users opinion solicited (timestamps)
Message-ID:  <4A56AD55.2010201@freebsd.org>
In-Reply-To: <4A563A57.8090907@freebsd.org>
References:  <4A562960.3010801@freebsd.org>	<b649e5e0907091102h2bbf3799r4f8b840696a9162b@mail.gmail.com> <4A563A57.8090907@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
Andriy Gapon wrote:
> on 09/07/2009 21:02 Marius Nünnerich said the following:
>> What about atomically changing tsc_freq every time the frequency is changed?
> 
> This is what actually  does happen, but it doesn't help.
> 
> Say, there is a moment T1 when TSC has value N and tsc_freq is X, and moment T2
> when when TSC value (N + 1) and tsc_freq is 10*X.
> So the formula gives:
> 
> t1 = N / X
> t2 = (N+1) / (10*X)

Instead of just storing tsc_freq at each frequency change,
you really need:
   * Last timestamp just before frequency change (t0)
   * new frequency (f)
   * TSC value at frequency change (c0)

Then
    t = t0 + (rdtsc() - c0) / f

Of course, I haven't looked at the code to tell
what your range limitations are.

Tim



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4A56AD55.2010201>