AMICO Transport

Introduction

AMICO protocol include a shared memory and socket transport to implement inter-process communication between module. There is three class to do this:

AMICO_net use TCP network socket and the process address is pointed with a.b.c.d:port address.
AMICO_unix use TCP unix socket to implement a local connection between processes.
Both class are derived from AMICO_socket base class.

Sockets

The classes AMICO_net and AMICO_socket are derived from AMICO_socket class and implement conections based on socket. It uses a connection-oriented (TCP) protocol.

Performances

To do some tests with the phisical layer of AMICO you can use the files: test_amico.cpp , test_socket.cpp. The value in the following table are a little bit variable because depends by environment used. For 'synchronous' means that the data are allocated previously. With this tecnique we have the best performance.


   AMICO Inter Process Communications (IPC)
   Num. packets = 1000
   Size packets = 8000 bytes
   CPU          = DualCore 2.0GHz
   Memory       = 2GBytes
                                    ______________________________________________________
                                   |                  |                 |                 |
                                   |       msec       |    Packet/sec   |      MB/sec     |
    _______________________________|__________________|_________________|_________________|
   |                               |                  |                 |                 |
   | UNIX Socket (TCP)             |      43.050      |      23228      |       185       |
   |_______________________________|__________________|_________________|_________________|
   |                               |                  |                 |                 |
   | NET Socket  (TCP)             |      50.652      |      19742      |       157       |
   |_______________________________|__________________|_________________|_________________|



   AMICO Remote Procedure Call (RPC)
   Num. calls   = 200
   Size packets = 16 bytes
   CPU          = DualCore 2.4GHz
   Memory       = 2GBytes
    ______________________________________________________________________________________
   |                |                       |                           |                 |
   |  AMICO_link    | Primitive Call (Unix) |  5.912 msec for 200 calls | 33829 calls/sec |
   |                |_______________________|___________________________|_________________|
   |                |                       |                           |                 |
   |                | Primitive Call (Net)  |  7.253 msec for 200 calls | 27574 calls/sec |
   |________________|_______________________|___________________________|_________________|
    ______________________________________________________________________________________
   |                |                       |                           |                 |
   |  DBus          |freedesktop ServiceName| 82.534 msec for 200 calls |  2423 calls/sec |
   |________________|_______________________|___________________________|_________________|



Generated on Fri Mar 5 16:50:45 2010 for CarLinO by  doxygen 1.5.8