Clone wiki

hmbdc-rel / Home

PERFORMANCE

hmbdc performance varies according to the hardware setting. Here is the performance measured in our lab with specific hardware info and command line used.
perf-sample.txt

More performance data including hmbdc network messaging comparison with other products can be found at (http://www.hummingbirdcode.net/p/blog-page.html)

DESIGN

hmbdc design follows a mixture of Generic Programming and OO. 
* A Context (Context_1) is the message dispatcher object that accepts messages from anywhere in the process and delivers messages (in broadcast or partition style) to its Clients according to message types (message M,N) that the Client registers.
* A process can have one or more Context objects. Each Context manages a bunch of user written Clients and / or network transport engines (engines are also Clients conceptually).
* Clients can (optionally) receive messages in the form of non-concurrent callbacks(see Client_A). Some Clients don't receive messages from the Context and are just managed by it (Client_B and all TransportEngines).
* Network transport engines facilitate messages to / from network. They are owned by a NetContext which is a singleton and serves as access point of net communication resources of a specific category(mcast, tcpcast or netmap ...)* .
* Multiple Contexts from different processes can be tied together (see Client_1 and Client_67) thru an ipc transport so messages (see M, N from process foo arrive at process bar) can propagate crossing the process boundary within the same host (IPC);
                                                             HMBDC CONCEPT FLOWCHART
    +---------------------------------------------------------------------+
    | process Foo on host X                        attach                 |
    |              +------------------------------------------------------------>xxxxxxxxxxxxxxxxxxxxxx
    |              |                                                      |      x                    xx
    |              |        manage   +--------------+                     |      x an ipc transport    xx
    |              |       +-------->| Client_B     |                     |      x tying Contexts       x    attach
    |              |       |         +--------------+                     |      x from different       x<------+
    |              |       |                                              |      x process               xx     |
    |              |       |         +--------------------------+         |      x                        x     |
    |              |       |  message| Client_A                 |         |      xxxxxxxxxxxxxxxxxxxxxxxxxx     |
    |     +--------+----------+  M   |--------------------------|         |                                     |
    |     |    Context_1      |----->|handleMessageCb(M&){...}  |         |                                     |
    |     +-------------------+      |                          |         |                         +---------------------------+
    |        ^           | |         |                          |         |                         |     +-----+------+        |
    |        | messages  | +-------->|handleMessageCb(N){...}   |         |                         |  +--+Context_67  |        |
    |        |           |   message |                          |         |                         |  |  +---+--------+        |
    |     xxxxxxxxxxxx   |      N    |                          |         |             xx          |  |      |messages M,N...  |
    |     x          x   |           +--------------------------+         |           xxxxxxx       | manage  |from process Foo |
    |    x anywhere  x   |                       ^                        |         xxx      xxx    |  |      v                 |
    |    x   in      x   |      manage           |                        |        xx          x    |  |  +------------+        |
    |    x process   x   +-----------------------+                        |       xx           x    |  +->|Client_K    |        |
    |    x          xx                                                    |      x             x    |     +------------+        |
    |     x         x     manage     +---------------+                    |      x             x    |                           |
    |     xx       xx    +---------->|  Client_C     |                    |     x              x    |                           |
    |      xx    xx      |           +---------------+     net traffic    |    xx              x    |                           |
    |       xxxxxx       |                 ^           +----------------------+x               x    |            process Bar    |
    |         +          |                 |           | +------------+   |    x               xx   |              on host X    |
    |         |          |                 |messages   | |NetContext  |   |    x                x   +---------------------------+
    |         |          |                 |           | |------------|   |   x                 x
    |         |messages  |                 |           | |holding net |   |   x                 x
    |         |      +---+-------+         |           | |recources   |   |   x                 x
    |         +----->| Context_2 +---------+           | +-------+----+   |   x                 x    net traffic
    |         |      +-----------+                     |         |        |   x      network    +<-------------+
    |         |              ^                         |       create     |   x                 x              |
    |         |              |                         v        and       |   x     (pub/sub    x              v
    |         |           messages   +------------------------+ own       |    x                xx   +-------------------+
    |         |       (from network) |  RecvTransportEngine   |  |        |    x       via       x   |host Y             |
    |         |              |       +------------------------|  |        |    x                 x   |                   |
    |         |              +-------+ also a Client managed  <--+        |    x     mcast       x   |     ...           |
    |         |                      | by a Context(not shown)|  |        |    x     tcpcast     x   |                   |
    |         |                      +------------------------+  |        |    x     netmap      x   |                   |
    |         |                                                  |        |     x    rmcast      x   |                   |
    |         | (to network)         +------------------------+  create   |     x    rnetmap)    x   |                   |
    |         |  messages            | SendTransportEngine    |  and      |     x                x   +-------------------+
    |         +--------------------->|------------------------|  own      |     x                x
    |                                | also a Client managed  |  |        |     x                 x   net traffic
    |                                | by a Context(not shown)<--+        |     x                 x<------------+     
    |                                +-----------------+------+           |     x                 x             |
    |                                                  |                  |     x                 x             v
    +--------------------------------------------------|------------------+     x                 x       +-----+-----+
                                                       |                        x                 x       | host Z    |
                                                       |                        x                 x       |           |
                                                       |                         xxx              x       |    ...    |
                                                       |    net traffic             xx            x       |           |
                                                       +---------------------------> xxxxxxxxxxxxxx       +-----------+      

Updated