All of lore.kernel.org
 help / color / mirror / Atom feed
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);
}

  parent reply	other threads:[~2005-08-31 15:02 UTC|newest]

Thread overview: 82+ 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: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-19 23:44                                             ` 2.6.13-rc6-rt6 Paul E. McKenney
2005-08-19 23:20                                           ` 2.6.13-rc6-rt6 Steven Rostedt
2005-08-19 23:12                                         ` 2.6.13-rc6-rt6 Paul E. McKenney
2005-08-19 22:47                                     ` 2.6.13-rc6-rt6 Paul E. McKenney
2005-08-22  7:53                                     ` 2.6.13-rc6-rt6 Ingo Molnar
2005-08-19 21:22                                   ` 2.6.13-rc6-rt6 Steven Rostedt
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 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.