Real-Time CORBA

Last Update October 4, 2000

This documents keeps track of the TAO's Real-Time CORBA Development Status , and a description of the Release Notes for our implementation. For any comment or question on a specific aspect of RT CORBA you can contact the responsible as listed in the Real-Time CORBA Development Status, or you can contact one of us: Marina Spivak, Irfan Pyrali, Angelo Corsaro.

RT Corba Development Status

The scope of this brief document is to keep track of the progress of the RT-CORBA implementation, and to let the user understand what is already in place what will be soon available and what will not be supported. Table 1 contains a detailed list of the features that are described by the RT-CORBA spec. and their status respect to our implementation. Table 2 contains features that are not described in the  RT-CORBA spec. but that are needed to "enable" our RT-CORBA implementation, and at last Table 3 contains a list of issues that should be addressed soon.

               

Table 1 - Status of the feature described in the RT CORBA Spec.

Feature Reference Status  Contact
Real-Time ORB ptc/99-05-03 sec. 4.1 Done Marina Spivak
Real-Time POA ptc/99-05-03 sec. 4.2 Done Irfan Pyrali
CORBA Priority & Priority Mappings

ptc/99-05-03 sec. 4.4, sec. 4.5

Done Marina Spivak
Real-Time Current ptc/99-05-03 sec. 4.6 Done Marina Spivak
Real-Time CORBA Priority Models ptc/99-05-03 sec. 4.7 Done Marina Spivak
Priority Transforms ptc/99-05-03 sec. 4.8 Not Supported -
Mutex Interface ptc/99-05-03 sec. 4.9 Not Supported -
Thread Pools ptc/99-05-03 sec. 4.10 Due - ??? Irfan Pyrali
Implicit & Explicit Binding ptc/99-05-03 sec. 4.11 Due Oct. 13 2K Marina Spivak
Priority Banded Connections ptc/99-05-03 sec. 4.12 Done Marina Spivak
Private Connection Policy ptc/99-05-03 sec. 4.13 Due Oct. 13 2K Marina Spivak
Protocol Configuration ptc/99-05-03 sec. 4.15 Done Marina Spivak

 

Real-Time ORB - Extension to the CORBA::ORB interface that provides operations to create and destroy other constituents of a RT ORB.

Real Time POA - RT extension of the traditional POA that provides additional operation to support object level priority and "understand" the RT Policies defined in ptc/99-05-03. This interface is derived from the POA interface so it support all the semantics prescribed for a non RT-POA.

CORBA Priority & Priority Mappings - RT-CORBA Priority have the intent of shielding the user from the different priority scheme that a RTOS might use, providing a uniform representation system wide. RT-CORBA Priority Mappings take care of mapping RTCORBA::Priority into native priorities. Right now to scheme are implemented and respectively the Linear and Direct.

Real-Time Current - The RTCORBA::Current interface is derived from CORBA::Current, and provide access to the CORBA Priority of the current thread. Real Time CORBA Priority can be associated with the current thread by using this interface.

Real-Time CORBA Priority Models - Real-Time CORBA supports two models for the coordination of priorities across a system, that let set the priority at which a servant executes. This two different model are Client Propagated Priority Model and Server Declared Priority Model.

Priority Transforms - Priority Transforms allow the application designer to implement RT-CORBA system using priority models different from either the Client Propagated or Server Declared. Priority Transforms are user provided functions that map one RTCORBA::Priority value to another RTCORBA::Priority value.

Mutex Interface - Real-Time CORBA defines a Mutex interface, and two operation in the RTORB interface for creating and destroying such  mutex. This mutex should have the same priority inheritance scheme used by the ORB.

Thread Pools - Real-Time CORBA define an interface for creating Thread Pools, with or without lanes, and for creating Thread Pools Priorities. Lanes are just sub-sets of threads at assigned different RTCORBA::Priority values. The only feature that won't be supported is the Request Buffering (see sec. 4.10.3).

Implicit & Explicit Binding - Provide control on when a binding is made on a object reference. In particular a call to validate_connection force the binding to an object reference to be made as explicit binding.

 Priority Banded Connections - Real-Time CORBA defines priority bands that are in turn used to serve request depending on the priority model used by the target object.

Private Connection Policy - This policy allows a client to obtain a private transport connection which will not be shared with other client-server connections.

Protocol Configuration - Enables the selection and configuration of the protocols on the client and server side of the ORB.

Table 2 - Feature needed to Enable RT-CORBA

Feature Reference Status  Contact
Collocation Not yet available Done Angelo Corsaro
Policy Streaming ptc/99-05-03 orbos/98-05-05 Done Angelo Corsaro
Invocation Timeout ptc/99-05-03 sec. 4.14 orbos/98-05-05 Done Carlos O'Ryan

 

Collocation - A new collocation scheme has been designed and is in its last stage of development. The collocation scheme has been changed because the selection of the right proxy to use to perform a call, now has to be taken on a call-per-call basis, to avoid interference between thread priorities. In designing the new scheme we tried to reduce the memory footprint and the overhead that the new scheme needs to introduce.

Policy Streaming - Different policies defined by the RT-CORBA Spec. need to be exposed to the client by  embeddeding those  into the IOR. This facilities were added to those policies.

Invocation Timeout - Allows the setting of timeout that expire if an invocation doesn't complete in a given amount of time.

 

 

Table 3 - Issue to be shortly addressed

Issue Status  Contact

Factoring of TAO's Protocol Policies

??? ???
Profile Mangement ??? ???
RT CORBA Example/Test ??? ???
RT-TAO Performance ??? ???

 

Factoring of TAO's Protocol Policies -

Profile Management - The Profile management is right now quite nasty. The class interface are pretty counter-intuitive, and the code that deal with profile needs to be redesigned and re-implemented.

RT CORBA Example Test - Examples and Tests need to be written to show how to use  RT CORBA's features, and to massively test the behavior of the new stuff.

Performance - Performance tests needs to performed on TAO to see the impact of the changes and to early individuate critical path and bottlenecks.

 

Release Notes

We are currently working on implementing RT CORBA 1.0 specification in TAO. Our design is an extension of the endpoint-per-priority architecture mentioned in the Recently Completed Work section below. In this design, codenamed reactor-per-lane, each threadpool lane owns a set of I/O resources, i.e., Reactor, Acceptor, and Connector_Registry. Each request is serviced by a single thread without context switches, i.e., the same thread performs I/O and runs the servant code.

Below there is a list of feature recently added to TAO, and in also a brief description of the main feature that characterize certain feature related to our implementation of RT-CORBA.

 

Known issues:

Future work: