component-based dynamic qos adaptation

12
1 Component-Based Dynamic QoS Adaptation Praveen Sharma, George Heinman, Joseph Loyall, Prakash Manghwani, Matthew Gillen, Jianming Ye, Krishnakumar Balasubramanian TAO Workshop July 16, 2004

Upload: kaloni

Post on 13-Jan-2016

38 views

Category:

Documents


2 download

DESCRIPTION

Component-Based Dynamic QoS Adaptation. Praveen Sharma, George Heinman, Joseph Loyall, Prakash Manghwani, Matthew Gillen, Jianming Ye, Krishnakumar Balasubramanian TAO Workshop July 16, 2004. Overview. UAV-OEP/Capstone Demo – PCES Objective: Operational Capabilities and Technical Story - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Component-Based Dynamic  QoS Adaptation

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

Page 2: Component-Based Dynamic  QoS Adaptation

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

Page 3: Component-Based Dynamic  QoS Adaptation

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

Page 4: Component-Based Dynamic  QoS Adaptation

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

Page 5: Component-Based Dynamic  QoS Adaptation

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

Page 6: Component-Based Dynamic  QoS Adaptation

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

Page 7: Component-Based Dynamic  QoS Adaptation

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

Page 8: Component-Based Dynamic  QoS Adaptation

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

Page 9: Component-Based Dynamic  QoS Adaptation

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%

Page 10: Component-Based Dynamic  QoS Adaptation

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

Page 11: Component-Based Dynamic  QoS Adaptation

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

Page 12: Component-Based Dynamic  QoS Adaptation

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