applying rt-policies in corba component model
DESCRIPTION
Applying RT-Policies in CORBA Component Model. Nanbor Wang Department of Computer Science Washington University in St. Louis [email protected]. Overview. Component composition RTCCM overview Why, where, and how Iterate thru proposed RT Policies in CIAO - PowerPoint PPT PresentationTRANSCRIPT
August 20, 2002
Applying RT-Policies in CORBA Component Model
Nanbor WangDepartment of Computer ScienceWashington University in St. Louis
Washington University, St. Louis
Nanbor Wang Applying RT-Policies in CCM
Overview
• Component composition• RTCCM overview
– Why, where, and how
• Iterate thru proposed RT Policies in CIAO– What is the right granularity to apply the policy?– When (or where) to specify– Use case scenarios where the RTCCM approach
will/will not work– Does RTCCM approach impose any restrictions
on component developers/system integrators?
Washington University, St. Louis
Nanbor Wang Applying RT-Policies in CCM
Component Packaging
IDL/CIDL Compiler
UserCode
GeneratedCode
IDL
ComponentDescriptor
DefaultProperties
Compiler
SharedLibrary or
Executable
Packaging Tool
ComponentPackage
.zip
Washington University, St. Louis
Nanbor Wang Applying RT-Policies in CCM
Component Assembly
PropertiesDeploymen
tTool
AssemblyArchive
.aar (ZIP)
Assembly Tool
ComponentPackage
ComponentPackage
ComponentPackage
PortConnections
InstanceCreation
...
Washington University, St. Louis
Nanbor Wang Applying RT-Policies in CCM
Composition Example• Application server
– run-time management– service initialization
• CCM Assembly Archive– Assembly descriptor
• Install components– Component
implementations– Component
descriptors– Configuration
property files• Establish connections
Application Server
Motor
modulator
controller
contrl_panel
modulator
position
EmStop
Location
position
Proximity
EmStop
Proximity
EmStop
Motor
Event Channel
Washington University, St. Louis
Nanbor Wang Applying RT-Policies in CCM
Component Compositions
• An assembly descriptor specifies what component implementations are needed by referring to their component descriptors
• A Component descriptor (.csd) records component features and dependencies to other software modules
<!– Associate components with impls --><componentfiles> <componentfile id="Motor"> <fileinarchive name="AB-motor.csd"/> </componentfile>
<componentfile id="Location"> <fileinarchive name="linear-encoder.csd"/> </componentfile>
<componentfile id="Proximity"> <fileinarchive name="p-switch.csd"/> </componentfile>
<componentfile id="controller"> <fileinarchive name="AB-panel-if.csd"/> </componentfile> </componentfiles>
Washington University, St. Louis
Nanbor Wang Applying RT-Policies in CCM
Component Instantiations
<!– Instantiating component homes/instances -->
<partitioning> <processcollocation> ...
<homeplacement id="ProximityHome"> <componentfileref idref="Proximity"/> <componentinstantiation id="left"> <componentproperties> <fileinarchive name="left-switch.cpf"/> </componentproperties> </componentinstantiation> <componentinstantiation id="right"> <componentproperties> <fileinarchive name="right-switch.cpf"/> </componentproperties> </componentinstantiation> </homeplacement> ... </processcollocation></partitioning>
• An assembly descriptor specifies how homes and components should be instantiated
• A component property file (.cpf) can be associated with a home or a component instantiation to override default component properties
Washington University, St. Louis
Nanbor Wang Applying RT-Policies in CCM
Connecting Components
Application Server
Motor
modulator
controller
contrl_panel
modulator
position
EmStop
Location
position
Proximity
EmStop
Proximity
EmStop
Motor
Event Channel
<connections> ... <connectinterface> <usesport> <usesidentifier>modulator</usesidentifier> <componentinstantiationref idref=“Controller"/> </usesport> <providesport> <providesidentifier> modulator </providesidentifier> <componentinstantiationref idref=“Motor"/> </providesport> </connectinterface> <connectevent> <consumesport> <consumesidentifier>EmStop</consumesidentifier> <componentinstantiationref idref="Controller"/> </consumesport> <publishesport> <publishesidentifier> EmStop </publishesidentifier> <componentinstantiationref idref="left"/> </publichesport> </connectevent> ...</connections>
• Assembly descriptors also specify how component instances are connected tegether
Washington University, St. Louis
Nanbor Wang Applying RT-Policies in CCM
RTCCM ≠ CCM + RTCORBA•Plain CCM has no mechanisms to specify and enforce RT policies
•RT policies need to be assured end-to-end for components & connections
•Trying to ensure RT policies are met in components leads to:– Tight couplings among
component implementations– Difficulty in reusing existing
components (without RT knowledge)
– Failure to utilize many RT mechanisms that go beyond component implementations•Component connections
–private connections–pre-connections
•Component collaborations–Thread pools–Thread borrowingRT Application Server (?)
Container
RT-ORB
CORBAComponent
ComponentHome
RTPOA
External
Interfaces
CallbackInterfaces
InternalInterfaces
Container
CORBAComponent
ComponentHome
RTPOA
External
Interfaces
CallbackInterfaces
InternalInterfaces
Why doesn't running a RTORB beneath CCM make
it an RTCCM implementation?
Washington University, St. Louis
Nanbor Wang Applying RT-Policies in CCM
Real-time CCM (RTCCM)
• Abstracting RT CORBA related systemic (QoS) aspects– Specify RT policies of a
component instance– Specify RT policies of a
connection between components
– Allocating & computation and communication resources for components
– Specify sharing & collaboration of resources among components
– Configuring ORB with custom communication mechanisms and options
container
com
ponent
RT-ORB
container
com
ponent
OScustom
transport
Application Server
ORBPlugins
•Solution: Configure RT-policies/mechanisms using CCM’s metadata
Washington University, St. Louis
Nanbor Wang Applying RT-Policies in CCM
RTCCM Component Packaging
IDL/CIDL Compiler
UserCode
GeneratedCode
IDL
ComponentDescriptor
DefaultProperties
Compiler
SharedLibrary or
Executable
Packaging Tool
ComponentPackage
.zip
Washington University, St. Louis
Nanbor Wang Applying RT-Policies in CCM
RTCCM Component Assembly
PropertiesDeploymen
tTool
AssemblyArchive
.aar (ZIP)
Assembly Tool
ComponentPackage
ComponentPackage
ComponentPackage
PortConnections
InstanceCreation
...
ResourceAllocations
ORBExtensions
PriorityMappings
Washington University, St. Louis
Nanbor Wang Applying RT-Policies in CCM
Component-Integrated ACE ORB (CIAO)
1.Component default priority model
2.Override component priority model
3.Priority level of a component instance
4.Defining thread pools5.Associate thread pools with
component instances6.Specify queuing policies7.Specify pre-connections8.Specify private connections9.Configure ORB components
•Custom protocols•Priority mappingsRT Application Server
Container
RT-ORB
CORBAComponent
ComponentHome
RTPOA
External
Interfaces
CallbackInterfaces
InternalInterfaces
Container
CORBAComponent
ComponentHome
RTPOA
External
Interfaces
CallbackInterfaces
InternalInterfaces
1
2
8
6
3
Thread Pool A
Priority30
Priority60
4
55
7
9
•CIAO’s will make RT policies an integral part of deployment metadata
Washington University, St. Louis
Nanbor Wang Applying RT-Policies in CCM
RTCCM Descriptor Examples
• Component default priority model
<corbacomponent> ... <ciao:prioritymodelpolicy name=“priority_model_policy" value=“SERVER_DECLARED” priority=“20”/> ... </corbacomponent>
<partitioning> <processcollocation> ... <homeplacement id="ProximityHome"> <componentfileref idref="Proximity"/> <componentinstantiation id="left"> <componentproperties> <fileinarchive name="left-switch.cpf"/> <ciao:rtprioritylevel value="60"/> <ciao:rtprioritymodel value="CLIENT_PROPAGATED"/> </componentproperties> </componentinstantiation> <componentinstantiation id="right"> <componentproperties> <fileinarchive name="right-switch.cpf"/> <ciao:rtprioritylevel value="60"/> <ciao:rtprioritymodel value="CLIENT_PROPAGATED"/> </componentproperties> </componentinstantiation> </homeplacement> ... </processcollocation></partitioning>
• Override component priority model
• Specify the priority level of a component instance
• Associate component instances with customized protocols
Washington University, St. Louis
Nanbor Wang Applying RT-Policies in CCMORB-level (component server instance)
Descriptors • Define thread pools• Plug in custom
protocol support• Define protocol
configuration• Plug in custom
priority mapping• Define priority-
banded connection policies
• Define QoS aggregates
<componentassembly> ... <partitioning> <ciao:createthreadpool id="tp_a" priority="30" number="10"/> <ciao:createthreadpoolwithlane id="tp_l"> <ciao:prioritylevel lane="30" number="3"/> <ciao:prioritylevel lane="60" number="3"/> <ciao:prioritylevel lane="80" number="10"/> </ciao:createthreadpool> <ciao:dependson type=“pluggable_protocol” id=“shmiop”/> <ciao:tcpprotocolproperties> <ciao:protocolproperties name=“no_delay” value=“true”/> <ciao:protocolproperties name=“send_buffer_size” value=“32768”/> </ciao:tcpprotocolproperties> <ciao:dependson type=“custom_priority_mapping” id=“lynxos_vme3”/>
Washington University, St. Louis
Nanbor Wang Applying RT-Policies in CCM
RTCCM Descriptor Examples (cont.)
<homeplacement id="ProximityHome"> <componentfileref idref="Proximity"/> <componentinstantiation id="left"> <componentproperties> <fileinarchive name="left-switch.cpf"/> <ciao:usethreadpool idref="tp_a"/> </componentproperties> </componentinstantiation> <componentinstantiation id="right"> <componentproperties> <fileinarchive name="right-switch.cpf"/> <ciao:usethreadpool idref="tp_a“/> </componentproperties> </componentinstantiation> </homeplacement> <homeplacement id=“controlerhome”> <componentfileref idref=“controller”/> <componentinstantiation id=“control_module”> <componentproperties> <fileinarchive name=“controller.cpf”/> <ciao:usethreadpoolwithlane idref=“tp_l”/> </componentproperties> </componentinstantiation> </homeplacement>
• Associate thread pools with components
• Associate QoS aggregates with connections
Washington University, St. Louis
Nanbor Wang Applying RT-Policies in CCM
Connection Policies
• Establishing pre-connections
• Establishing private connections
<connections> ... <connectinterface ciao:preconnect=“true” ciao:private=“true”> <usesport> <usesidentifier>modulator</usesidentifier> <componentinstantiationref idref="Motor"/> </usesport> <providesport> <providesidentifier> modulator </providesidentifier> <componentinstantiationref idref="Controller"/> </providesport> </connectinterface>
<connectevent ciao:preconnect=“true” ciao:connband=“highest”> <consumesport> <consumesidentifier>EmStop</consumesidentifier> <componentinstantiationref idref="Controller"/> </consumesport> <publishesport> <publishesidentifier> EmStop </publishesidentifier> <componentinstantiationref idref="left"/> </publichesport> </connectevent> ...</connections>
Washington University, St. Louis
Nanbor Wang Applying RT-Policies in CCM
Other policies?
• Other RT policies?