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>