Appendix 1: Real-time characterization

To Contents

To previous page

To next page

 




Appendix 1: Real-time characterization

For a discussion of real-time performance measurement for eCos, see the eCos Users' Guide .

Sample numbers:

 

Board: Hitachi EDK7708

CPU : Hitachi SH3/7708 60MHz

 
 
Startup, main stack             : stack used   444 size  4112
Startup              :  Interrupt stack used    76 size  4096
Startup              : Idlethread stack used    96 size  2048

eCos Kernel Timings
Notes: all times are in microseconds (.000001) unless otherwise stated

Reading the hardware clock takes 2 ™ticks' overhead
... this value will be factored out of all other measurements
Clock interrupt took   14.75 microseconds (55 raw clock ticks)

Testing parameters:
   Clock samples:          32
   Threads:                16
   Thread switches:       128
   Mutexes:                32
   Mailboxes:              32
   Semaphores:             32
   Scheduler operations:  128
   Counters:               32
   Alarms:                 32


                                 Confidence
     Ave     Min     Max     Var  Ave  Min  Function
  ======  ======  ======  ====== ========== ========
   15.43   13.60   24.00    1.29   62%  50% Create thread
    3.33    3.20    4.27    0.18   93%  68% Yield thread [all suspended]
    2.90    2.40    5.33    0.36   81%  62% Suspend [suspended] thread
    2.93    2.67    4.80    0.27   93%  87% Resume thread
    4.30    3.73   10.13    0.73   93%  93% Set priority
    0.65    0.27    2.13    0.28   68%  62% Get priority
    9.72    8.53   21.33    1.45   93%  93% Kill [suspended] thread
    3.33    3.20    4.53    0.20   93%  75% Yield [no other] thread
    5.30    4.80   10.13    0.65   93%  87% Resume [suspended low prio] thread
    2.80    2.40    4.53    0.27   81%  75% Resume [runnable low prio] thread
    4.82    4.00    8.27    0.49   68%  25% Suspend [runnable] thread
    3.32    3.20    4.00    0.16   93%  68% Yield [only low prio] thread
    2.82    2.40    4.27    0.25   81%  12% Suspend [runnable->not runnable]
    9.45    8.53   19.47    1.25   93%  93% Kill [runnable] thread
    5.30    4.53   11.20    0.74   87%  93% Destroy [dead] thread
   11.83   10.67   25.07    1.65   93%  93% Destroy [runnable] thread
   19.53   17.33   31.20    1.88   75%  75% Resume [high priority] thread
    6.70    6.67   11.47    0.07   99%  99% Thread switch

    0.33    0.27    0.80    0.10   75%  75% Scheduler lock
    1.74    1.60    2.67    0.14   99%  50% Scheduler unlock [0 threads]
    1.72    1.60    3.20    0.14   99%  57% Scheduler unlock [1 suspended]
    1.81    1.60    3.20    0.10   75%  23% Scheduler unlock [many suspended]
    1.86    1.60    3.20    0.02   94%   4% Scheduler unlock [many low prio]

    1.22    1.07    3.20    0.20   96%  65% Init mutex
    3.21    2.93    5.87    0.17   68%  28% Lock [unlocked] mutex
    3.36    2.93    7.47    0.30   84%  75% Unlock [locked] mutex
    2.83    2.67    5.33    0.22   96%  65% Trylock [unlocked] mutex
    2.53    2.40    2.93    0.14   96%  53% Trylock [locked] mutex
    0.28    0.27    0.80    0.03   96%  96% Destroy mutex
   20.09   19.73   23.20    0.23   84%  12% Unlock/Lock mutex

    2.38    2.13    4.53    0.17   59%  34% Create mbox
    0.45    0.27    1.33    0.15   56%  40% Peek [empty] mbox
    3.70    3.20    7.20    0.29   84%  59% Put [first] mbox
    0.45    0.27    0.80    0.13   62%  34% Peek [1 msg] mbox
    3.67    3.20    5.60    0.23   81%   6% Put [second] mbox
    0.42    0.27    0.53    0.13   59%  40% Peek [2 msgs] mbox
    3.98    3.47    7.47    0.24   59%   9% Get [first] mbox
    3.97    3.47    4.80    0.24   59%  12% Get [second] mbox
    3.51    3.20    6.67    0.28   56%  78% Tryput [first] mbox
    3.29    2.93    5.60    0.29   59%  65% Peek item [non-empty] mbox
    4.06    3.47    7.20    0.26   68%   3% Tryget [non-empty] mbox
    3.03    2.67    5.33    0.19   93%   3% Peek item [empty] mbox
    3.36    3.20    4.80    0.18   96%  56% Tryget [empty] mbox
    0.57    0.27    1.33    0.09   84%   3% Waiting to get mbox
    0.52    0.27    1.07    0.11   62%  21% Waiting to put mbox
    3.88    3.47    7.47    0.30   78%  65% Delete mbox
   12.04   11.73   17.33    0.33   96%  96% Put/Get mbox

    1.17    1.07    2.40    0.16   71%  71% Init semaphore
    2.67    2.40    4.27    0.15   62%  25% Post [0] semaphore
    3.00    2.67    4.53    0.17   65%  12% Wait [1] semaphore
    2.54    2.40    4.80    0.20   96%  71% Trywait [0] semaphore
    2.42    2.40    2.93    0.03   96%  96% Trywait [1] semaphore
    0.79    0.53    2.13    0.15   59%  28% Peek semaphore
    0.77    0.53    1.87    0.12   71%  25% Destroy semaphore
   12.64   12.27   17.07    0.28   84%  96% Post/Wait semaphore

    1.27    1.07    2.93    0.17   53%  43% Create counter
    0.54    0.27    1.33    0.13   59%  21% Get counter value
    0.47    0.27    1.60    0.17   46%  43% Set counter value
    3.47    3.20    4.80    0.16   53%  28% Tick counter
    0.80    0.53    2.13    0.13   62%  25% Delete counter

    1.86    1.60    4.00    0.21   43%  40% Create alarm
    5.12    4.80    9.07    0.36   93%  75% Initialize alarm
    0.44    0.27    1.33    0.19   87%  53% Disable alarm
    4.77    4.27    9.60    0.35   87%  62% Enable alarm
    1.02    0.80    2.67    0.18   53%  40% Delete alarm
    3.56    3.47    5.33    0.15   84%  84% Tick counter [1 alarm]
   15.04   14.93   16.27    0.16   71%  71% Tick counter [many alarms]
    5.75    5.60    8.00    0.21   96%  68% Tick & fire counter [1 alarm]
   79.60   79.47   81.07    0.17   96%  65% Tick & fire counters [>1 together]
   17.04   16.80   18.93    0.15   65%  31% Tick & fire counters [>1 separately]
   12.44   12.27   29.60    0.31   96%  96% Alarm latency [0 threads]
   14.06   12.27   27.20    0.53   82%   4% Alarm latency [2 threads]
   19.62   17.07   38.40    1.44   57%  34% Alarm latency [many threads]

    2.79    2.40    6.13    0.00            Clock/interrupt latency

  376     376     376  (main stack:   764)  Thread stack used (992 total)
All done, main stack            : stack used   764 size  4112
All done             :  Interrupt stack used   176 size  4096
All done             : Idlethread stack used   352 size  2048

Timing complete - 23860 ms total

PASS:<Basic timing OK>
EXIT:<done>
 

Appendix 1: Real-time characterization

To Contents

To previous page

To next page