From: Jamie Lokier <lk@tantalophile.demon.co.uk>
To: "H. Peter Anvin" <hpa@zytor.com>
Cc: linux-kernel@vger.kernel.org, Alan Cox <alan@lxorguk.ukuu.org.uk>,
Terje Eggestad <terje.eggestad@scali.com>,
Ben Greear <greearb@candelatech.com>,
Davide Libenzi <davidel@xmailserver.org>,
george anzinger <george@mvista.com>
Subject: Re: gettimeofday() system call timing curiosity
Date: Fri, 8 Mar 2002 20:16:33 +0000 [thread overview]
Message-ID: <20020308201633.C18247@kushida.apsleyroad.org> (raw)
In-Reply-To: <E16iz57-0002SW-00@the-village.bc.nu> <1015515815.4373.61.camel@pc-16.office.scali.no> <a68bo4$b18$1@cesium.transmeta.com> <20020308013222.B14779@kushida.apsleyroad.org> <3C88157E.5010106@zytor.com> <20020308015701.C14779@kushida.apsleyroad.org> <20020308183049.A18247@kushida.apsleyroad.org> <3C89080D.8060503@zytor.com>
In-Reply-To: <3C89080D.8060503@zytor.com>; from hpa@zytor.com on Fri, Mar 08, 2002 at 10:50:53AM -0800
H. Peter Anvin wrote:
> > On my laptop, the median of rdtsc+gettimeofday+rdtsc times is 470 cycles
> > for most runs of 1000, but is occasionally 453 cycles.
>
> What that indicates to me is that 1000 is way too small of a sample.
> You're only talking a difference of 17,000 cycles, which could --
> especially with cache effects -- easily be the time spent in an
> interrupt handler.
No, interrupt handlers don't (or shouldn't) affect the measurement.
It's the _median_ that varies from 453 to 470, not the _mean_, so the
accumulation to 17000 cycles doesn't apply.
I do rdtsc, then gettimeofday(), then rdtsc. I record (a) the actual
time values, and (b) the difference between the two rdtsc measurements.
First I store 1000 of the difference measurements -- those are the "time
taken to do measurement in TSC cycles". I don't want to store a very
large number of these measurements because of the memory it takes, but
perhaps 1000 isn't quite enough (it isn't on the laptop, and is fine on
all the other machines).
Then I sort those and take the 499'th to get the median.
Assuming that at least 50% of the calls don't receive an interrupt or
reschedule in the middle (a reasonable assumption), then that median
gives me a good idea of how long a measurement takes _when there is no
interrupt or reschedule_.
Then I take approx. 1000000 measurements using the same code, and
discard all those that took longer than the median threshold determined
earlier.
This means that whenever an interrupt happened, that sample is discarded.
Finally, I do a simple least-squares linear regression through the
remaining samples (normally 400000-600000 or so) to calculate the slope.
The slope is what's printed.
cheers,
-- Jamie
next prev parent reply other threads:[~2002-03-08 20:17 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-03-06 3:41 a faster way to gettimeofday? Ben Greear
2002-03-06 3:58 ` Davide Libenzi
2002-03-06 4:20 ` Ben Greear
2002-03-06 4:31 ` Davide Libenzi
2002-03-06 4:34 ` Davide Libenzi
2002-03-07 14:14 ` a faster way to gettimeofday? rdtsc strangeness Terje Eggestad
2002-03-07 14:41 ` Alan Cox
2002-03-07 15:43 ` Terje Eggestad
2002-03-07 16:17 ` Alan Cox
2002-03-07 18:32 ` H. Peter Anvin
2002-03-08 1:32 ` Jamie Lokier
2002-03-08 1:35 ` H. Peter Anvin
2002-03-08 1:57 ` Jamie Lokier
2002-03-08 18:30 ` gettimeofday() system call timing curiosity Jamie Lokier
2002-03-08 18:50 ` H. Peter Anvin
2002-03-08 20:16 ` Jamie Lokier [this message]
2002-03-08 20:30 ` Davide Libenzi
2002-03-08 18:54 ` Richard B. Johnson
2002-03-08 19:06 ` johan.adolfsson
2002-03-08 19:16 ` H. Peter Anvin
2002-03-08 19:45 ` Richard B. Johnson
2002-03-08 20:29 ` johan.adolfsson
2002-03-08 20:43 ` Alan Cox
2002-03-09 3:03 ` pjd
2002-03-09 18:51 ` Alan Cox
2002-03-09 3:15 ` Kelsey Hudson
2002-03-08 19:19 ` Alan Cox
2002-03-08 20:40 ` george anzinger
2002-03-06 20:45 ` a faster way to gettimeofday? dean gaudet
2002-03-06 21:31 ` Chris Ball
2002-03-06 22:25 ` george anzinger
2002-03-07 0:04 ` vsyscalls Mark Mielke
2002-03-06 16:16 ` a faster way to gettimeofday? Chris Friesen
2002-03-06 16:54 ` Richard B. Johnson
2002-03-11 22:47 ` OBATA Noboru
2002-03-12 13:06 ` Jamie Lokier
2002-03-12 15:12 ` OBATA Noboru
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=20020308201633.C18247@kushida.apsleyroad.org \
--to=lk@tantalophile.demon.co.uk \
--cc=alan@lxorguk.ukuu.org.uk \
--cc=davidel@xmailserver.org \
--cc=george@mvista.com \
--cc=greearb@candelatech.com \
--cc=hpa@zytor.com \
--cc=linux-kernel@vger.kernel.org \
--cc=terje.eggestad@scali.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox