Sunday, 2 November 2014




When benchmarking ORBs, it is important to look at more than just the total time it takes for a message invocation to complete. One important measurement is the time it takes to perform the transfer without the ORB, or with TCP/IP, to measure the time a transfer takes using a simple socket program. The difference between the socket time and the time with the ORB in the loop is the true measure of the CORBA overhead.

Lockheed Martin Advanced Technology Laboratories has performed tests of many real-time and non-real-time ORBs for throughput and predictability characteristics. They have done a nice job of isolating the determinism (or lack thereof) of the operating system and protocol stack from the ORB processing. Their tests of ORBexpress® have been extremely favorable, showing that ORBexpress beats all other ORBs in performance.
Types of Overhead

CORBA adds two types of overhead, Space and Time.
1)    "Space"
-      added to the system is the number of bytes on the wire added to create the data for CORBA's standardized messaging format, General Inter-ORB Protocol (GIOP), or Internet Inter-ORB Protocol (IIOP) for TCP/IP systems. For TCP/IP systems, there is already a certain amount of overhead inherent in the protocol. For example:
·         Ethernet adds 26 bytes per frame
·         IP adds 12 bytes per packet
·         TCP adds 24 bytes (+ options) per packet

CORBA IIOP adds an additional 40 to 80 bytes per message to this overhead. With CORBA IIOP, sending fewer big messages is more efficient (in terms of added overhead) than sending many small ones.
2)    "Time"  is the amount of time the ORB takes to process each message.
This time is divided into two parts :
I ) Fixed Overhead
Fixed overhead is the overhead occurring as a result of the ORB performing a single, zero parameter message invocation. Fixed overhead consists of the time the ORB takes to de-multiplex, perform an up-call, context switch, perform system calls, and similar tasks that must occur for every message transfer. In order to achieve low fixed overhead, an ORB must quickly locate objects, invoke operations on the objects, and avoid unnecessary context switches and system calls.

II ) Variable Overhead
Variable overhead is basically marshalling and de-marshalling speed, and will vary based on the number and type of parameters for a given message. In order to achieve low variable overhead, an ORB must marshall and de-marshall data quickly, use the transport efficiently, and avoid making multiple copies of the data.

No comments:

Post a Comment