A -aware CORBA Model for Distributed Real-time and Embedded System Development Nanbor Wang and Chris Gill {nanbor,cdgill}@cse.wustl.edu Department of Computer Science and Engineering Washington University in St. Louis This research is sponsored by DARPA PCES program under Contract to Boeing (F33615-00-C-3048) & Washington University in St.Louis (F33615-00-C-1697), partially in collaboration with BBN Technology. July 7, 2003
Characteristics of DRE Applications Representative hard real-time applications Avionic mission/control systems Theater missile defense Command and control resources which must be managed Computation resources Communication resources Power resources
Management Techniques Applications Interceptor Middleware Domain-Specific Services Common Services Distribution Middleware Descriptions Sys Condition Sys Condition Sys Condition Systemic Path Mechanism & Properties Manager Descriptions Sys Condition } { Applications Interceptor Middleware Domain-Specific Services Common Services Distribution Middleware Infrastructure Middleware Operating System Local Resource Management Endsystem Functional Path Infrastructure Middleware Operating System Local Resource Management Endsystem Static management Done at system design time Resources are provisioned before system runs Dynamic management Done at system runtime Adapts to changing environmental conditions
Stepping Motor A Motivating Real-Time Application An one-axis robot arm controller application 3 separate processes connected via ethernet Motor Modulator :Modulator Positioning Module :Position-Encoder Motor Modulator Advances stepping motor fixed angle for every Fwd/Rev command Activate mechanical brake when stop Fwd()/Rev() :Em-Stop Stop () Stop () :Em-Stop Position () :Controller Controller Controller Updates current location Accelerates and decelerates motor Stops the motor Positioning Module Sends differential positioning information Programming proximity limits
CLIENT_PROPAGATED Stepping Motor Motor Modulator Lane :Modulator Prio = 100 Fwd()/Rev() stop() :Em-Stop prio 100 Stop () Types of Real-time Resources SERVER_DECLARED prio=200 Thread Pool w/ Lane prio 200 OBJ REF stop() Lane Prio = 200 position() ORB CORE ` position() Positioning Module CLIENT_PROPAGATED Position () :Position-Encoder :Controller Stop () :Em-Stop Controller SERVER_DECLARED prio=200 Ensure timely response of important tasks Define unified view of importance Portable Priority Mapping Handle important tasks first 255 32767 Preemptive task scheduling 0 Priority Model Reserve CPU resources Thread Pooling Separate traffic of 0 different importance 0 Priority-Banded 31 Connection Private Connection Native Priority Native Priority ORB ENDSYSTEM A ORB ENDSYSTEM B RTCORBA::Priority
2 Client ORB CORE 1 OBJ REF OBJ REF OBJ REF Review - RT Policies/Resources 3 3 3 in args operation() out args + return Priority Mappings Custom Protocols Protocol Properties Object (Servant) 3 Object (Servant) 3 Object 3 (Servant) Thread Pool w/ Lanes Lane Prio = 100 Object Adapter GIOP Real-time CORBA leverages the CORBA Messaging Policy framework 1 Lane Prio = 200 POA B 2 POA A 2 RT policies can associate with objects of various granularities Client-side 1. ORB level 2. Thread level (RTCurrent) 3. Object level Server-side 1. ORB level 2. POA level 3. Object level Shared RT resources Shared by several POAs, objects (Thread Pooling) ORB: certain protocol policies Priority-mapping Requires end-to-end enforcement Results tightly coupled code
Insertion Points for RT Systemic Properties into CCM Interface Design Interface IDL Definitions Design IDL Definitions Stubs & Skeletons CIDL Definitions Implementation Object Implementations Language Tools 1. implementation dependent policies/ resources DLLs Packaging XML & Home Properties 3. Add/override component policies IDL Compiler System Deployment Running Applications CIDL Compiler Configurations 4. Target platform specific resource allocations Deployment Tools Target Platform Properties Servants, Executors, Contexts XML Descriptors (.ccd) Assembly Packages (Zipped archives *.aar) XML Assembly Descriptors (.cad) 3.1. Association between component policies and resources Packaging Tools XML Softpkg Descriptors (.csd) Assembling Tools XML & Home Properties Packages (Zipped archives *.car) 2. Shared logical resources Application Assembly
Application Development Revisited Positioning Unit RateGen GPS Pulse Refresh Ready Rate MyLocation 20Hz RateGen Collision Pulse Rate 5Hz Refresh Detection MyLocation Ready Instrument Cluster GUIDisplay Refresh GPSLocation LEDDisplay Refresh GetLocation Two parallel applications GPS display runs at higher rates Collision detection runs at lower rates Collision detection requires immediate attention Can we now program this with CIAO?
CIAO Examples Positioning Unit Unit CLIENT_PROPAGATED Instrument Cluster RateGen RateGen Pulse Pulse GPS GPS Refresh Ready Refresh Ready Rate MyLocation Rate MyLocation 20Hz 20Hz SERVER_DECLARED-5 SERVER_DECLARED-5 GUIDisplay GUIDisplay RefreshGPS Refresh GPSLocation RefreshCollision GPSLocation GPSLocation CollosionDir RateGen RateGen Rate Rate 5Hz 5Hz Pulse Pulse SERVER_DECLARED-10 Collision Collision Refresh Refresh Ready Detection Detection MyLocation MyLocation Ready SERVER_DECLARED-10 LEDDisplay LEDDisplay Refresh Refresh GetLocation GetLocation SERVER_DECLARED-5 CLIENT_PROPAGATED With prio: Thread_Pool 5, prio-banded Priority-banded (5,10) SERVER_DECLARED-10 SERVER_DECLARED-5 SERVER_DECLARED-10 prio: 10, prio-banded (5,10) SERVER_DECLARED-5 SERVER_DECLARED-10
CIAO Example - BoldStroke Configuration Config Phase Packaging Assembly Deployment (400MHz CPU) Deployment (200MHz CPU) Available Rates (in Hz) RateGenerator: {1,5,10,20,40} HiResGPS: {x x < 40} cockpitdisplay: {y y 5} RateGenerator HiResGPS cockpitdisplay: {10,20} RateGenerator HiResGPS cockpitdisplay: 20 (not feasible on 200MHz CPU) RateGenerator HiResGPS cockpitdisplay: 10 (not optimal on 400MHz CPU) WCET (in msec) RateGenerator:1@400MHz HiResGPS: 40@400MHz cockpitdisplay: 5@400MHz RateGenerator:1@400MHz HiResGPS: 40@400MHz cockpitdisplay: 5@400MHz RateGenerator:1@400MHz HiResGPS: 40@400MHz cockpitdisplay: 5@400MHz RateGenerator:2@200MHz HiResGPS: 80@200MHz cockpitdisplay: 10@200MHz
Summary of Meta-data for RT Policies 1. dependent Require RT ORB Priority model/default priority level 2. Logical resources Thread pooling Priority-banded Custom protocol policy 3. Application assembly Container policy (<homeplacement>) Priority model/priority level Association with (2) policy: Override priority (SERVER_DECLARED) Priority-banded Connection policy: Priority-banded Request _validate_connection () 4. Application deployment Priority mapping Server protocol policy Client protocol policy
Static Provisioning in -Integrated ACE ORB (CIAO) Client Configuration Aggregate Adaptation Mechanism Plug ins Named Policy Aggregate Target Platform Resource Specification Deployment & Configuration Mechanism Assembly & Home Impls Connection Specifications Mechanism Plug ins Policies Adaptation Extension to CCM descriptors and connection specifications ORB modules Adaptation modules Client Object Reference Named Policy Aggregate Adaptation in args Operation () out args + return value Server Home CORBA Real-time POA Container Adaptation Policies Property Adaptor Reflect -enabled containers Policy-based adaptation insertion Client-side policy aggregates Integrating RT-CORBA Mechanism Plug ins RT-ORB Mechanism Plug ins
What is Dynamic Management? Utility Broken Current Utility Curve Works Resources Utility Desired Utility Curve Working Range Resources Measure (sensors) system resource properties and environmental conditions Evaluate performance based on specified requirements for the system Adapt application behavior to meet requirements Uses actuators to control behavior
BBN s QuO Add Management to CORBA Middleware QUO/CORBA DOC MODEL CLIENT Delegate IDL STUBS IDL STUBS OBJ REF Contract SysCond in args operation() out args + return value Network Contract OBJECT (SERVANT) Control IDLDelegate SKELETON SysCond Specialized ORBs or Services IDL ORB IIOP MECHANISM/PROPERTY IIOP ORB MANAGER Network SysCond SysCond SKELETON ORB IIOP IIOP ORB Simple Value QuO Kernel CORBA Object Measured Value (Sensor) Composed Value Control Value Value RSVP Controller Status Value Device OBJECT Status Service ADAPTER OBJECT ADAPTER Application Developer Developer Mechanism Developer Application Application Developer Developer QuO Developer Mechanism Developer Mechanism Developer Plain CORBA addresses only application s functional aspects QuO injects management Measurement In-band: via Instrumentation Out-of-band: provided by syscond objects Adaptation In-band: via delegates and gateways Out-of-band: triggered by transitions in contract regions
Packaging Management into s C1 In-band In-band C2 A Prototypical Approach qosket1 out-of-band qosket2 In-band components components are inserted between two application components, e.g. C1 and C2 components expose delegate interfaces which intercept method invocations for C1 and C2 and adds adaptation behaviors for C1 and C2 Out-of-band component components contain system condition (syscond) objects which measure system and application performance, and callbacks (actuators) which trigger adaptive behaviors
RSS Proxy out-of-band Container Boundary Example of a ized Qosket Syscond Syscond In-band qosket comp Delegate QuO Contract Proxy Resource Control Syscond QuO Kernel A qosket component encapsulates Delegate interception interfaces Contract objects Syscond objects A qosket component interacts internally with Other qosket components for out-of-band control proxies for accessing resource control mechanisms Open questions Integration with event delivery mechanisms Installation/connecting of resource control mechanisms
Composing Dynamic Provisioning into CCM Mechanism Plug-ins QuO Mechanism/ property Manager QuO Helper Methods Qosket Implementation Assembly & Home Impls Comp. Impl. QuO Callback Objects Adaptation (Smart Proxies/ Interceptors) QuO Delegate QuO QuO Delegate Delegate SysCond SysCond Contract Contract Policies Connection Specifications Container aspect hooks provide fine grained control for inserting QuO s delegates ORB configuration mechanism can install Qosket specific mechanisms and implementations Extend CIAO to insert Qosket modules into applications transparently Customized CCM components can implement QuO s contracts, SysConds, and callbacks objects
Abstraction Middleware Programming Languages CIAO s Contributions: Total Provisioning and Enforcement -Enabled Middleware (RTCCM-CIAO, EJB Containers) Aspect-Oriented Languages (AspectJ, AspectC++) Dynamic Provisioning (QuO Qosket, dynamictao) Statically provision resources end-to-end Monitor and manage of the end-to-end functional application interaction Enable the adaptive and reflective decisionmaking for dynamic provisioning Integration with MDA tools such as CoSMIC and Cadena Static Provisioning Integrating CIAO and Qosket covers the provisioning at the middleware level Separation of functional and systemic paths Dynamic Applications Interceptor Middleware Domain-Specific Services Common Services Distribution Middleware Infrastructure Middleware Operating System Local Resource Management Endsystem Descriptions Sys Condition Sys Condition Sys Condition Systemic Path Mechanism & Properties Manager Descriptions Sys Condition } { Functional Path Applications Interceptor Middleware Domain-Specific Services Common Services Distribution Middleware Infrastructure Middleware Operating System Local Resource Management Endsystem