Re: [patch] Real-Time Preemption, -RT-2.6.12-V0.7.49-00
From: Esben Nielsen
Date: Tue Jun 21 2005 - 18:22:25 EST
On Wed, 22 Jun 2005, Esben Nielsen wrote:
>
> On Tue, 21 Jun 2005, Ingo Molnar wrote:
>
> >
> > * Esben Nielsen <simlo@xxxxxxxxxx> wrote:
> >
> > > I am seeing very high latencies on 2.6.12-RT-V0.7.50-04 with a
> > > modified realfeel2: maximum is 246 us. Shouldn't it be in the order of
> > > 50 us?
> >
> > i never got reliable results from realfeel - it should do the kind of
> > careful things rtc_wakeup does to avoid false positives.
> >
> I tried with rtc_wakeup while I was at work (which is on my disk at home)
> - but it crashed my machine (one have to be _very_ carefull about what you
> do when you run in a task with RT priority!). I have fixed it now (see
> below patch) and it is running for the night. Let us see if I get similar
> results.
>
Yep, just as I pressed sent before I saw the following:
./rtc_wakeup -n 1000000
rtc_wakeup - press ctrl-c to stop - use -h to get help
freq: 1024
max # of irqs: 1000000
jitter threshold: 5% (48 usec)
output filename: /dev/null
rt priority: 80(90)
aquiring rt privs
getting cpu speed
696948901.455 Hz (696.949 MHz)
# of cycles for "perfect" period: 680614 (976 usec)
setting up ringbuffer
setting up consumer thread
setting up /dev/rtc
locking memory
turning irq on
new max. jitter: 0.2% (1 usec)
new max. jitter: 0.5% (4 usec)
new max. jitter: 0.6% (5 usec)
new max. jitter: 0.7% (6 usec)
new max. jitter: 1.0% (9 usec)
new max. jitter: 1.7% (16 usec)
new max. jitter: 1.8% (17 usec)
new max. jitter: 1.9% (18 usec)
new max. jitter: 3.9% (37 usec)
threshold violated: 6.3% (61usec)
new max. jitter: 6.3% (61 usec)
threshold violated: 28.0% (273usec)
new max. jitter: 28.0% (273 usec)
threshold violated: 25.0% (243usec)
Esben
> Esben
>
> diff -Naur wakeup.cc~ wakeup.cc
> --- wakeup.cc~ 2004-12-10 13:41:59.000000000 +0100
> +++ wakeup.cc 2005-06-21 22:28:53.000000000 +0200
> @@ -359,8 +359,7 @@
> cycles_t last_cycles_count;
> double max_jitter = 0;
>
> - struct timespec pause;
> - pause.tv_nsec = 10000;
> + struct timespec pause = { 0, 10000};
>
> std::cout.flags(std::ios::fixed);
> std::cout << std::setprecision(1);
> @@ -428,7 +427,11 @@
> if (max_number_of_irqs > 0 && total_num_of_irqs >= max_number_of_irqs)
> stopit = true;
> }
> - nanosleep(&pause,0);
> + if(nanosleep(&pause,0))
> + {
> + perror("nanosleep:");
> + exit(1);
> + }
> }
> std::cout << "done." << std::endl;
> std::cout << "total # of irqs: " << total_num_of_irqs << std::endl;
>
>
>
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/