For a discussion of real-time performance measurement for eCos, see the kernel documentation in the eCos Reference Manual.
| Caution |
As with the target setup descriptions in the previous appendix, this information will eventually be merged into per-target documents. |
Sample numbers:
Board: ARM AEB-1 Revision B Evaluation Board
CPU : Sharp LH77790A 24MHz
Startup, main stack : stack used 404 size 2400
Startup : Interrupt stack used 128 size 2048
Startup : Idlethread stack used 80 size 2048
eCos Kernel Timings
Notes: all times are in microseconds (.000001) unless otherwise stated
Reading the hardware clock takes 13 'ticks' overhead
... this value will be factored out of all other measurements
Clock interrupt took 193.49 microseconds (290 raw clock ticks)
Testing parameters:
Clock samples: 32
Threads: 7
Thread switches: 128
Mutexes: 32
Mailboxes: 32
Semaphores: 32
Scheduler operations: 128
Counters: 32
Alarms: 32
Confidence
Ave Min Max Var Ave Min Function
====== ====== ====== ====== ========== ========
110.19 104.67 116.00 3.26 42% 28% Create thread
34.00 34.00 34.00 0.00 100% 100% Yield thread [all suspended]
24.67 24.67 24.67 0.00 100% 100% Suspend [suspended] thread
25.05 24.67 25.33 0.33 57% 42% Resume thread
37.14 36.67 37.33 0.27 71% 28% Set priority
3.81 3.33 4.00 0.27 71% 28% Get priority
80.00 80.00 80.00 0.00 100% 100% Kill [suspended] thread
33.90 33.33 34.00 0.16 85% 14% Yield [no other] thread
45.90 44.00 46.67 0.54 57% 14% Resume [suspended low prio] thread
24.57 24.00 24.67 0.16 85% 14% Resume [runnable low prio] thread
42.29 36.67 43.33 1.61 85% 14% Suspend [runnable] thread
33.90 33.33 34.00 0.16 85% 14% Yield [only low prio] thread
24.67 24.67 24.67 0.00 100% 100% Suspend [runnable->not runnable]
80.00 80.00 80.00 0.00 100% 100% Kill [runnable] thread
43.33 43.33 43.33 0.00 100% 100% Destroy [dead] thread
106.29 101.33 107.33 1.41 85% 14% Destroy [runnable] thread
144.95 141.33 166.00 6.01 85% 85% Resume [high priority] thread
78.31 76.67 254.67 2.75 99% 99% Thread switch
4.00 4.00 4.00 0.00 100% 100% Scheduler lock
16.37 16.00 16.67 0.33 56% 43% Scheduler unlock [0 threads]
16.37 16.00 16.67 0.33 56% 43% Scheduler unlock [1 suspended]
16.37 16.00 16.67 0.33 56% 43% Scheduler unlock [many suspended]
16.37 16.00 16.67 0.33 56% 43% Scheduler unlock [many low prio]
10.67 10.67 10.67 0.00 100% 100% Init mutex
28.67 28.67 28.67 0.00 100% 100% Lock [unlocked] mutex
30.44 30.00 31.33 0.33 59% 37% Unlock [locked] mutex
25.42 25.33 26.00 0.15 87% 87% Trylock [unlocked] mutex
22.50 22.00 22.67 0.25 75% 25% Trylock [locked] mutex
5.75 5.33 6.00 0.31 62% 37% Destroy mutex
185.33 185.33 185.33 0.00 100% 100% Unlock/Lock mutex
20.17 20.00 20.67 0.25 75% 75% Create mbox
2.92 2.67 3.33 0.31 62% 62% Peek [empty] mbox
32.42 32.00 32.67 0.31 62% 37% Put [first] mbox
3.00 2.67 3.33 0.33 100% 50% Peek [1 msg] mbox
32.50 32.00 32.67 0.25 75% 25% Put [second] mbox
2.92 2.67 3.33 0.31 62% 62% Peek [2 msgs] mbox
32.83 32.67 33.33 0.25 75% 75% Get [first] mbox
32.67 32.67 32.67 0.00 100% 100% Get [second] mbox
31.33 31.33 31.33 0.00 100% 100% Tryput [first] mbox
27.58 27.33 28.00 0.31 62% 62% Peek item [non-empty] mbox
32.83 32.67 33.33 0.25 75% 75% Tryget [non-empty] mbox
26.50 26.00 26.67 0.25 75% 25% Peek item [empty] mbox
28.00 28.00 28.00 0.00 100% 100% Tryget [empty] mbox
3.25 2.67 3.33 0.15 87% 12% Waiting to get mbox
3.25 2.67 3.33 0.15 87% 12% Waiting to put mbox
30.83 30.67 31.33 0.25 75% 75% Delete mbox
101.08 100.67 101.33 0.31 62% 37% Put/Get mbox
11.17 10.67 11.33 0.25 75% 25% Init semaphore
24.17 24.00 24.67 0.25 75% 75% Post [0] semaphore
27.08 26.67 27.33 0.31 62% 37% Wait [1] semaphore
22.75 22.67 23.33 0.15 87% 87% Trywait [0] semaphore
22.21 22.00 22.67 0.29 68% 68% Trywait [1] semaphore
7.33 7.33 7.33 0.00 100% 100% Peek semaphore
5.92 5.33 6.00 0.15 87% 12% Destroy semaphore
110.04 110.00 110.67 0.08 93% 93% Post/Wait semaphore
9.54 9.33 10.00 0.29 68% 68% Create counter
3.92 3.33 4.00 0.15 87% 12% Get counter value
4.00 4.00 4.00 0.00 100% 100% Set counter value
30.92 30.67 31.33 0.31 62% 62% Tick counter
5.75 5.33 6.00 0.31 62% 37% Delete counter
13.83 13.33 14.00 0.25 75% 25% Create alarm
46.67 46.67 46.67 0.00 100% 100% Initialize alarm
3.67 3.33 4.00 0.33 100% 50% Disable alarm
45.67 45.33 46.00 0.33 100% 50% Enable alarm
8.33 8.00 8.67 0.33 100% 50% Delete alarm
36.33 36.00 36.67 0.33 100% 50% Tick counter [1 alarm]
214.67 214.67 214.67 0.00 100% 100% Tick counter [many alarms]
62.67 62.67 62.67 0.00 100% 100% Tick & fire counter [1 alarm]
1087.04 1075.33 1278.67 21.91 93% 93% Tick & fire counters [>1 together]
246.35 240.67 412.00 10.35 96% 96% Tick & fire counters [>1 separately]
168.01 167.33 237.33 1.08 99% 99% Alarm latency [0 threads]
187.36 168.00 234.67 3.60 86% 1% Alarm latency [2 threads]
187.37 167.33 235.33 3.59 85% 1% Alarm latency [many threads]
303.12 280.00 508.67 3.21 98% 0% Alarm -> thread resume latency
36.65 36.00 38.67 0.00 Clock/interrupt latency
65.79 52.00 152.67 0.00 Clock DSR latency
316 316 316 (main stack: 752) Thread stack used (1120 total)
All done, main stack : stack used 752 size 2400
All done : Interrupt stack used 280 size 2048
All done : Idlethread stack used 268 size 2048
Timing complete - 30390 ms total
PASS:<Basic timing OK>
EXIT:<done>
|