From: Steven Rostedt <rostedt@goodmis.org>
To: Thomas Gleixner <tglx@linutronix.de>
Cc: "Paul E. McKenney" <paulmck@us.ibm.com>,
Karsten Wiese <annabellesgarden@yahoo.de>,
dwalker@mvista.com, george anzinger <george@mvista.com>,
Adrian Bunk <bunk@stusta.de>,
Sven-Thorsten Dietrich <sven@mvista.com>,
LKML <linux-kernel@vger.kernel.org>, Ingo Molnar <mingo@elte.hu>
Subject: [FYI] 2.6.13-rt3 and a nanosleep jitter test.
Date: Wed, 31 Aug 2005 11:01:54 -0400 [thread overview]
Message-ID: <1125500514.5714.12.camel@localhost.localdomain> (raw)
In-Reply-To: <1125417156.6355.13.camel@localhost.localdomain>
[-- Attachment #1: Type: text/plain, Size: 3116 bytes --]
Thomas,
I just was wondering how the HR Timers were in the latest -rtX patch and
wrote my own little jitter test using nanosleep. Here's the results:
On vanilla 2.6.13-rc7-git1 (Yes I need to get over to 2.6.13)
# ./jitter
starting calibrate
finished calibrate: 2133.9060MHz 2133906034
time slept: 0.010000000 sec: 0 nsec: 10000000
max: 0.011997701
min: 0.011890522
avg: 0.011993485
greatest time over: 1997.701 usecs
never ran under (good!)
average time over: 1993.485 usecs
On 2.6.13-rt3:
# ./jitter
starting calibrate
finished calibrate: 2133.2960MHz 2133295991
time slept: 0.010000000 sec: 0 nsec: 10000000
max: 0.010034857
min: 0.010006309
avg: 0.010009213
greatest time over: 34.857 usecs
never ran under (good!)
average time over: 9.213 usecs
Not bad. I then ran a clean kernel compile as root with a -j3 (this is
an 2x SMP machine), and tried the test again.
# ./jitter
starting calibrate
finished calibrate: 2133.3005MHz 2133300491
time slept: 0.010000000 sec: 0 nsec: 10000000
max: 0.010044836
min: 0.010014244
avg: 0.010030741
greatest time over: 44.836 usecs
never ran under (good!)
average time over: 30.741 usecs
Since the ticks per second is also calculated here, I ran it again using
the calibration of the first run (still running that make):
./jitter -c 2133295991
passed in calibrate: 2133.2960MHz 2133295991
time slept: 0.010000000 sec: 0 nsec: 10000000
max: 0.010051293
min: 0.010012155
avg: 0.010030237
greatest time over: 51.293 usecs
never ran under (good!)
average time over: 30.237 usecs
And once more using the calibration found by 2.6.13-rc7-git1 (still
running that make):
# ./jitter -c 2133906034
passed in calibrate: 2133.9060MHz 2133906034
time slept: 0.010000000 sec: 0 nsec: 10000000
max: 0.010058339
min: 0.010016418
avg: 0.010025571
greatest time over: 58.339 usecs
never ran under (good!)
average time over: 25.571 usecs
Some info on my machine:
$ cat /proc/cpuinfo
processor : 0
vendor_id : AuthenticAMD
cpu family : 6
model : 10
model name : AMD Athlon(tm) MP 2800+
stepping : 0
cpu MHz : 2133.286
cache size : 512 KB
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 1
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge
mca cmov pat pse36 mmx fxsr sse syscall mp mmxext 3dnowext 3dnow
bogomips : 4259.84
processor : 1
vendor_id : AuthenticAMD
cpu family : 6
model : 10
model name : AMD Athlon(tm) Processor
stepping : 0
cpu MHz : 2133.286
cache size : 512 KB
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 1
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge
mca cmov pat pse36 mmx fxsr sse syscall mp mmxext 3dnowext 3dnow
bogomips : 4259.84
And attached is the jitter.c test. Must be run as root since it ups the
priority to the max.
Have fun,
-- Steve
[-- Attachment #2: jitter.c --]
[-- Type: text/x-csrc, Size: 2086 bytes --]
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <getopt.h>
#include <sched.h>
#include <unistd.h>
#define rdtsc(low,high) \
__asm__ __volatile__("rdtsc" : "=a" (low), "=d" (high))
#define rdtscl(low) \
__asm__ __volatile__("rdtsc" : "=a" (low) : : "edx")
#define rdtscll(val) \
__asm__ __volatile__("rdtsc" : "=A" (val))
#define LOOPS 100.0
int main(int argc, char **argv)
{
int c;
unsigned long long start, end, tps = 0;
double cal;
double max=0,min=0,avg=0;
int i;
pid_t pid;
struct sched_param sp;
double sleeptime;
unsigned long sec,nsec;
sleeptime = 0.01;
sec = sleeptime;
nsec = (sleeptime-sec) * 1000000000;
pid = getpid();
memset(&sp,0,sizeof(sp));
sp.sched_priority = sched_get_priority_max(SCHED_FIFO);
sched_setscheduler(pid,SCHED_FIFO,&sp);
while ((c=getopt(argc,argv,"c:")) != -1) {
switch (c) {
case 'c':
tps = strtoll(optarg,NULL,10);
break;
default:
exit(0);
}
}
if (!tps) {
printf("starting calibrate\n");
rdtscll(start);
sleep(8);
rdtscll(end);
tps = end - start;
tps >>= 3;
printf("finished calibrate: ");
} else {
printf("passed in calibrate: ");
}
cal = tps;
cal /= 1000000.0;
printf("%.4fMHz %llu\n",cal,tps);
for (i=0; i < LOOPS; i++) {
struct timespec req = { sec, nsec };
unsigned long long t;
rdtscll(start);
nanosleep(&req,NULL);
rdtscll(end);
t = end - start;
cal = t;
cal /= (double)tps;
if (!i || cal > max)
max = cal;
if (!i || cal < min)
min = cal;
avg += cal;
}
avg /= LOOPS;
printf("time slept: %.9f sec: %lu nsec: %lu\n",sleeptime,sec,nsec);
printf("max: %.9f\n",max);
printf("min: %.9f\n",min);
printf("avg: %.9f\n",avg);
printf("greatest time over: %.3f usecs\n",(max-sleeptime)*1000000.0);
if (min > sleeptime) {
printf("never ran under (good!)\n");
} else {
printf("Ran under!!! (by %.9f) nsecs\n",sleeptime-min);
}
if (avg > sleeptime)
printf("average time over: %.3f usecs\n",(avg-sleeptime)*1000000.0);
else
printf("average time ran under???\n");
exit(0);
}
next prev parent reply other threads:[~2005-08-31 15:02 UTC|newest]
Thread overview: 76+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-08-16 12:18 2.6.13-rc6-rt3 Ingo Molnar
2005-08-16 15:31 ` 2.6.13-rc6-rt5 Steven Rostedt
2005-08-16 15:44 ` 2.6.13-rc6-rt5 Steven Rostedt
2005-08-16 16:08 ` 2.6.13-rc6-rt5 Steven Rostedt
2005-08-16 16:16 ` 2.6.13-rc6-rt5 Ingo Molnar
2005-08-16 16:22 ` 2.6.13-rc6-rt5 Ingo Molnar
2005-08-16 16:32 ` 2.6.13-rc6-rt5 Ingo Molnar
2005-08-16 16:37 ` 2.6.13-rc6-rt5 Ingo Molnar
2005-08-16 16:52 ` 2.6.13-rc6-rt5 Ingo Molnar
2005-08-16 17:08 ` 2.6.13-rc6-rt6 Ingo Molnar
2005-08-16 17:50 ` 2.6.13-rc6-rt6 Steven Rostedt
2005-08-16 18:07 ` 2.6.13-rc6-rt6 Steven Rostedt
2005-08-16 18:50 ` 2.6.13-rc6-rt6 Steven Rostedt
2005-08-17 4:20 ` 2.6.13-rc6-rt6 Steven Rostedt
2005-08-17 5:46 ` 2.6.13-rc6-rt6 Steven Rostedt
2005-08-17 6:47 ` 2.6.13-rc6-rt6 Ingo Molnar
2005-08-17 14:05 ` 2.6.13-rc6-rt6 Steven Rostedt
2005-08-17 14:24 ` 2.6.13-rc6-rt6 Steven Rostedt
2005-08-17 16:13 ` 2.6.13-rc6-rt6 Steven Rostedt
2005-08-17 16:23 ` 2.6.13-rc6-rt6 Ingo Molnar
2005-08-17 17:10 ` 2.6.13-rc6-rt6 K.R. Foley
2005-08-17 18:31 ` 2.6.13-rc6-rt6 Steven Rostedt
2005-08-17 19:31 ` 2.6.13-rc6-rt6 Steven Rostedt
2005-08-18 0:02 ` 2.6.13-rc6-rt6 Steven Rostedt
2005-08-18 2:44 ` 2.6.13-rc6-rt6 Steven Rostedt
[not found] ` <20050822075012.GB19386@elte.hu>
[not found] ` <1124704837.5208.22.camel@localhost.localdomain>
[not found] ` <20050822101632.GA28803@elte.hu>
[not found] ` <1124710309.5208.30.camel@localhost.localdomain>
[not found] ` <20050822113858.GA1160@elte.hu>
[not found] ` <1124715755.5647.4.camel@localhost.localdomain>
[not found] ` <20050822183355.GB13888@elte.hu>
2005-08-22 19:40 ` 2.6.13-rc6-rt6 Steven Rostedt
2005-08-22 19:44 ` [RFC] RT-patch update to remove the global pi_lock Steven Rostedt
2005-08-22 22:19 ` Daniel Walker
2005-08-23 0:26 ` Steven Rostedt
2005-08-23 0:51 ` Daniel Walker
2005-08-23 1:32 ` Steven Rostedt
2005-08-23 3:38 ` Steven Rostedt
[not found] ` <1124908080.5604.22.camel@localhost.localdomain>
[not found] ` <1124917003.5711.8.camel@localhost.localdomain>
2005-08-24 21:05 ` Thomas Gleixner
2005-08-25 1:13 ` Steven Rostedt
2005-08-25 1:38 ` Daniel Walker
2005-08-25 1:48 ` Steven Rostedt
2005-08-25 6:31 ` Ingo Molnar
2005-08-25 6:35 ` Ingo Molnar
2005-08-25 16:15 ` Steven Rostedt
2005-08-25 19:34 ` Ingo Molnar
2005-08-25 19:46 ` Steven Rostedt
2005-08-23 5:29 ` Ingo Molnar
2005-08-25 14:47 ` Steven Rostedt
2005-08-25 15:06 ` Steven Rostedt
2005-08-25 17:47 ` Ingo Molnar
2005-08-25 20:09 ` Steven Rostedt
2005-08-25 21:32 ` Daniel Walker
2005-08-26 2:23 ` Steven Rostedt
2005-08-26 13:52 ` Steven Rostedt
2005-08-30 15:00 ` Steven Rostedt
2005-08-30 15:52 ` Steven Rostedt
2005-08-30 23:08 ` Steven Rostedt
2005-08-31 15:01 ` Steven Rostedt [this message]
2005-08-31 15:12 ` [FYI] 2.6.13-rt3 and a nanosleep jitter test Daniel Walker
2005-08-31 15:30 ` Steven Rostedt
2005-08-31 15:13 ` Daniel Walker
2005-08-31 15:19 ` Steven Rostedt
2005-08-31 15:30 ` Daniel Walker
2005-08-23 5:46 ` 2.6.13-rc6-rt6 Ingo Molnar
2005-08-19 21:22 ` 2.6.13-rc6-rt6 Steven Rostedt
2005-08-19 22:47 ` 2.6.13-rc6-rt6 Paul E. McKenney
2005-08-19 23:02 ` 2.6.13-rc6-rt6 Steven Rostedt
2005-08-19 23:12 ` 2.6.13-rc6-rt6 Paul E. McKenney
2005-08-19 23:20 ` 2.6.13-rc6-rt6 Steven Rostedt
2005-08-19 23:44 ` 2.6.13-rc6-rt6 Paul E. McKenney
2005-08-22 7:53 ` 2.6.13-rc6-rt6 Ingo Molnar
2005-08-17 19:27 ` 2.6.13-rc6-rt6 Ingo Molnar
2005-08-17 19:39 ` 2.6.13-rc6-rt6 Steven Rostedt
2005-08-17 17:32 ` 2.6.13-rc6-rt6 Steven Rostedt
2005-08-17 19:34 ` 2.6.13-rc6-rt6 Steven Rostedt
2005-08-17 5:59 ` 2.6.13-rc6-rt6 Ingo Molnar
2005-08-17 20:01 ` 2.6.13-rc6-rt8 Peter Bortas
2005-08-23 6:14 ` 2.6.13-rc6-rt8 Ingo Molnar
2005-08-28 20:36 ` 2.6.13-rc6-rt8 Peter Bortas
2005-08-18 9:57 ` 2.6.13-rc6-rt3 Alistair John Strachan
2005-08-18 10:00 ` 2.6.13-rc6-rt3 Thomas Gleixner
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=1125500514.5714.12.camel@localhost.localdomain \
--to=rostedt@goodmis.org \
--cc=annabellesgarden@yahoo.de \
--cc=bunk@stusta.de \
--cc=dwalker@mvista.com \
--cc=george@mvista.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=paulmck@us.ibm.com \
--cc=sven@mvista.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox