1 / 18

Applying RT-Policies in CORBA Component Model

Applying RT-Policies in CORBA Component Model. Nanbor Wang Department of Computer Science Washington University in St. Louis nanbor@cs.wustl.edu. Overview. Component composition RTCCM overview Why, where, and how Iterate thru proposed RT Policies in CIAO

amalie
Download Presentation

Applying RT-Policies in CORBA Component Model

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Applying RT-Policies in CORBA Component Model Nanbor Wang Department of Computer Science Washington University in St. Louis nanbor@cs.wustl.edu

  2. 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?

  3. Component Packaging IDL User Code Compiler Generated Code Shared Library or Executable IDL/CIDL Compiler Component Descriptor Component Package .zip Packaging Tool Default Properties

  4. Component Assembly Instance Creation Port Connections Component Package Component Package Assembly Archive .aar (ZIP) Assembly Tool Component Package Properties DeploymentTool ...

  5. 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

  6. Component Compositions <!– 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> • 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

  7. Component Instantiations • 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 <!– 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>

  8. Connecting Components <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

  9. RTCCM ≠ CCM + RTCORBA Why doesn't running a RTORB beneath CCM make it an RTCCM implementation? • 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 borrowing

  10. component component container container customtransport ORBPlugins Real-time CCM (RTCCM) • Solution: Configure RT-policies/mechanisms using CCM’s metadata • 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 RT-ORB OS Application Server

  11. RTCCM Component Packaging IDL User Code Compiler Generated Code Shared Library or Executable IDL/CIDL Compiler Component Descriptor Component Package .zip Packaging Tool Default Properties

  12. RTCCM Component Assembly Component Package Instance Creation Port Connections Component Package Component Package Assembly Archive .aar (ZIP) Assembly Tool ORBExtensions Properties ResourceAllocations PriorityMappings DeploymentTool ...

  13. Component-Integrated ACE ORB (CIAO) • CIAO’s will make RT policies an integral part of deployment metadata • Component default priority model • Override component priority model • Priority level of a component instance • Defining thread pools • Associate thread pools with component instances • Specify queuing policies • Specify pre-connections • Specify private connections • Configure ORB components • Custom protocols • Priority mappings

  14. RTCCM Descriptor Examples <corbacomponent> ...<ciao:prioritymodelpolicy name=“priority_model_policy" value=“SERVER_DECLARED” priority=“20”/> ... </corbacomponent> • Component default priority model <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

  15. ORB-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”/>

  16. 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

  17. Connection Policies <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> • Establishing pre-connections • Establishing private connections

  18. Other policies? • Other RT policies?

More Related