eCos User Guide
Prev |  | Next

# Appendix B. Real-time characterization

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

    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>

Prev | Home | Next
i386/Linux Synthetic Target Setup | Up | Board: Atmel AT91/EB40