I forwarded one of the RTLINUX interrupt latency emails to one of our
local experts in real time operating systems of a broad spectrum of
sophistications and capabilities. Here is his response...
(maybe one among the RT-LINUX community would like to generate the
comprehensive set listed. 'ya got any nominations?)
Jerry,
Interrupt latency measurements like this just don't mean much for
systems in real applications. Most real-time kernels can do about
as well with a fast CPU. If interrupt latency is your only requirement
you should not use an OS. You can just code such applications
as standalone programs. This is done for many simple embedded
applications.
Interrupt latency provides a useful measure of worst-case front-line
interrupt response. But it doesn't say much about how nimble the
RTOS is in performing its primary function-namely, launching tasks
that perform background processing for the ISR.
The table below shows the number of measurement that are required
to characterize performance of a RTOS for use in complex real-time
applications.
It is over five years old and results are for a 25 MHz CPU. A
modern CPU will run 5-10 times faster.
------------------------------------------------------------------
A WRS VxWorks 5.1 Benchmark Report hot off the press:
Benchmark numbers based on: mv167-25Mhz, 5.1
Cache Cache
Key Measurements Enabled Disabled
Raw Context Switch Time 4 us 14 us
Cyclic Test Time 172 us 638 us
Suspend/Switch/Resume/Switch 23 us 86 us
Kernel Timings
Task Related
taskSpawn 124 us 370 us
taskInit 58 us 181 us
taskActivate 12 us 33 us
taskDelete 101 us 303 us
Task Create / Delete 249 us 684 us
taskLock
CASE 1: no lock 3 us 4 us
CASE 2: lock exists 2 us 5 us
taskUnlock
CASE 1: no lock 2 us 12 us
CASE 2: lock exists 5 us 6 us
taskSuspend
CASE 1: ready task 11 us 30 us
CASE 2: pended task 9 us 19 us
CASE 3: suspended task 8 us 19 us
CASE 4: delayed task 9 us 19 us
taskResume
CASE 1: ready task 6 us 19 us
CASE 2: pended task 10 us 19 us
CASE 3: suspended task 13 us 30 us
CASE 4: delayed task 9 us 18 us
Semaphore Related
semBCreate 66 us 152 us
semCCreate 46 us 150 us
semMCreate 45 us 139 us
semDelete
Binary 49 us 157 us
Counting 49 us 163 us
Mutual Exclusion 48 us 157 us
semGive
CASE 1: tasks in queue
Binary 18 us 44 us
Counting 20 us 46 us
Mutual Exclusion 25 us 59 us
CASE 2: no tasks in queue
Binary 4 us 8 us
Counting 5 us 11 us
Mutual Exclusion 6 us 15 us
semTake
CASE 1: semaphore available
Binary 4 us 9 us
Counting 5 us 11 us
Mutual Exclusion 5 us 13 us
CASE 2: semaphore unavailable
Binary 10 us 25 us
Counting 11 us 27 us
Mutual Exclusion 4 us 12 us
Semaphore Give / Take
Binary 7 us 15 us
Counting 9 us 21 us
Mutual Exclusion 10 us 26 us
semFlush
Binary 11 us 20 us
Counting 11 us 20 us
Mutual Exclusion 10 us 16 us
Miscellaneous Operating System Timings
Message Queue Related
msgQCreate 93 us 280 us
msgQDelete 71 us 229 us
msgQSend
CASE 1: task pending 39 us 102 us
CASE 2: no tasks pending 23 us 64 us
CASE 3: queue full 14 us 45 us
msgQReceive
CASE 1: message available 20 us 62 us
CASE 2: message unavailable 15 us 41 us
Memory Related
malloc 28 us 81 us
free 32 us 104 us
Watchdog Related
wdCreate 42 us 106 us
wdDelete
CASE 1: timer started 48 us 160 us
CASE 2: timer not started 44 us 150 us
wdStart
CASE 1: timer in queue 20 us 70 us
CASE 2: no timer in queue 18 us 55 us
wdCancel 11 us 34 us
Floating-Point
robot application 18 sec 51 sec
--- [rtl] ---
For more information on Real-Time Linux see:
http://rtlinux.cs.nmt.edu/