Hi
i tried to get some timing estimations for rtlinux by writing some
simple testmodules for my special applications, using c++ in kernel
space. the tests are similar to the "jitter" example in rtai and i
think to the measurement example in rtlinux.
i run the tests on different systems under several load environments,
see the code snippet of the realtimetask for details.
i wanted to see some trends in the duration of some operations and the
scheduling accuracy by calculating the differences to the expected
period.
i found that that there is jitter on the scheduling, at least on one
system, up to 60 us (before or after the set period), dependent on the
system load. now i wonder how it could be possible to guarantee a
worst-case-scenario deadline, independent of the system load.
i assume that by increasing the system load, my period derivations get
increased to.
in the rtlinux papers, one can find rtlinux should have a maximum
interrupt response time of under 25 us. is that contradictive to what
i discovered?
could someone point me to the erros in my thoughts or give some hints
on how to get some reliable test results.
one thing i should mention: it could be possible, that my disc was
full at the time of writing the measured timestamps to a rt-fifo.
could this have some negative influence on the timings?
some timings in us, where i generate system load by:
# top -q
# ping -f localhost
# while [ true ]; do ls -lR /; done
Environment Derivation of period
AverageMin Max
-
load, X started: 10.750 0.0 54.848
no load, X started: 1.169 0.0 21.152
load, no X: 10.508 0.0 56.544
no load, no X:1.020 0.0 13.984
the derivations are showing absolute values, meaning that the
execution of the task might be done before the whole period or later.
the timings are for the code below.
thank you very much in case of help ;)
alex
--- CODE OF REALTIME TASK ---
...
void * PeriodicComediParameter::printfThread(void *param)
{
hrtime_t timestamp;
PeriodicTask* me = (PeriodicTask*) (param);
__rtl_printf("** TASK: IN NOIO THREAD, PERIOD = %lu.\n", me);
while (1) {
if (_countn_periods) {
me-wait();
timestamp=gethrtime();
data_out(timestamp, sizeof(timestamp));
_count++;
__rtl_printf("%lu ", _count);
timestamp=gethrtime();
data_out(timestamp, sizeof(timestamp));
} else {
break;
}
}
}
...
--- END OF CODE SNIPPET ---
CU
mailto:[EMAIL PROTECTED]
-- [rtl] ---
To unsubscribe:
echo "unsubscribe rtl" | mail [EMAIL PROTECTED] OR
echo "unsubscribe rtl Your_email" | mail [EMAIL PROTECTED]
---
For more information on Real-Time Linux see:
http://www.rtlinux.org/rtlinux/