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: NEC VR4373

CPU : NEC VR4300 133MHz

 

Startup, main stack             : stack used  1304 size  3576
Startup              :  Interrupt stack used   980 size  4096
Startup              : Idlethread stack used   494 size  2552

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

Reading the hardware clock takes 3 ™ticks' overhead
... this value will be factored out of all other measurements
Clock interrupt took    6.49 microseconds (431 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
  ======  ======  ======  ====== ========== ========
   17.21   16.18   22.14    0.88   75%  68% Create thread
    0.84    0.78    1.29    0.10   81%  81% Yield thread [all suspended]
    0.90    0.62    3.20    0.35   87%  87% Suspend [suspended] thread
    0.74    0.65    1.16    0.12   81%  68% Resume thread
    1.11    0.90    1.70    0.25   75%  68% Set priority
    0.11    0.05    0.35    0.09   75%  75% Get priority
    2.93    2.24    8.27    0.78   93%  75% Kill [suspended] thread
    0.88    0.78    1.92    0.16   93%  81% Yield [no other] thread
    1.82    1.20    4.71    0.62   87%  62% Resume [suspended low prio] thread
    0.70    0.63    0.86    0.09   68%  68% Resume [runnable low prio] thread
    1.21    1.07    1.61    0.13   81%  68% Suspend [runnable] thread
    0.86    0.78    1.58    0.13   81%  81% Yield [only low prio] thread
    0.69    0.62    0.84    0.09   68%  68% Suspend [runnable->not runnable]
    2.64    2.24    4.35    0.43   81%  62% Kill [runnable] thread
    1.50    1.07    5.82    0.56   93%  87% Destroy [dead] thread
    3.66    2.75    7.74    0.82   50%  56% Destroy [runnable] thread
   13.65    8.33   27.88    3.70   50%  43% Resume [high priority] thread
    2.04    1.89    3.32    0.15   46%  49% Thread switch

    0.19    0.05    0.83    0.13   48%  44% Scheduler lock
    0.50    0.41    1.59    0.13   89%  73% Scheduler unlock [0 threads]
    0.52    0.41    1.29    0.14   89%  64% Scheduler unlock [1 suspended]
    0.56    0.41    1.49    0.15   42%  47% Scheduler unlock [many suspended]
    0.56    0.41    1.41    0.15   43%  47% Scheduler unlock [many low prio]

    0.57    0.20    2.33    0.27   65%  50% Init mutex
    0.89    0.75    3.35    0.20   96%  75% Lock [unlocked] mutex
    0.90    0.74    4.38    0.25   96%  93% Unlock [locked] mutex
    0.77    0.65    2.63    0.17   96%  75% Trylock [unlocked] mutex
    0.66    0.59    1.16    0.10   75%  75% Trylock [locked] mutex
    0.07    0.00    0.45    0.09   75%  75% Destroy mutex
    7.95    7.71    9.49    0.19   50%  46% Unlock/Lock mutex

    1.04    0.81    3.44    0.27   93%  68% Create mbox
    0.10    0.02    0.57    0.11   71%  68% Peek [empty] mbox
    1.15    0.83    4.71    0.31   53%  71% Put [first] mbox
    0.10    0.02    0.57    0.12   68%  68% Peek [1 msg] mbox
    1.01    0.83    3.83    0.22   93%  75% Put [second] mbox
    0.09    0.02    0.57    0.10   71%  71% Peek [2 msgs] mbox
    1.03    0.81    5.02    0.27   96%  87% Get [first] mbox
    0.93    0.81    1.61    0.14   84%  62% Get [second] mbox
    1.07    0.77    4.18    0.23   68%  50% Tryput [first] mbox
    0.89    0.72    3.49    0.21   93%  71% Peek item [non-empty] mbox
    1.04    0.83    4.09    0.26   90%  81% Tryget [non-empty] mbox
    0.79    0.68    1.97    0.15   87%  68% Peek item [empty] mbox
    0.84    0.72    2.36    0.17   93%  68% Tryget [empty] mbox
    0.13    0.02    0.59    0.13   87%  62% Waiting to get mbox
    0.13    0.02    0.90    0.13   90%  62% Waiting to put mbox
    0.93    0.77    3.23    0.21   90%  71% Delete mbox
    4.74    4.51    8.80    0.32   93%  78% Put/Get mbox

    0.50    0.21    1.95    0.29   90%  50% Init semaphore
    0.86    0.57    2.87    0.29   93%  56% Post [0] semaphore
    1.01    0.74    3.62    0.28   93%  56% Wait [1] semaphore
    0.87    0.60    3.17    0.28   90%  59% Trywait [0] semaphore
    0.74    0.62    1.70    0.14   93%  56% Trywait [1] semaphore
    0.36    0.11    1.11    0.26   65%  56% Peek semaphore
    0.25    0.12    1.19    0.14   93%  56% Destroy semaphore
    7.85    7.52    8.93    0.21   62%  43% Post/Wait semaphore

    0.90    0.44    3.08    0.29   65%  28% Create counter
    0.07    0.05    0.89    0.05   96%  96% Get counter value
    0.06    0.05    0.33    0.02   96%  96% Set counter value
    0.88    0.86    1.62    0.05   96%  96% Tick counter
    0.13    0.12    0.41    0.02   96%  96% Delete counter

    1.37    0.81    2.95    0.27   62%  25% Create alarm
    1.35    1.17    6.03    0.31   96%  93% Initialize alarm
    0.11    0.08    0.65    0.05   90%  90% Disable alarm
    1.23    1.14    3.05    0.15   93%  87% Enable alarm
    0.21    0.18    0.47    0.04   90%  90% Delete alarm
    1.03    0.99    2.11    0.07   96%  96% Tick counter [1 alarm]
    4.96    4.96    4.96    0.00  100% 100% Tick counter [many alarms]
    1.70    1.67    2.51    0.05   96%  96% Tick & fire counter [1 alarm]
   26.39   26.38   26.71    0.02   96%  96% Tick & fire counters [>1 together]
    5.65    5.64    5.91    0.02   96%  96% Tick & fire counters [>1 separately]
    2.55    2.38    9.86    0.19   96%  54% Alarm latency [0 threads]
    5.37    3.80    9.73    0.95   50%  34% Alarm latency [2 threads]
    8.79    5.83   16.12    1.29   57%  14% Alarm latency [many threads]

    5.85    2.26   16.24    0.00            Clock/interrupt latency

 1540    1536    1544  (main stack:  1664)  Thread stack used (2552 total)
All done, main stack            : stack used  1664 size  3576
All done             :  Interrupt stack used   312 size  4096
All done             : Idlethread stack used  1440 size  2552

Timing complete - 23810 ms total

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



 

Appendix 1: Real-time characterization

To Contents

To previous page

To next page