For a discussion of real-time performance measurement for eCos, see the eCos Users' Guide .
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>
Startup, main stack : stack used 404 size 2400 Startup : Interrupt stack used 136 size 4096 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 1 'ticks' overhead ... this value will be factored out of all other measurements Clock interrupt took 4.61 microseconds (16 raw clock ticks) Testing parameters: Clock samples: 32 Threads: 64 Thread switches: 128 Mutexes: 32 Mailboxes: 32 Semaphores: 32 Scheduler operations: 128 Counters: 32 Alarms: 32 Confidence Ave Min Max Var Ave Min Function ====== ====== ====== ====== ========== ======== 4.97 3.26 7.34 0.60 50% 4% Create thread 0.73 0.54 2.17 0.14 60% 37% Yield thread [all suspended] 0.98 0.82 2.99 0.23 81% 68% Suspend [suspended] thread 0.54 0.27 1.63 0.03 92% 6% Resume thread 0.83 0.54 1.90 0.10 73% 14% Set priority 0.21 0.00 0.54 0.21 25% 48% Get priority 2.25 1.90 10.05 0.37 96% 67% Kill [suspended] thread 0.70 0.54 1.09 0.14 53% 45% Yield [no other] thread 0.96 0.82 1.36 0.14 50% 48% Resume [suspended low prio] thread 0.53 0.27 0.82 0.03 92% 6% Resume [runnable low prio] thread 0.90 0.82 1.63 0.13 70% 70% Suspend [runnable] thread 0.70 0.54 0.82 0.13 57% 42% Yield [only low prio] thread 0.55 0.54 0.82 0.01 98% 98% Suspend [runnable->not runnable] 1.64 1.63 2.17 0.02 98% 98% Kill [runnable] thread 0.97 0.82 4.62 0.20 98% 64% Destroy [dead] thread 2.17 1.90 2.17 0.01 98% 1% Destroy [runnable] thread 6.06 5.16 10.60 0.53 59% 31% Resume [high priority] thread 1.69 1.63 5.98 0.11 90% 90% Thread switch 0.14 0.00 1.36 0.14 99% 50% Scheduler lock 0.37 0.27 0.54 0.13 62% 62% Scheduler unlock [0 threads] 0.38 0.27 0.54 0.13 60% 60% Scheduler unlock [1 suspended] 0.37 0.27 0.54 0.13 63% 63% Scheduler unlock [many suspended] 0.37 0.27 0.54 0.13 63% 63% Scheduler unlock [many low prio] 0.34 0.00 1.90 0.15 78% 6% Init mutex 0.88 0.54 4.62 0.37 93% 71% Lock [unlocked] mutex 0.79 0.54 4.35 0.26 93% 53% Unlock [locked] mutex 0.59 0.27 2.17 0.10 93% 3% Trylock [unlocked] mutex 0.50 0.27 0.82 0.09 78% 18% Trylock [locked] mutex 0.18 0.00 0.54 0.13 59% 37% Destroy mutex 3.85 3.80 5.16 0.08 96% 96% Unlock/Lock mutex 0.64 0.27 3.53 0.24 81% 15% Create mbox 0.61 0.27 2.17 0.21 68% 18% Peek [empty] mbox 0.87 0.54 5.16 0.31 59% 87% Put [first] mbox 0.08 0.00 0.54 0.12 71% 71% Peek [1 msg] mbox 0.71 0.54 1.09 0.14 56% 40% Put [second] mbox 0.08 0.00 0.27 0.12 68% 68% Peek [2 msgs] mbox 0.89 0.54 4.89 0.31 62% 81% Get [first] mbox 0.76 0.54 1.09 0.17 43% 37% Get [second] mbox 0.76 0.54 3.26 0.21 96% 50% Tryput [first] mbox 0.65 0.54 2.45 0.17 81% 81% Peek item [non-empty] mbox 0.76 0.54 2.72 0.19 53% 43% Tryget [non-empty] mbox 0.58 0.54 0.82 0.06 87% 87% Peek item [empty] mbox 0.61 0.54 0.82 0.10 75% 75% Tryget [empty] mbox 0.10 0.00 0.54 0.13 65% 65% Waiting to get mbox 0.10 0.00 0.54 0.13 65% 65% Waiting to put mbox 0.77 0.54 3.26 0.20 53% 43% Delete mbox 2.10 1.90 6.25 0.30 93% 93% Put/Get mbox 0.34 0.27 1.09 0.11 81% 81% Init semaphore 0.60 0.27 1.09 0.12 68% 6% Post [0] semaphore 0.59 0.54 0.82 0.08 81% 81% Wait [1] semaphore 0.59 0.54 2.17 0.10 96% 96% Trywait [0] semaphore 0.48 0.27 0.82 0.11 71% 25% Trywait [1] semaphore 0.24 0.00 0.82 0.09 78% 18% Peek semaphore 0.19 0.00 0.54 0.13 62% 34% Destroy semaphore 2.28 2.17 4.08 0.18 93% 90% Post/Wait semaphore 0.43 0.00 2.72 0.23 90% 6% Create counter 0.40 0.00 1.63 0.25 68% 28% Get counter value 0.13 0.00 0.82 0.15 96% 59% Set counter value 0.71 0.54 1.63 0.16 50% 46% Tick counter 0.16 0.00 0.54 0.14 53% 43% Delete counter 0.47 0.27 1.36 0.15 59% 37% Create alarm 1.58 1.09 7.07 0.44 71% 68% Initialize alarm 0.12 0.00 1.09 0.16 96% 65% Disable alarm 1.01 0.82 2.45 0.17 53% 43% Enable alarm 0.21 0.00 0.27 0.09 78% 21% Delete alarm 0.78 0.54 1.90 0.12 71% 25% Tick counter [1 alarm] 3.90 3.80 4.35 0.13 68% 68% Tick counter [many alarms] 1.25 1.09 1.63 0.14 53% 43% Tick & fire counter [1 alarm] 19.88 19.84 20.11 0.07 84% 84% Tick & fire counters [>1 together] 4.37 4.35 4.62 0.05 90% 90% Tick & fire counters [>1 separately] 3.83 3.80 7.61 0.06 99% 99% Alarm latency [0 threads] 4.46 3.80 7.88 0.27 71% 24% Alarm latency [2 threads] 16.06 13.59 26.36 1.05 54% 10% Alarm latency [many threads] 6.67 6.52 22.83 0.29 98% 98% Alarm -> thread resume latency 1.89 0.82 9.78 0.00 Clock/interrupt latency 2.17 1.09 7.34 0.00 Clock DSR latency 11 0 316 (main stack: 744) Thread stack used (1120 total) All done, main stack : stack used 744 size 2400 All done : Interrupt stack used 288 size 4096 All done : Idlethread stack used 268 size 2048 Timing complete - 30210 ms total PASS:<Basic timing OK> EXIT:<done>
Startup, main stack : stack used 404 size 2400 Startup : Interrupt stack used 136 size 4096 Startup : Idlethread stack used 88 size 2048 eCos Kernel Timings Notes: all times are in microseconds (.000001) unless otherwise stated Reading the hardware clock takes 0 'ticks' overhead ... this value will be factored out of all other measurements Clock interrupt took 356.69 microseconds (182 raw clock ticks) Testing parameters: Clock samples: 32 Threads: 64 Thread switches: 128 Mutexes: 32 Mailboxes: 32 Semaphores: 32 Scheduler operations: 128 Counters: 32 Alarms: 32 Confidence Ave Min Max Var Ave Min Function ====== ====== ====== ====== ========== ======== 22.71 17.58 37.11 3.07 46% 34% Create thread 4.36 3.91 5.86 0.70 76% 76% Yield thread [all suspended] 4.24 3.91 7.81 0.56 84% 84% Suspend [suspended] thread 4.09 1.95 7.81 0.45 85% 3% Resume thread 5.31 3.91 11.72 0.92 65% 32% Set priority 2.11 1.95 3.91 0.28 92% 92% Get priority 11.54 9.77 25.39 0.99 62% 28% Kill [suspended] thread 4.46 3.91 9.77 0.82 75% 75% Yield [no other] thread 7.57 5.86 13.67 0.69 75% 20% Resume [suspended low prio] thread 3.94 1.95 5.86 0.18 92% 3% Resume [runnable low prio] thread 7.02 5.86 13.67 1.05 53% 45% Suspend [runnable] thread 4.42 3.91 9.77 0.79 76% 76% Yield [only low prio] thread 4.24 1.95 5.86 0.61 79% 1% Suspend [runnable->not runnable] 11.29 9.77 27.34 1.14 57% 37% Kill [runnable] thread 6.29 3.91 11.72 0.84 71% 4% Destroy [dead] thread 13.52 11.72 31.25 0.90 70% 25% Destroy [runnable] thread 24.50 21.48 42.97 1.69 79% 12% Resume [high priority] thread 8.79 7.81 19.53 1.05 99% 53% Thread switch 1.66 0.00 3.91 0.52 83% 15% Scheduler lock 2.59 1.95 3.91 0.86 67% 67% Scheduler unlock [0 threads] 2.62 1.95 3.91 0.88 65% 65% Scheduler unlock [1 suspended] 2.61 1.95 3.91 0.87 66% 66% Scheduler unlock [many suspended] 2.58 1.95 3.91 0.85 67% 67% Scheduler unlock [many low prio] 2.69 1.95 5.86 0.96 65% 65% Init mutex 4.88 3.91 9.77 1.10 96% 56% Lock [unlocked] mutex 4.64 3.91 11.72 1.05 71% 71% Unlock [locked] mutex 3.97 1.95 7.81 0.47 81% 9% Trylock [unlocked] mutex 3.48 1.95 3.91 0.67 78% 21% Trylock [locked] mutex 1.77 0.00 3.91 0.44 84% 12% Destroy mutex 31.92 29.30 42.97 1.65 71% 18% Unlock/Lock mutex 4.09 3.91 9.77 0.35 96% 96% Create mbox 1.83 0.00 3.91 0.34 87% 9% Peek [empty] mbox 5.31 3.91 9.77 0.96 62% 34% Put [first] mbox 1.59 0.00 1.95 0.60 81% 18% Peek [1 msg] mbox 5.19 3.91 9.77 1.04 56% 40% Put [second] mbox 1.65 0.00 3.91 0.62 78% 18% Peek [2 msgs] mbox 5.43 3.91 9.77 0.86 68% 28% Get [first] mbox 5.31 3.91 7.81 0.96 59% 34% Get [second] mbox 4.76 3.91 9.77 1.07 62% 62% Tryput [first] mbox 4.82 1.95 9.77 1.15 93% 3% Peek item [non-empty] mbox 5.55 3.91 11.72 0.82 71% 25% Tryget [non-empty] mbox 3.97 1.95 7.81 0.59 75% 12% Peek item [empty] mbox 4.33 3.91 7.81 0.69 81% 81% Tryget [empty] mbox 1.59 0.00 3.91 0.79 68% 25% Waiting to get mbox 1.71 0.00 3.91 0.53 81% 15% Waiting to put mbox 5.25 3.91 9.77 1.01 59% 37% Delete mbox 17.82 15.63 29.30 1.14 65% 18% Put/Get mbox 2.69 1.95 5.86 0.96 65% 65% Init semaphore 3.78 1.95 7.81 0.46 84% 12% Post [0] semaphore 4.27 3.91 7.81 0.62 84% 84% Wait [1] semaphore 3.72 1.95 7.81 0.66 75% 18% Trywait [0] semaphore 3.29 1.95 5.86 0.92 62% 34% Trywait [1] semaphore 2.32 1.95 3.91 0.59 81% 81% Peek semaphore 1.89 0.00 3.91 0.24 90% 6% Destroy semaphore 15.75 13.67 29.30 1.07 68% 21% Post/Wait semaphore 2.69 1.95 5.86 0.96 65% 65% Create counter 1.83 0.00 1.95 0.23 93% 6% Get counter value 1.53 0.00 3.91 0.76 71% 25% Set counter value 4.82 3.91 5.86 0.97 53% 53% Tick counter 1.89 0.00 1.95 0.12 96% 3% Delete counter 3.78 1.95 7.81 0.46 84% 12% Create alarm 7.99 5.86 15.63 0.70 81% 9% Initialize alarm 1.71 0.00 1.95 0.43 87% 12% Disable alarm 7.14 5.86 11.72 1.04 56% 40% Enable alarm 2.50 1.95 3.91 0.79 71% 71% Delete alarm 4.94 3.91 7.81 1.04 96% 50% Tick counter [1 alarm] 19.47 17.58 23.44 0.36 87% 9% Tick counter [many alarms] 7.63 5.86 11.72 0.55 81% 15% Tick & fire counter [1 alarm] 99.06 97.66 105.47 1.05 59% 37% Tick & fire counters [>1 together] 22.15 21.48 27.34 0.96 71% 71% Tick & fire counters [>1 separately] 359.16 357.42 378.91 0.87 71% 25% Alarm latency [0 threads] 364.03 357.42 402.34 3.03 58% 15% Alarm latency [2 threads] 408.25 402.34 416.02 2.89 53% 24% Alarm latency [many threads] 381.16 376.95 492.19 2.48 95% 46% Alarm -> thread resume latency 9.79 5.86 19.53 0.00 Clock/interrupt latency 12.13 5.86 31.25 0.00 Clock DSR latency 12 0 316 (main stack: 752) Thread stack used (1120 total) All done, main stack : stack used 752 size 2400 All done : Interrupt stack used 288 size 4096 All done : Idlethread stack used 276 size 2048 Timing complete - 30450 ms total PASS:<Basic timing OK> EXIT:<done>
Startup, main stack : stack used 404 size 2400 Startup : Interrupt stack used 136 size 4096 Startup : Idlethread stack used 88 size 2048 eCos Kernel Timings Notes: all times are in microseconds (.000001) unless otherwise stated Reading the hardware clock takes 0 'ticks' overhead ... this value will be factored out of all other measurements Clock interrupt took 356.32 microseconds (182 raw clock ticks) Testing parameters: Clock samples: 32 Threads: 64 Thread switches: 128 Mutexes: 32 Mailboxes: 32 Semaphores: 32 Scheduler operations: 128 Counters: 32 Alarms: 32 Confidence Ave Min Max Var Ave Min Function ====== ====== ====== ====== ========== ======== 22.43 15.63 33.20 3.02 68% 18% Create thread 4.48 3.91 5.86 0.81 70% 70% Yield thread [all suspended] 4.42 3.91 7.81 0.78 75% 75% Suspend [suspended] thread 4.12 1.95 5.86 0.49 82% 3% Resume thread 5.62 3.91 11.72 0.64 78% 18% Set priority 2.17 1.95 3.91 0.38 89% 89% Get priority 11.54 9.77 27.34 0.88 70% 25% Kill [suspended] thread 4.64 3.91 9.77 0.96 65% 65% Yield [no other] thread 7.51 5.86 15.63 0.72 76% 21% Resume [suspended low prio] thread 3.88 1.95 9.77 0.42 82% 10% Resume [runnable low prio] thread 7.14 5.86 13.67 1.00 59% 39% Suspend [runnable] thread 4.52 3.91 7.81 0.86 70% 70% Yield [only low prio] thread 4.15 1.95 7.81 0.49 85% 1% Suspend [runnable->not runnable] 11.26 9.77 27.34 1.17 56% 39% Kill [runnable] thread 6.22 3.91 13.67 0.88 70% 7% Destroy [dead] thread 13.64 11.72 33.20 1.02 64% 26% Destroy [runnable] thread 24.17 21.48 41.02 1.49 82% 12% Resume [high priority] thread 8.80 7.81 21.48 1.08 98% 54% Thread switch 1.60 0.00 1.95 0.58 82% 17% Scheduler lock 2.61 1.95 3.91 0.87 66% 66% Scheduler unlock [0 threads] 2.59 1.95 3.91 0.86 67% 67% Scheduler unlock [1 suspended] 2.61 1.95 3.91 0.87 66% 66% Scheduler unlock [many suspended] 2.59 1.95 3.91 0.86 67% 67% Scheduler unlock [many low prio] 2.62 1.95 3.91 0.88 65% 65% Init mutex 4.82 3.91 9.77 1.09 96% 59% Lock [unlocked] mutex 4.39 3.91 9.77 0.79 81% 81% Unlock [locked] mutex 3.84 1.95 7.81 0.36 87% 9% Trylock [unlocked] mutex 3.54 1.95 5.86 0.69 75% 21% Trylock [locked] mutex 1.83 0.00 3.91 0.34 87% 9% Destroy mutex 34.61 31.25 46.88 1.68 78% 9% Unlock/Lock mutex 3.97 1.95 7.81 0.24 93% 3% Create mbox 1.83 0.00 3.91 0.34 87% 9% Peek [empty] mbox 4.76 3.91 9.77 1.07 62% 62% Put [first] mbox 1.71 0.00 3.91 0.64 75% 18% Peek [1 msg] mbox 5.00 3.91 9.77 1.10 96% 50% Put [second] mbox 1.65 0.00 1.95 0.52 84% 15% Peek [2 msgs] mbox 5.31 3.91 11.72 1.05 59% 37% Get [first] mbox 5.13 3.91 7.81 0.99 56% 40% Get [second] mbox 4.76 3.91 11.72 1.12 96% 65% Tryput [first] mbox 4.46 3.91 7.81 0.82 75% 75% Peek item [non-empty] mbox 5.55 3.91 9.77 0.82 68% 25% Tryget [non-empty] mbox 4.03 1.95 7.81 0.58 78% 9% Peek item [empty] mbox 4.27 3.91 5.86 0.59 81% 81% Tryget [empty] mbox 1.77 0.00 3.91 0.44 84% 12% Waiting to get mbox 1.59 0.00 1.95 0.60 81% 18% Waiting to put mbox 5.37 3.91 9.77 0.91 65% 31% Delete mbox 16.66 13.67 27.34 1.42 90% 3% Put/Get mbox 2.62 1.95 5.86 0.92 68% 68% Init semaphore 3.84 1.95 7.81 0.47 81% 12% Post [0] semaphore 4.21 3.91 7.81 0.53 87% 87% Wait [1] semaphore 3.48 1.95 5.86 0.76 71% 25% Trywait [0] semaphore 3.60 1.95 5.86 0.62 78% 18% Trywait [1] semaphore 2.26 1.95 5.86 0.53 87% 87% Peek semaphore 1.89 0.00 1.95 0.12 96% 3% Destroy semaphore 16.05 13.67 29.30 1.40 59% 18% Post/Wait semaphore 2.38 1.95 3.91 0.67 78% 78% Create counter 2.01 0.00 3.91 0.35 84% 6% Get counter value 1.89 0.00 3.91 0.24 90% 6% Set counter value 4.58 3.91 5.86 0.88 65% 65% Tick counter 1.71 0.00 1.95 0.43 87% 12% Delete counter 3.84 1.95 7.81 0.36 87% 9% Create alarm 7.99 5.86 15.63 0.47 93% 3% Initialize alarm 2.01 0.00 3.91 0.35 84% 6% Disable alarm 6.53 5.86 13.67 1.01 75% 75% Enable alarm 2.32 1.95 3.91 0.59 81% 81% Delete alarm 4.76 3.91 7.81 1.01 59% 59% Tick counter [1 alarm] 19.53 17.58 23.44 0.24 90% 6% Tick counter [many alarms] 7.57 5.86 13.67 0.75 75% 21% Tick & fire counter [1 alarm] 98.57 97.66 105.47 1.14 96% 62% Tick & fire counters [>1 together] 22.15 21.48 27.34 0.96 71% 71% Tick & fire counters [>1 separately] 359.18 357.42 384.77 1.10 65% 31% Alarm latency [0 threads] 362.63 357.42 396.48 2.55 43% 27% Alarm latency [2 threads] 408.22 402.34 416.02 2.73 55% 21% Alarm latency [many threads] 378.63 375.00 494.14 2.56 93% 71% Alarm -> thread resume latency 9.78 5.86 19.53 0.00 Clock/interrupt latency 12.21 5.86 31.25 0.00 Clock DSR latency 12 0 316 (main stack: 752) Thread stack used (1120 total) All done, main stack : stack used 752 size 2400 All done : Interrupt stack used 288 size 4096 All done : Idlethread stack used 276 size 2048 Timing complete - 30550 ms total PASS:<Basic timing OK> EXIT:<done>
Startup, main stack : stack used 404 size 2400 Startup : Interrupt stack used 136 size 4096 Startup : Idlethread stack used 84 size 2048 eCos Kernel Timings Notes: all times are in microseconds (.000001) unless otherwise stated Reading the hardware clock takes 6 'ticks' overhead ... this value will be factored out of all other measurements Clock interrupt took 120.74 microseconds (150 raw clock ticks) Testing parameters: Clock samples: 32 Threads: 50 Thread switches: 128 Mutexes: 32 Mailboxes: 32 Semaphores: 32 Scheduler operations: 128 Counters: 32 Alarms: 32 Confidence Ave Min Max Var Ave Min Function ====== ====== ====== ====== ========== ======== 99.01 68.00 129.60 15.62 50% 26% Create thread 21.60 21.60 21.60 0.00 100% 100% Yield thread [all suspended] 15.65 15.20 16.00 0.39 56% 44% Suspend [suspended] thread 15.79 15.20 16.00 0.31 74% 26% Resume thread 23.65 23.20 24.00 0.39 56% 44% Set priority 2.26 1.60 2.40 0.24 82% 18% Get priority 51.39 51.20 52.00 0.29 76% 76% Kill [suspended] thread 21.60 21.60 21.60 0.00 100% 100% Yield [no other] thread 29.47 28.00 29.60 0.22 86% 2% Resume [suspended low prio] thread 15.60 15.20 16.00 0.40 100% 50% Resume [runnable low prio] thread 27.73 24.00 28.00 0.40 74% 2% Suspend [runnable] thread 21.60 21.60 21.60 0.00 100% 100% Yield [only low prio] thread 15.65 15.20 16.00 0.39 56% 44% Suspend [runnable->not runnable] 51.39 51.20 52.00 0.29 76% 76% Kill [runnable] thread 27.66 27.20 28.80 0.41 54% 44% Destroy [dead] thread 68.93 64.80 69.60 0.35 72% 2% Destroy [runnable] thread 91.26 90.40 107.20 0.64 66% 32% Resume [high priority] thread 49.14 48.80 49.60 0.39 57% 57% Thread switch 2.20 1.60 2.40 0.30 75% 25% Scheduler lock 10.20 9.60 10.40 0.30 75% 25% Scheduler unlock [0 threads] 10.20 9.60 10.40 0.30 75% 25% Scheduler unlock [1 suspended] 10.20 9.60 10.40 0.30 75% 25% Scheduler unlock [many suspended] 10.20 9.60 10.40 0.30 75% 25% Scheduler unlock [many low prio] 6.85 6.40 7.20 0.39 56% 43% Init mutex 18.40 18.40 18.40 0.00 100% 100% Lock [unlocked] mutex 19.57 19.20 20.00 0.40 53% 53% Unlock [locked] mutex 16.55 16.00 16.80 0.34 68% 31% Trylock [unlocked] mutex 14.55 14.40 15.20 0.24 81% 81% Trylock [locked] mutex 3.55 3.20 4.00 0.39 56% 56% Destroy mutex 119.85 119.20 120.00 0.24 81% 18% Unlock/Lock mutex 12.85 12.80 13.60 0.09 93% 93% Create mbox 1.65 1.60 2.40 0.09 93% 93% Peek [empty] mbox 20.70 20.00 20.80 0.17 87% 12% Put [first] mbox 1.65 1.60 2.40 0.09 93% 93% Peek [1 msg] mbox 20.70 20.00 20.80 0.17 87% 12% Put [second] mbox 1.65 1.60 2.40 0.09 93% 93% Peek [2 msgs] mbox 20.85 20.80 21.60 0.09 93% 93% Get [first] mbox 20.85 20.80 21.60 0.09 93% 93% Get [second] mbox 19.90 19.20 20.00 0.17 87% 12% Tryput [first] mbox 17.60 17.60 17.60 0.00 100% 100% Peek item [non-empty] mbox 20.90 20.80 21.60 0.17 87% 87% Tryget [non-empty] mbox 16.80 16.80 16.80 0.00 100% 100% Peek item [empty] mbox 17.65 17.60 18.40 0.09 93% 93% Tryget [empty] mbox 1.85 1.60 2.40 0.34 68% 68% Waiting to get mbox 1.85 1.60 2.40 0.34 68% 68% Waiting to put mbox 19.40 19.20 20.00 0.30 75% 75% Delete mbox 65.05 64.80 65.60 0.34 68% 68% Put/Get mbox 7.05 6.40 7.20 0.24 81% 18% Init semaphore 15.55 15.20 16.00 0.39 56% 56% Post [0] semaphore 17.35 16.80 17.60 0.34 68% 31% Wait [1] semaphore 14.60 14.40 15.20 0.30 75% 75% Trywait [0] semaphore 14.20 13.60 14.40 0.30 75% 25% Trywait [1] semaphore 4.55 4.00 4.80 0.34 68% 31% Peek semaphore 3.75 3.20 4.00 0.34 68% 31% Destroy semaphore 70.85 70.40 71.20 0.39 56% 43% Post/Wait semaphore 6.05 5.60 6.40 0.39 56% 43% Create counter 2.25 1.60 2.40 0.24 81% 18% Get counter value 2.25 1.60 2.40 0.24 81% 18% Set counter value 19.70 19.20 20.00 0.37 62% 37% Tick counter 3.45 3.20 4.00 0.34 68% 68% Delete counter 9.05 8.80 9.60 0.34 68% 68% Create alarm 29.60 29.60 29.60 0.00 100% 100% Initialize alarm 2.15 1.60 2.40 0.34 68% 31% Disable alarm 29.35 28.80 29.60 0.34 68% 31% Enable alarm 5.10 4.80 5.60 0.37 62% 62% Delete alarm 23.20 23.20 23.20 0.00 100% 100% Tick counter [1 alarm] 138.00 137.60 138.40 0.40 100% 50% Tick counter [many alarms] 40.40 40.00 40.80 0.40 100% 50% Tick & fire counter [1 alarm] 704.25 697.60 804.00 12.47 93% 93% Tick & fire counters [>1 together] 155.20 155.20 155.20 0.00 100% 100% Tick & fire counters [>1 separately] 105.20 104.80 151.20 0.76 99% 94% Alarm latency [0 threads] 117.57 104.80 149.60 7.13 57% 25% Alarm latency [2 threads] 117.49 104.80 148.80 7.10 58% 26% Alarm latency [many threads] 192.59 177.60 316.00 1.93 98% 0% Alarm -> thread resume latency 22.10 21.60 24.00 0.00 Clock/interrupt latency 38.69 32.80 61.60 0.00 Clock DSR latency 297 276 316 (main stack: 752) Thread stack used (1120 total) All done, main stack : stack used 752 size 2400 All done : Interrupt stack used 288 size 4096 All done : Idlethread stack used 272 size 2048 Timing complete - 30350 ms total PASS:<Basic timing OK> EXIT:<done>
------------------------------- Startup, main stack : stack used 404 size 2400 Startup : Interrupt stack used 136 size 4096 Startup : Idlethread stack used 84 size 2048 eCos Kernel Timings Notes: all times are in microseconds (.000001) unless otherwise stated Reading the hardware clock takes 15 'ticks' overhead ... this value will be factored out of all other measurements Clock interrupt took 291.41 microseconds (364 raw clock ticks) Testing parameters: Clock samples: 32 Threads: 50 Thread switches: 128 Mutexes: 32 Mailboxes: 32 Semaphores: 32 Scheduler operations: 128 Counters: 32 Alarms: 32 Confidence Ave Min Max Var Ave Min Function ====== ====== ====== ====== ========== ======== 257.78 168.00 568.00 48.70 56% 28% Create thread 50.21 49.60 50.40 0.29 76% 24% Yield thread [all suspended] 36.26 36.00 36.80 0.35 68% 68% Suspend [suspended] thread 37.20 36.80 37.60 0.40 100% 50% Resume thread 56.24 56.00 56.80 0.34 70% 70% Set priority 5.20 4.80 5.60 0.40 100% 50% Get priority 122.75 122.40 123.20 0.39 56% 56% Kill [suspended] thread 50.19 49.60 50.40 0.31 74% 26% Yield [no other] thread 69.49 66.40 69.60 0.21 92% 2% Resume [suspended low prio] thread 37.01 36.80 37.60 0.31 74% 74% Resume [runnable low prio] thread 64.75 55.20 65.60 0.38 80% 2% Suspend [runnable] thread 50.19 49.60 50.40 0.31 74% 26% Yield [only low prio] thread 36.24 36.00 36.80 0.34 70% 70% Suspend [runnable->not runnable] 122.75 122.40 123.20 0.39 56% 56% Kill [runnable] thread 67.76 67.20 68.00 0.34 70% 30% Destroy [dead] thread 167.07 158.40 168.00 0.35 92% 2% Destroy [runnable] thread 213.49 212.00 249.60 1.46 84% 90% Resume [high priority] thread 122.81 120.00 389.60 4.17 99% 99% Thread switch 4.70 4.00 4.80 0.17 87% 12% Scheduler lock 23.70 23.20 24.00 0.37 62% 37% Scheduler unlock [0 threads] 23.60 23.20 24.00 0.40 100% 50% Scheduler unlock [1 suspended] 23.70 23.20 24.00 0.37 62% 37% Scheduler unlock [many suspended] 23.60 23.20 24.00 0.40 100% 50% Scheduler unlock [many low prio] 15.65 15.20 16.00 0.39 56% 43% Init mutex 42.40 42.40 42.40 0.00 100% 100% Lock [unlocked] mutex 45.37 44.80 46.40 0.36 65% 31% Unlock [locked] mutex 39.20 39.20 39.20 0.00 100% 100% Trylock [unlocked] mutex 34.45 34.40 35.20 0.09 93% 93% Trylock [locked] mutex 8.00 8.00 8.00 0.00 100% 100% Destroy mutex 284.42 284.00 284.80 0.40 53% 46% Unlock/Lock mutex 29.40 28.80 29.60 0.30 75% 25% Create mbox 3.35 3.20 4.00 0.24 81% 81% Peek [empty] mbox 49.35 48.80 49.60 0.34 68% 31% Put [first] mbox 3.35 3.20 4.00 0.24 81% 81% Peek [1 msg] mbox 49.35 48.80 49.60 0.34 68% 31% Put [second] mbox 3.35 3.20 4.00 0.24 81% 81% Peek [2 msgs] mbox 49.15 48.80 49.60 0.39 56% 56% Get [first] mbox 49.15 48.80 49.60 0.39 56% 56% Get [second] mbox 47.80 47.20 48.00 0.30 75% 25% Tryput [first] mbox 41.40 40.80 41.60 0.30 75% 25% Peek item [non-empty] mbox 49.40 48.80 49.60 0.30 75% 25% Tryget [non-empty] mbox 40.15 40.00 40.80 0.24 81% 81% Peek item [empty] mbox 40.95 40.80 41.60 0.24 81% 81% Tryget [empty] mbox 4.05 4.00 4.80 0.09 93% 93% Waiting to get mbox 4.05 4.00 4.80 0.09 93% 93% Waiting to put mbox 45.60 45.60 45.60 0.00 100% 100% Delete mbox 153.27 152.80 153.60 0.39 59% 40% Put/Get mbox 16.80 16.80 16.80 0.00 100% 100% Init semaphore 36.60 36.00 36.80 0.30 75% 25% Post [0] semaphore 39.60 39.20 40.00 0.40 100% 50% Wait [1] semaphore 34.80 34.40 35.20 0.40 100% 50% Trywait [0] semaphore 33.35 32.80 33.60 0.34 68% 31% Trywait [1] semaphore 10.30 9.60 10.40 0.17 87% 12% Peek semaphore 8.80 8.80 8.80 0.00 100% 100% Destroy semaphore 166.92 166.40 167.20 0.36 65% 34% Post/Wait semaphore 13.60 13.60 13.60 0.00 100% 100% Create counter 4.85 4.80 5.60 0.09 93% 93% Get counter value 4.80 4.80 4.80 0.00 100% 100% Set counter value 45.25 44.80 45.60 0.39 56% 43% Tick counter 7.75 7.20 8.00 0.34 68% 31% Delete counter 20.80 20.80 20.80 0.00 100% 100% Create alarm 69.30 68.80 69.60 0.37 62% 37% Initialize alarm 4.80 4.80 4.80 0.00 100% 100% Disable alarm 67.35 67.20 68.00 0.24 81% 81% Enable alarm 11.80 11.20 12.00 0.30 75% 25% Delete alarm 54.80 54.40 55.20 0.40 100% 50% Tick counter [1 alarm] 372.35 363.20 652.80 17.53 96% 96% Tick counter [many alarms] 95.50 95.20 96.00 0.37 62% 62% Tick & fire counter [1 alarm] 1757.92 1707.20 1996.80 81.43 81% 81% Tick & fire counters [>1 together] 404.37 404.00 404.80 0.40 53% 53% Tick & fire counters [>1 separately] 256.57 254.40 395.20 2.17 98% 97% Alarm latency [0 threads] 296.60 255.20 359.20 23.53 53% 31% Alarm latency [2 threads] 307.49 265.60 357.60 27.52 53% 53% Alarm latency [many threads] 467.04 432.00 788.80 5.03 97% 1% Alarm -> thread resume latency 55.63 54.40 60.80 0.00 Clock/interrupt latency 101.23 80.80 1433.60 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 288 size 4096 All done : Idlethread stack used 272 size 2048 Timing complete - 30780 ms total PASS:<Basic timing OK> EXIT:<done>
Appendix 1: Real-time characterization | ||
---|---|---|