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

Board: Intel StrongARM EBSA-285 Evaluation Board

CPU : Intel StrongARM SA-110 228MHz

 


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>

Board: Cirrus Logic EDB7111-2 Development Board

CPU : Cirrus Logic EP7211 73MHz

 


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>

Board: Cirrus Logic EDB7111-2 Development Board

CPU : Cirrus Logic EP7212 73MHz

 


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>

Board: ARM PID Evaluation Board

CPU : ARM 7TDMI 20 MHz

 


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>

Board: ARM PID Evaluation Board

CPU : ARM 920T 20 MHz

 
-------------------------------

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

To Contents

To previous page

To next page