1 <!doctype html public
"-//w3c//dtd html 4.0 transitional//en">
5 <title>RT CORBA
</title>
10 <h1 align=
"center">Real-Time CORBA
</h1>
11 <p align=
"center"><i>Last Update October
4,
2000</i></p>
12 <p align=
"left">This documents keeps track of the TAO's
<a href=
"#RT Corba Development Status">Real-Time CORBA Development Status
</a> , and a description of the
<a href=
"#Release Notes">Release
13 Notes
</a> for our implementation. For any comment or question on a specific aspect of RT CORBA you can contact the responsible as listed in the
<a href=
"#RT Corba Development Status">Real-Time CORBA Development Status
</a>,
14 or you can contact one of us:
<a href=
"mailto:marina@cs.wustl.edu">Marina
15 Spivak
</a>,
<a href=
"mailto:irfan@cs.wustl.edu">Irfan
16 Pyrali
</a>,
<a href=
"mailto:corsaro@cs.wustl.edu">Angelo
18 <h1 align=
"center"><a name=
"RT Corba Development Status">RT Corba Development Status
</a></h1>
19 <p>The scope of this brief document is to keep track of the progress of the
20 RT-CORBA implementation, and to let the user understand what is already in place
21 what will be soon available and what will not be supported.
<a href=
"#Table 1 - Status of the feature described in the RT CORBA Spec.">Table
22 1</a> contains a detailed list of the features that are described by the RT-CORBA
23 spec. and their status respect to our implementation.
<a href=
"#Table 2 - Feature needed to Enable RT-CORBA">Table
24 2</a> contains features that are not described in the
RT-CORBA spec. but
25 that are needed to
"enable
" our RT-CORBA implementation, and at last
<a href=
"#Table 3 - Issue to be shortly addressed">Table
26 3</a> contains a list of issues that should be addressed soon.
</p>
28 </p>
29 <p style=
"margin-left: 0; margin-right: 0; margin-top: 0; margin-bottom: 5" align=
"center"><b><a name=
"Table 1 - Status of the feature described in the RT CORBA Spec.">Table
30 1 -
</a></b><a name=
"Table 1 - Status of the feature described in the RT CORBA Spec.">
31 Status of the feature described in the RT CORBA Spec.
</a></p>
34 <table border=
"1" width=
"663" height=
"216">
36 <td width=
"236" align=
"center" height=
"19"><b>Feature
</b></td>
37 <td width=
"151" align=
"center" height=
"19"><b>Reference
</b></td>
38 <td width=
"115" align=
"center" height=
"19"><b>Status
</b></td>
39 <td width=
"133" align=
"center" height=
"19"><b> Contact
</b></td>
42 <td width=
"236" align=
"center" height=
"1">Real-Time ORB
</td>
43 <td width=
"151" align=
"center" height=
"1">ptc/
99-
05-
03 sec.
4.1</td>
44 <td width=
"115" align=
"center" height=
"1">Done
</td>
45 <td width=
"133" align=
"center" height=
"1"><a href=
"mailto:marina@cs.wustl.edu">Marina
49 <td width=
"236" align=
"center" height=
"16">Real-Time POA
</td>
50 <td width=
"151" align=
"center" height=
"16">ptc/
99-
05-
03 sec.
4.2</td>
51 <td width=
"115" align=
"center" height=
"16">Done
</td>
52 <td width=
"133" align=
"center" height=
"16"><a href=
"mailto:irfan@cs.wustl.edu">Irfan
56 <td width=
"236" align=
"center" height=
"38">CORBA Priority
& Priority
58 <td width=
"151" align=
"center" height=
"38">
59 <p align=
"center">ptc/
99-
05-
03 sec.
4.4, sec.
4.5</td>
60 <td width=
"115" align=
"center" height=
"38">Done
</td>
61 <td width=
"133" align=
"center" height=
"38"><a href=
"mailto:marina@cs.wustl.edu">Marina
65 <td width=
"236" align=
"center" height=
"19">Real-Time Current
</td>
66 <td width=
"151" align=
"center" height=
"19">ptc/
99-
05-
03 sec.
4.6</td>
67 <td width=
"115" align=
"center" height=
"19">Done
</td>
68 <td width=
"133" align=
"center" height=
"19"><a href=
"mailto:marina@cs.wustl.edu">Marina
72 <td width=
"236" align=
"center" height=
"19">Real-Time CORBA Priority Models
</td>
73 <td width=
"151" align=
"center" height=
"19">ptc/
99-
05-
03 sec.
4.7</td>
74 <td width=
"115" align=
"center" height=
"19">Done
</td>
75 <td width=
"133" align=
"center" height=
"19"><a href=
"mailto:marina@cs.wustl.edu">Marina
79 <td width=
"236" align=
"center" height=
"1">Priority Transforms
</td>
80 <td width=
"151" align=
"center" height=
"1">ptc/
99-
05-
03 sec.
4.8</td>
81 <td width=
"115" align=
"center" height=
"1">Not Supported
</td>
82 <td width=
"133" align=
"center" height=
"1">-
</td>
85 <td width=
"236" align=
"center" height=
"1">Mutex Interface
</td>
86 <td width=
"151" align=
"center" height=
"1">ptc/
99-
05-
03 sec.
4.9</td>
87 <td width=
"115" align=
"center" height=
"1">Not Supported
</td>
88 <td width=
"133" align=
"center" height=
"1">-
</td>
91 <td width=
"236" align=
"center" height=
"1">Thread Pools
</td>
92 <td width=
"151" align=
"center" height=
"1">ptc/
99-
05-
03 sec.
4.10</td>
93 <td width=
"115" align=
"center" height=
"1">Due - ???
</td>
94 <td width=
"133" align=
"center" height=
"1"><a href=
"mailto:irfan@cs.wustl.edu">Irfan
98 <td width=
"236" align=
"center" height=
"1">Implicit
& Explicit Binding
</td>
99 <td width=
"151" align=
"center" height=
"1">ptc/
99-
05-
03 sec.
4.11</td>
100 <td width=
"115" align=
"center" height=
"1">Due Oct.
13 2K
</td>
101 <td width=
"133" align=
"center" height=
"1"><a href=
"mailto:marina@cs.wustl.edu">Marina
105 <td width=
"236" align=
"center" height=
"1">Priority Banded Connections
</td>
106 <td width=
"151" align=
"center" height=
"1">ptc/
99-
05-
03 sec.
4.12</td>
107 <td width=
"115" align=
"center" height=
"1">Done
</td>
108 <td width=
"133" align=
"center" height=
"1"><a href=
"mailto:marina@cs.wustl.edu">Marina
112 <td width=
"236" align=
"center" height=
"1">Private Connection Policy
</td>
113 <td width=
"151" align=
"center" height=
"1">ptc/
99-
05-
03 sec.
4.13</td>
114 <td width=
"115" align=
"center" height=
"1">Due Oct.
13 2K
</td>
115 <td width=
"133" align=
"center" height=
"1"><a href=
"mailto:marina@cs.wustl.edu">Marina
119 <td width=
"236" align=
"center" height=
"1">Protocol Configuration
</td>
120 <td width=
"151" align=
"center" height=
"1">ptc/
99-
05-
03 sec.
4.15</td>
121 <td width=
"115" align=
"center" height=
"1">Done
</td>
122 <td width=
"133" align=
"center" height=
"1"><a href=
"mailto:marina@cs.wustl.edu">Marina
129 <p><b>Real-Time ORB -
</b>Extension to the CORBA::ORB interface that provides operations to create and destroy other constituents of a RT ORB.
</p>
130 <p><b>Real Time POA
</b><b> -
</b>RT extension of the traditional POA that
131 provides additional operation to support object level priority and
132 "understand
" the RT Policies defined in ptc/
99-
05-
03. This interface
133 is derived from the POA interface so it support all the semantics prescribed for
135 <p><b>CORBA Priority
& Priority Mappings -
</b>RT-CORBA Priority have the
136 intent of shielding the user from the different priority scheme that a RTOS
137 might use, providing a uniform representation system wide. RT-CORBA Priority
138 Mappings take care of mapping RTCORBA::Priority into native priorities. Right
139 now to scheme are implemented and respectively the
<i>Linear
</i> and
<i>Direct
</i>.
</p>
140 <p><b>Real-Time Current -
</b> The RTCORBA::Current interface is derived from
141 CORBA::Current, and provide access to the CORBA Priority of the current thread.
142 Real Time CORBA Priority can be associated with the current thread by using this
144 <p><b>Real-Time CORBA Priority Models -
</b>Real-Time CORBA supports two models
145 for the coordination of priorities across a system, that let set the priority at
146 which a servant executes. This two different model are
<i>Client Propagated
147 Priority Model
</i> and
<i>Server Declared Priority Model
</i>.
<i> </i></p>
148 <p><b>Priority Transforms -
</b>Priority Transforms allow the application
149 designer to implement RT-CORBA system using priority models different from
150 either the Client Propagated or Server Declared. Priority Transforms are user
151 provided functions that map one RTCORBA::Priority value to another
152 RTCORBA::Priority value.
</p>
153 <p><b>Mutex Interface -
</b>Real-Time CORBA defines a Mutex interface, and two operation in the RTORB interface for creating and destroying such
mutex. This mutex
154 should have the same priority inheritance scheme used by the ORB.
</p>
155 <p><b>Thread Pools -
</b>Real-Time CORBA define an interface for creating
156 Thread Pools, with or without lanes, and for creating Thread Pools Priorities.
157 Lanes are just sub-sets of threads at assigned different RTCORBA::Priority
158 values. The only feature that won't be supported is the
<i>Request Buffering
</i>
159 (see sec.
4.10.3).
</p>
160 <p><b>Implicit
& Explicit Binding -
</b>Provide control on when a binding is
161 made on a object reference. In particular a call to
<font face=
"Courier New">validate_connection
162 </font>force the binding to an object reference to be made as
<i>explicit
164 <p><b> Priority Banded Connections -
</b>Real-Time CORBA defines priority
165 bands that are in turn used to serve request depending on the priority model
166 used by the target object.
</p>
167 <p><b>Private Connection Policy -
</b>This policy allows a client to obtain a
168 private transport connection which will not be shared with other client-server
170 <p><b>Protocol Configuration -
</b>Enables the selection and configuration of
171 the protocols on the client and server side of the ORB.
</p>
172 <p align=
"center" style=
"margin-bottom: 5"><a name=
"Table 2 - Feature needed to Enable RT-CORBA">Table
173 2 - Feature needed to Enable RT-CORBA
</a></p>
176 <table border=
"1" width=
"663" height=
"122">
178 <td width=
"236" align=
"center" height=
"19"><b>Feature
</b></td>
179 <td width=
"151" align=
"center" height=
"19"><b>Reference
</b></td>
180 <td width=
"115" align=
"center" height=
"19"><b>Status
</b></td>
181 <td width=
"133" align=
"center" height=
"19"><b> Contact
</b></td>
184 <td width=
"236" align=
"center" height=
"16">Collocation
</td>
185 <td width=
"151" align=
"center" height=
"16">Not yet available
</td>
186 <td width=
"115" align=
"center" height=
"16">Done
</td>
187 <td width=
"133" align=
"center" height=
"16"><a href=
"mailto:corsaro@cs.wustl.edu">Angelo
191 <td width=
"236" align=
"center" height=
"14">Policy Streaming
</td>
192 <td width=
"151" align=
"center" height=
"14">ptc/
99-
05-
03 orbos/
98-
05-
05</td>
193 <td width=
"115" align=
"center" height=
"14">Done
</td>
194 <td width=
"133" align=
"center" height=
"14"><a href=
"mailto:corsaro@cs.wustl.edu">Angelo
198 <td width=
"236" align=
"center" height=
"1">Invocation Timeout
</td>
199 <td width=
"151" align=
"center" height=
"1">ptc/
99-
05-
03 sec.
4.14 orbos/
98-
05-
05</td>
200 <td width=
"115" align=
"center" height=
"1">Done
</td>
201 <td width=
"133" align=
"center" height=
"1"><a href=
"mailto:coryan@ece.uci.edu">Carlos O'Ryan
</a></td>
206 <p align=
"center"> </p>
207 <p><b>Collocation -
</b>A new collocation scheme has been designed and is in its
208 last stage of development. The collocation scheme has been changed because the
209 selection of the right proxy to use to perform a call, now has to be taken on a
210 call-per-call basis, to avoid interference between thread priorities. In
211 designing the new scheme we tried to reduce the memory footprint and the
212 overhead that the new scheme needs to introduce.
</p>
214 <p><b>Policy Streaming -
</b>Different policies defined by the RT-CORBA Spec.
215 need to be exposed to the client by
embeddeding those
into the IOR.
216 This facilities were added to those policies.
</p>
218 <p><b>Invocation Timeout -
</b>Allows the setting of timeout that expire if an invocation doesn't complete in a given amount of time.
</p>
222 <p align=
"center" style=
"margin-bottom: 5"><a name=
"Table 3 - Issue to be shortly addressed">Table
223 3 - Issue to be shortly addressed
</a></p>
226 <table border=
"1" width=
"546" height=
"77">
228 <td width=
"126" align=
"center" height=
"19"><b>Issue
</b></td>
229 <td width=
"152" align=
"center" height=
"19"><b>Status
</b></td>
230 <td width=
"89" align=
"center" height=
"19"><b> Contact
</b></td>
233 <td width=
"126" align=
"center" height=
"1">
234 <p align=
"center">Factoring of TAO's Protocol Policies
</td>
235 <td width=
"152" align=
"center" height=
"1">???
</td>
236 <td width=
"89" align=
"center" height=
"1">???
</td>
239 <td width=
"126" align=
"center" height=
"1">Profile Mangement
</td>
240 <td width=
"152" align=
"center" height=
"1">???
</td>
241 <td width=
"89" align=
"center" height=
"1">???
</td>
244 <td width=
"126" align=
"center" height=
"1">RT CORBA Example/Test
</td>
245 <td width=
"152" align=
"center" height=
"1">???
</td>
246 <td width=
"89" align=
"center" height=
"1">???
</td>
249 <td width=
"126" align=
"center" height=
"1">RT-TAO Performance
</td>
250 <td width=
"152" align=
"center" height=
"1">???
</td>
251 <td width=
"89" align=
"center" height=
"1">???
</td>
256 <p align=
"left"> </p>
257 <p align=
"left"><b>Factoring of TAO's Protocol Policies -
</b></p>
258 <p align=
"left"><b>Profile Management -
</b>The Profile management is right now
259 quite nasty. The class interface are pretty counter-intuitive, and the code that
260 deal with profile needs to be redesigned and re-implemented.
</p>
261 <p align=
"left"><b>RT CORBA Example Test -
</b>Examples and Tests need to be
262 written to show how to use
RT CORBA's features, and to massively test the
263 behavior of the new stuff.
</p>
264 <p align=
"left"><b>Performance -
</b>Performance tests needs to performed on TAO
265 to see the impact of the changes and to early individuate critical path and
267 <p align=
"left"> </p>
269 <h1 align=
"center"><a name=
"Release Notes">Release Notes
</a></h1>
270 <p>We are currently working on implementing RT CORBA
1.0 specification in TAO. Our design is an extension of the
<em>endpoint-per-priority
</em> architecture mentioned in the
<tt>Recently
271 Completed Work
</tt> section below. In this design, codenamed
<em>reactor-per-lane
</em>, each threadpool lane owns a set of I/O resources, i.e.,
<tt>Reactor
</tt>,
<tt>Acceptor
</tt>,
272 and
<tt>Connector_Registry.
</tt> Each request is serviced by a single thread without context switches, i.e., the same thread performs I/O and runs the servant code.
273 <p>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
277 <p style=
"line-height: 150%">Client Protocol Policy.
279 <p style=
"line-height: 150%">Priority Banded Connections.
281 <p style=
"line-height: 150%">TAO's RTCORBA Documentation web pages.
283 <p style=
"line-height: 150%">POA Threadpools
& SERVER_DECLARED Priority Model.
</li>
285 <p style=
"line-height: 150%">CLIENT_PROPAGATED Priority Model.
</li>
287 <p style=
"line-height: 150%">Server Protocol Policy.
289 <p style=
"line-height: 150%">RTORB, RTCurrent and ProrityMappingManger interfaces.
291 <p style=
"line-height: 150%">Support for client-exposed policies.
293 <p style=
"line-height: 150%">All RTCORBA, Policy and POA interfaces converted to local.
295 <p style=
"line-height: 150%">Collocation-related classes are restructured to support RTCORBA.
297 <p style=
"line-height: 150%">Implemented Policy framework (defined in the Messaging specification, used in RT CORBA).
299 <p style=
"line-height: 150%">Added support for Real-time CORBA Priority and implemented two Priority Mappings:
<tt>Linear
</tt> and
<tt>Direct
</tt>.
301 <p style=
"line-height: 100%">Added support for end-to-end CORBA request priority preservation. This is achieved through
<em>multiple listening endpoint
</em> architecture, a.k.a.
<em>endpoint-per-priority
</em>,
302 on the server and a Client Priority Policy on the client. Following is a brief description of how this is implemented.
303 <p style=
"line-height: 100%">Server ORB uses multiple transport endpoints to accept connections from clients. Each transport endpoint has a priority, which is the priority of the
304 thread(s) servicing the endpoint as well as all connections it accepts. When a server ORB creates an IOR for one of its objects, it embeds all of the server's listening endpoints
305 along with their priorities into the object's IOR. Then, a client ORB selects the priority that best matches client's need (as specified by the Client Priority Policy) from those
306 offered by the server, and uses the corresponding transport endpoint specified by the server to obtain the desired level of service.
307 <p style=
"line-height: 100%">For more details and performance results for
<em>endpoint-per-priority
</em> architecture, see
<a href=
"http://www.cs.wustl.edu/~marina/boeing.pdf">this
308 paper.
</a> See
<tt>TAO/tao/TAO.pidl
</tt> for Client Priority Policy interface definition, and
<tt>TAO/tests/Endpoint_Per_Priority
</tt> for example of using priority preservation
310 <p style=
"line-height: 100%">
312 <p style=
"line-height: 100%">Implemented reliable one-way requests, i.e., SyncScope Policy from the Messaging specification. This is relevant to RT CORBA because of the following
313 feature: setting SyncScope Policy to SYNC_NONE enables buffering of one-way requests in the client ORB. Request buffering can be used to optimize message throughput, possibly at
314 the expense of latency. ORB buffering behavior is controlled by the Buffering Constraint Policy, which is described next.
316 <p style=
"line-height: 100%">
319 <p style=
"line-height: 100%">Added support for buffered one-way and asynchronous requests in the client ORB. Buffering Constraint Policy gives users control over queueing and
320 flushing of requests in the ORB. A combination of the following conditions for initiating buffer flush can be specified using this policy:
323 <p style=
"line-height: 100%">Timeout value expires.
325 <p style=
"line-height: 100%">Max byte count is exceeded.
327 <p style=
"line-height: 100%">Explicit flush by the user.
329 <p style=
"line-height: 100%">Max message count is exceeded, or
331 <p style=
"line-height: 100%">ORB shutdown.
</li>
333 <p style=
"line-height: 100%">Also supported are out-of-band requests, i.e., requests that bypass buffers and are delivered to the server immediately.
334 <p style=
"line-height: 100%">Buffering Constraint Policy is a TAO-specific feature. See
<tt>TAO/tao/TAO.pidl
</tt> for policy interface definition and
<tt>TAO/examples/Buffered_Oneways
</tt>
335 and
<tt>TAO/examples/Buffered_AMI
</tt> directories for its use. For motivation and performance of buffered one-ways see
<a href=
"http://www.cs.wustl.edu/~marina/boeing.pdf">this
339 <p style=
"line-height: 100%">Known issues:
342 <p style=
"line-height: 100%">Location forwarding does not work properly with
<em>endpoint-per-priority
</em> model.
</li>
344 <p style=
"line-height: 100%">Future work:
347 <p style=
"line-height: 100%">Provide server-side RT CORBA implementation using a
<em>queue-per-lane
</em> approach. In this approach each threadpool lane owns a queue, while I/O
348 resources are being shared among all the threadpool lanes of the same priority within the server. Strategize TAO to use either
<em>queue-per-lane
</em> or
<em>reactor-per-lane
</em>
349 implementation, and compare the two.
</li>