1 component-based dynamic qos adaptation praveen sharma, george heinman, joseph loyall, prakash...
TRANSCRIPT
1
Component-Based Dynamic QoS Adaptation
Component-Based Dynamic QoS Adaptation
Praveen Sharma, George Heinman, Joseph Loyall, Prakash Manghwani, Matthew Gillen,
Jianming Ye, Krishnakumar Balasubramanian
TAO Workshop July 16, 2004
2
OverviewOverview
• UAV-OEP/Capstone Demo – PCES Objective: Operational Capabilities and Technical Story
• Demo Architecture and End-to-End QoS Management
• Constituent Technologies in the Demo– CIAO Components– Qosket Components
• Empirical Evaluation based on CCMPerf• Modeling and Synthesis• Summary• Publications
3
UAV-OEP/Capstone Demo –PCES Objective: Operational Capabilities: Time critical target engagement, Combined USAF and Army operations
Technical Story: Dynamic end-to-end mission-driven QoS management,Software engineering of DRE systems
4
Demonstration ArchitectureDemonstration Architecture
SimUCAV
SimUAV SimC2 Army FEC
SimUAVSensorSimUAVSensor
CroppingQosket
CroppingQosket
ScalingQosketScalingQosket
CompressionQosket
CompressionQosket
PacingQosketPacingQosket
CPUBrokerQosket
CPUBrokerQosket
DiffservQosketDiffservQosket
LocalResourceManager
LocalResourceManager
LocalResourceManager
qosket attributes
AM1__ImageLogicalDeviceComponent
Logical_Optical_Sensor
AM1__DataGeneratorQosketComponent
Optical_Qosket
AM1__DataGeneratorComponent
Optical_Sensor
AM1__CompressionProcessor
Image_Compressor
AM1__ScalingProcessor
Image_Scaling
OM1__MissionModeComponent
Mode_Controller
AM1__MissionBWComponent
BandWidth_Controller
AM1__MissionCPUComponent
CPU_Controller
OM1__ModeResourceMonitorComponent
Mode_Monitor
AM1__BWResourceMonitorComponent
BandWidth_Monitor
AM1__CPUResourceMonitorComponent
CPU_Monitor
5HZ
10HZ
20HZ
1HZ
10. Push()
11. Push()
12. GetImage()
4. Push()
5. Push()
6. GetB W_Utilization()
7. Push()
9. GetMode()
8. Push()
1. Push()
2. Push()
3. GetCPU_Utilization()
13. GetValue()
14. GetValue()
15. GetValue()
18*. UpdateImage()
17*. UpdateImage()
20. Push()
21. GetImage()
AM1__DataDisseminatorComponent
Comm_Link
22. Push()23. GetImage()
Contract
Prism_Contract
16. Eval ()
AM1__ TiledImageProcessor
Logical_Tiled_Optical_Sensor
19*. UpdateImage()
5HZ
AM1__ PacingQosketComponent
Pacing_Qosket
24. Push()
25. GetImage()
26*. Push()
PCES_Imaging_Station_Component
PCES_Imaging_Station
PCES_Asset_SRM_Component
PCES_Asset_SRM
PCES_UCAV_Server_Component
PCES_UCAV_Server
27*. GetImage ()
images
policymission
modechanges
ReceiverReceiverReceiverReceiverReceiverReceiverReceiverReceiverReceiverReceiverReceiverReceiver
SystemResourceManager
SystemResourceManager
images
policy
C2 ClientCFF
Status
TrackData
BDIImagery
BDIImagery
Embedded Battle
Command
3-DTerrain
Navigation
BDIImage
Display
LauncherSimulator
2-DSituation
Awareness
TrackDistribution
CFF CFF
Status Status
TrackData
TrackDataimages
RTEC
RTEC
IntegratedDisplay
C4ISIM
Blue Controller
JBI
5
SimUAVSensorSimUAVSensor
CroppingQosket
CroppingQosket
ScalingQosketScalingQosket
CompressionQosket
CompressionQosket
PacingQosketPacingQosket
CPUBrokerQosket
CPUBrokerQosket
DiffservQosketDiffservQosket
LocalResourceManager
LocalResourceManager
LocalResourceManager
qosket attributes
AM1__ImageLogicalDeviceComponent
Logical_Optical_Sensor
AM1__DataGeneratorQosketComponent
Optical_Qosket
AM1__DataGeneratorComponent
Optical_Sensor
AM1__CompressionProcessor
Image_Compressor
AM1__ScalingProcessor
Image_Scaling
OM1__MissionModeComponent
Mode_Controller
AM1__MissionBWComponent
BandWidth_Controller
AM1__MissionCPUComponent
CPU_Controller
OM1__ModeResourceMonitorComponent
Mode_Monitor
AM1__BWResourceMonitorComponent
BandWidth_Monitor
AM1__CPUResourceMonitorComponent
CPU_Monitor
5HZ
10HZ
20HZ
1HZ
10. Push()
11. Push()
12. GetImage()
4. Push()
5. Push()
6. GetB W_Utilization()
7. Push()
9. GetMode()
8. Push()
1. Push()
2. Push()
3. GetCPU_Utilization()
13. GetValue()
14. GetValue()
15. GetValue()
18*. UpdateImage()
17*. UpdateImage()
20. Push()
21. GetImage()
AM1__DataDisseminatorComponent
Comm_Link
22. Push()23. GetImage()
Contract
Prism_Contract
16. Eval ()
AM1__ TiledImageProcessor
Logical_Tiled_Optical_Sensor
19*. UpdateImage()
5HZ
AM1__ PacingQosketComponent
Pacing_Qosket
24. Push()
25. GetImage()
26*. Push()
PCES_Imaging_Station_Component
PCES_Imaging_Station
PCES_Asset_SRM_Component
PCES_Asset_SRM
PCES_UCAV_Server_Component
PCES_UCAV_Server
27*. GetImage ()
images
policymission
modechanges
ReceiverReceiverReceiverReceiverReceiverReceiverReceiverReceiverReceiverReceiverReceiverReceiver
SystemResourceManager
SystemResourceManager
images
policy
C2 ClientCFF
Status
TrackData
BDIImagery
BDIImagery
Embedded Battle
Command
3-DTerrain
Navigation
BDIImage
Display
LauncherSimulator
2-DSituation
Awareness
TrackDistribution
CFF CFF
Status Status
TrackData
TrackDataimages
RTEC
RTEC
IntegratedDisplay
C4ISIM
Blue Controller
JBI
System resource manager determines allocation of resources to participants and roles• Assigns a weight to each role based on its
relative importance (from the blue controller) • Divides the total amount of resources (e.g.,
Mbps or %CPU) by the number of participants in all roles multiplied by their weight to get a resource unit
• Each participant is allocated a resource unit times the weight of its role
System resource manager pushes policy to each participant (SimUAVs and SimUCAVs)
• Role• Relative importance• Resource allocation• Min and Max allowed (from mission requirements)
Local resource manager determines how best to utilize allocated resources• Diffserv Code Point (based on relative importance of role)• CPU reservation• Shaping data to fit allocated CPU and bandwidth: rate, size (cropping or
scale), compression• Chooses based on resource allocation and mission needs of the role
Local resource manager configures qoskets to enforce resource management
Qoskets control resources and shape imagery
• Diffserv Code Point • CPU reservation• Rate, compression level, amount to scale or
crop
Dynamic End-to-End QoS ManagementDynamic End-to-End QoS Management
6
Constituent Technologies (1/2)Constituent Technologies (1/2)
• Component-based middleware – CIAO components– Functional components
• SimUAV sender, SimUAV receiver
– Qosket components• CPU reservation (CPU broker
Qosket)• Network priority (Diffserv
Qosket)• Application/Data
management– Image compression – Rate shaping and pacing– Scaling – Cropping
Client Application Server
Component Assembly
RT-ORB
in args
out args + return value
Operation ()
QoSMechanism
Plug ins
QoSMechanism
Plug ins
ClientConfiguration
Aggregate
QoSAdaptation
Container
CORBAComponent
ComponentHome
Real-time POA
QoS PropertyAdaptor
QoS Policies
Reflect
QoSAdaptation
QoSAdaptation
QoSMechanism
Plug ins
NamedPolicy
Aggregate
NamedPolicy
Aggregate
ObjectReference
QoSAdaptation
QoSMechanism
Plug ins
QoS Policies
Component ConnectionSpecifications
Component & Home Impls
7
Functional Components
Qosket Components QoS Management Components
SimUAVSensorSimUAVSensor
CroppingQosket
CroppingQosket
ScalingQosketScalingQosket
CompressionQosket
CompressionQosket
PacingQosketPacingQosket
CPUBrokerQosket
CPUBrokerQosket
DiffservQosketDiffservQosket
LocalResourceManager
LocalResourceManager
LocalResourceManager
qosket attributes
images
policy
missionmode
changes
ReceiverReceiverReceiverReceiverReceiverReceiverReceiverReceiverReceiverReceiver
SystemResourceManager
SystemResourceManager
IntegratedDisplay
C4ISIM
Blue Controller
Constituent Technologies (2/2)Constituent Technologies (2/2)
• Multi-layer QoS management– System resource manager– Local resource manager
• Modeling and synthesis using DQME, CADML
8
•Presented at CBSE 7
•We prototyped this one in the QuO software– Works with existing assembly tools
– Allows QoS to be distributed where needed
– The assembly of Qoskets can run in a single component server unless necessitated by application to run otherwise
– Are general QoS provisioning components, i.e., can be reused with any other application with minimum changes
– Implemented for CIAO and Prism and used in the Demo
Approaches to encapsulating QoS behaviors as components
Encapsulate QoS artifacts as components
Encapsulate one QoS artifact for each component
Create Specialized CCM container
Encapsulate all QoS control into single, centralized controller
QoSMaster
Qosket ComponentsQosket Components
9
This is the model we use in Demonstration 3, becauseit is more representative of a UAV pushing imagery
Qosket Component PerformanceQosket Component Performance
QosketcomponentSender Distributor Receiver
imageEvt(with image data)
imageEvt(with image data)
imageEvt(with image data)
QosketcomponentSender Distributor Receiver
imageEvt imageEvt
fetch image fetch image
imageEvt
fetch image
• Based on CCMPerf
• Component version of the distributed UAV software includes
– Functionality components (i.e., senders, distributors, receivers)
– Qosket components
• Two alternatives for sending imagery using components
– Event push, data pull (similar to the Prism model)
– Event push with image payload
Event push, Data pull Model
Event push with image payload
110964811536981157195
1184180
719844767176
0
200000
400000
600000
800000
1000000
1200000
1400000
1 2
Component Models - Model 1: Event Push Data Pull Model 2: Data Tagged Event Push
Sender-Distriibutor-Receiver Sender-Distributor-Qosket-Receiver (Passive) Sender-Distributor-Qosket-Receiver (Active)
Event push data pull Event with payload
No qosket
Qosket component;no adaptation
Qosket component with scaling
• Insertion of an extra component added modest overhead
– 4.2% and 2.6%, respectively
• The adaptation provided by the qosket component more than makes up for the extra component overhead
– Scaling the image reduces the latency by 33.5 – 37.8%
10
Modeling and Synthesis: How We Constructed the Demonstration
Modeling and Synthesis: How We Constructed the Demonstration
• Assembly of the system using CADML– Generated XML CAD file– Transitioning to use PICML
• End-to-end QoS using DQME– Used for documentation and design– Code generation work in progress
• Application of MoBIES tools
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE componentassembly SYSTEM "componentassembly.dtd"><componentassembly id="Stream"> <componentfiles> <componentfile id="com-SystemResourceManager"> <fileinarchive name="SystemResourceManager.csd"/> </componentfile> <componentfile id="com-Sender"> <fileinarchive name="Sender.csd"/> </componentfile> <componentfile id="com-croppingQosPredictor"> <fileinarchive name="QosPredictorComponent.csd"/> </componentfile> <componentfile id="com-scalingQosPredictor"> <fileinarchive name="QosPredictorComponent.csd"/> </componentfile> <componentfile id="com-compressionQosPredictor"> <fileinarchive name="QosPredictorComponent.csd"/> </componentfile> <componentfile id="com-ScaleQosket"> <fileinarchive name="ScaleQosket.csd"/> </componentfile> <componentfile id="com-CropQosket"> <fileinarchive name="CropQosket.csd"/> </componentfile> <componentfile id="com-CompressQosket"> <fileinarchive name="CompressQosket.csd"/> </componentfile> <componentfile id="com-LocalResourceManagerComponent"> <fileinarchive name="LRM.csd"/> </componentfile> <componentfile id="com-DiffServQosket"> <fileinarchive name="DiffServQosket.csd"/> </componentfile> <componentfile id="com-Receiver"> <fileinarchive name="Receiver.csd"/> </componentfile> </componentfiles> <partitioning> <processcollocation id="Process_Location1"> <homeplacement id="a_ReceiverHome"> <componentfileref idref="com-Receiver"/> <componentinstantiation id="a_Receiver"/> </homeplacement> <destination>Default</destination> </processcollocation> <processcollocation id="Process_Location2"> <homeplacement id="a_CropQosketHome"> <componentfileref idref="com-CropQosket"/> <componentinstantiation id="a_CropQosket"/> </homeplacement> <homeplacement id="a_compressionQosPredictorHome"> <componentfileref idref="com-compressionQosPredictor"/> <componentinstantiation id="a_compressionQosPredictor"/> </homeplacement> <homeplacement id="a_scalingQosPredictorHome"> <componentfileref idref="com-scalingQosPredictor"/> <componentinstantiation id="a_scalingQosPredictor"/> </homeplacement> <homeplacement id="a_croppingQosPredictorHome"> <componentfileref idref="com-croppingQosPredictor"/> <componentinstantiation id="a_croppingQosPredictor"/> </homeplacement> <homeplacement id="a_LocalResourceManagerComponentHome"> <componentfileref idref="com-LocalResourceManagerComponent"/> <componentinstantiation id="a_LocalResourceManagerComponent"> <registercomponent> <writeiortofile name="lrm.ior"/> </registercomponent> </componentinstantiation> </homeplacement> <homeplacement id="a_SenderHome"> <componentfileref idref="com-Sender"/> <componentinstantiation id="a_Sender"> <registercomponent> <writeiortofile name="sender.ior"/> </registercomponent> </componentinstantiation> </homeplacement> <homeplacement id="a_CompressQosketHome"> <componentfileref idref="com-CompressQosket"/> <componentinstantiation id="a_CompressQosket"/> </homeplacement> <homeplacement id="a_ScaleQosketHome"> <componentfileref idref="com-ScaleQosket"/> <componentinstantiation id="a_ScaleQosket"/> </homeplacement> <homeplacement id="a_DiffServQosketHome"> <componentfileref idref="com-DiffServQosket"/> <componentinstantiation id="a_DiffServQosket"/> </homeplacement> <destination>Default</destination> </processcollocation> <processcollocation id="Process_Location3"> <homeplacement id="a_SystemResourceManagerHome"> <componentfileref idref="com-SystemResourceManager"/> <componentinstantiation id="a_SystemResourceManager"> <registercomponent> <writeiortofile name="srm.ior"/> </registercomponent> </componentinstantiation> </homeplacement> <destination>Default</destination> </processcollocation> </partitioning> <connections> <connectevent> <consumesport> <consumesidentifier>imageEvt</consumesidentifier> <componentinstantiationref idref="a_Receiver"/> </consumesport> <publishesport> <publishesidentifier>outgoing_Evt</publishesidentifier> <componentinstantiationref idref="a_CompressQosket"/> </publishesport> </connectevent> <connectevent> <consumesport> <consumesidentifier>incoming_Evt</consumesidentifier> <componentinstantiationref idref="a_LocalResourceManagerComponent"/> </consumesport> <publishesport> <publishesidentifier>imageEvt</publishesidentifier> <componentinstantiationref idref="a_Sender"/> </publishesport>
<connectevent> <consumesport> <consumesidentifier>policyChangeEvent</consumesidentifier> <componentinstantiationref idref="a_LocalResourceManagerComponent"/> </consumesport> <publishesport> <publishesidentifier>policy_evt</publishesidentifier> <componentinstantiationref idref="a_SystemResourceManager"/> </publishesport> </connectevent> <connectevent> <consumesport> <consumesidentifier>incoming_Evt</consumesidentifier> <componentinstantiationref idref="a_ScaleQosket"/> </consumesport> <publishesport> <publishesidentifier>outgoing_Evt</publishesidentifier> <componentinstantiationref idref="a_CropQosket"/> </publishesport> </connectevent> <connectevent> <consumesport> <consumesidentifier>incoming_Evt</consumesidentifier> <componentinstantiationref idref="a_CropQosket"/> </consumesport> <publishesport> <publishesidentifier>outgoing_Evt</publishesidentifier> <componentinstantiationref idref="a_LocalResourceManagerComponent"/> </publishesport> </connectevent> <connectevent> <consumesport> <consumesidentifier>incoming_Evt</consumesidentifier> <componentinstantiationref idref="a_CompressQosket"/> </consumesport> <publishesport> <publishesidentifier>outgoing_Evt</publishesidentifier> <componentinstantiationref idref="a_ScaleQosket"/> </publishesport> </connectevent> <connectevent> <consumesport> <consumesidentifier>resourceAllocationEvt</consumesidentifier> <componentinstantiationref idref="a_LocalResourceManagerComponent"/> </consumesport> <publishesport> <publishesidentifier>resource_evt</publishesidentifier> <componentinstantiationref idref="a_SystemResourceManager"/> </publishesport> </connectevent> <connectinterface> <usesport> <usesidentifier>scalingQosPredictor</usesidentifier> <componentinstantiationref idref="a_LocalResourceManagerComponent"/> </usesport> <providesport> <providesidentifier>qosLevels</providesidentifier> <componentinstantiationref idref="a_scalingQosPredictor"/> </providesport> </connectinterface> <connectinterface> <usesport> <usesidentifier>scalingQosket</usesidentifier> <componentinstantiationref idref="a_LocalResourceManagerComponent"/> </usesport> <providesport> <providesidentifier>currentLevelValue</providesidentifier> <componentinstantiationref idref="a_ScaleQosket"/> </providesport> </connectinterface> <connectinterface> <usesport> <usesidentifier>croppingQosket</usesidentifier> <componentinstantiationref idref="a_LocalResourceManagerComponent"/> </usesport> <providesport> <providesidentifier>currentLevelValue</providesidentifier> <componentinstantiationref idref="a_CropQosket"/> </providesport> </connectinterface> <connectinterface> <usesport> <usesidentifier>compressionQosket</usesidentifier> <componentinstantiationref idref="a_LocalResourceManagerComponent"/> </usesport> <providesport> <providesidentifier>currentLevelValue</providesidentifier> <componentinstantiationref idref="a_CompressQosket"/> </providesport> </connectinterface> <connectinterface> <usesport> <usesidentifier>diffservQosket</usesidentifier> <componentinstantiationref idref="a_LocalResourceManagerComponent"/> </usesport> <providesport> <providesidentifier>currentLevelValue</providesidentifier> <componentinstantiationref idref="a_DiffServQosket"/> </providesport> </connectinterface> <connectinterface> <usesport> <usesidentifier>compressionQosPredictor</usesidentifier> <componentinstantiationref idref="a_LocalResourceManagerComponent"/> </usesport> <providesport> <providesidentifier>qosLevels</providesidentifier> <componentinstantiationref idref="a_compressionQosPredictor"/> </providesport> </connectinterface> <connectinterface> <usesport> <usesidentifier>croppingQosPredictor</usesidentifier> <componentinstantiationref idref="a_LocalResourceManagerComponent"/> </usesport> <providesport> <providesidentifier>qosLevels</providesidentifier> <componentinstantiationref idref="a_croppingQosPredictor"/> </providesport> </connectinterface> </connections></componentassembly>
CADML model (one SimUAV visible)
CAD file (XML)<componentfile id="com-ScaleQosket"> <fileinarchive name="ScaleQosket.csd"/></componentfile><componentfile id="com-CropQosket"> <fileinarchive name="CropQosket.csd"/></componentfile>
<homeplacement id="a_ScaleQosketHome"> <componentfileref idref="com-ScaleQosket"/> <componentinstantiation id="a_ScaleQosket"/> </homeplacement> <homeplacement id="a_DiffServQosketHome"> <componentfileref idref="com-DiffServQosket"/> <componentinstantiation id="a_DiffServQosket"/> </homeplacement>
DQME Modeling
11
PublicationsPublications
• Joseph Loyall, Jianming Ye, Sandeep Neema, and Nagabhushan Mahadevan. Model-Based Design of End-to-End Quality of Service in a Multi-UAV Surveillance and Target Tracking Application. Second RTAS Workshop on Model-Driven Embedded Systems (MoDES '04), Toronto, Canada, May 25-28, 2004.
• George T. Heineman and William T. Councill, Component-Based Software Engineering: Putting the Pieces Together, Addison Wesley, June 2001.
• Jianming Ye, Joseph P. Loyall, Richard Shapiro, Sandeep Neema, N. Mahadevan, S. Abdelwahed, M. Koets,and W. Denise. A Model-Based Approach to Designing QoS Adaptive Applications. 2004. Submitted for publication.
• Praveen K. Sharma, Joseph P. Loyall, George T. Heineman, Richard E. Schantz, Richard Shapiro, Gary Duzan Component-Based Dynamic QoS Adaptations in Distributed Real-Time and Embedded Systems – submitted to DOA
12
SummarySummary
• We have developed a complex DRE application built using components– Functional components, Qosket components and QoS
Management components to provide• Dynamic end-to-end mission-driven QoS management
• Time critical target engagement
• Combined USAF and Army operations
• Components assembled using CADML, DQME• Qosket Components
– Key to end-to-end QoS Management – Combines CIAO and QuO technology
• Modeling Tools– Easy to assemble, reusable in different scenarios
• Minimal overhead for increased flexibility and control