370 likes | 387 Views
Design and Implementation of Frameworks for Distributed Interactive Applications. Peter A. Dinda. Outline. Interactive application model Distributing interactive applications Method invocation framework Mapping engine framework Early IDL Extensions Early Performance measurements.
E N D
Design and Implementation of Frameworks for Distributed Interactive Applications Peter A. Dinda
Outline • Interactive application model • Distributing interactive applications • Method invocation framework • Mapping engine framework • Early IDL Extensions • Early Performance measurements
Interactive Application Model Display This Response View Model (Simulation) User Action Controller Execute This Code
What’s Important How Does It Look? View How Long Does It Take? Model (Simulation) Controller
Digging Deeper View User Action Activation Tree Controller Procedure Call or Method Invocation, pick your poison
Concentration View User Action Controller Controller Rest of Talk
Distributed Interactive Applications: Freedom and Complexity Flexible Data Movement ? Controller Controller ? ? Flexible Binding Flexible Mapping
Stream Sender Stream Receiver Mapping Engine Resource Manager (REMULAC) Distributed Shared State System The Framework Behind The Call Quality Modulator State Calling Object Object
Stream Sender Stream Receiver Calling Object Mapping Engine Resource Manager (REMULAC) Distributed Shared State System Shared State Objects Quality Modulator Object Section Object Section Object Section Object
Shared State Objects Stream Sender Stream Receiver Object Section Object Section Calling Object Object Section Mapping Engine Resource Manager (REMULAC) Distributed Shared State System Quality Modulator Object
Stream Sender Stream Receiver Object Section Object Section Object Section Mapping Engine Resource Manager (REMULAC) Distributed Shared State System Method Invocation Begins Quality Modulator Method Invocation Calling Object User Action Object
Stream Sender Stream Receiver Object Section Calling Object Object Section Mapping Engine Resource Manager (REMULAC) Distributed Shared State System Mapping the Invocation Quality Modulator Object Section Map Request Resource Info Dist. Info Object
Mapping the Invocation Stream Sender Stream Receiver Object Section Object Section Calling Object Object Section Mapping Engine Resource Manager (REMULAC) Distributed Shared State System Quality Modulator Adjust Quality Select Move Args Redistribute Object
Data Movement Stream Sender Stream Receiver Object Section Calling Object Mapping Engine Resource Manager (REMULAC) Distributed Shared State System Quality Modulator Object Section Object Section Move State Object
Execution Stream Sender Stream Receiver Calling Object Mapping Engine Resource Manager (REMULAC) Distributed Shared State System Quality Modulator Object Section Object Section Object Section Object
Execution Completed Stream Sender Stream Receiver Calling Object Mapping Engine Resource Manager (REMULAC) Distributed Shared State System Quality Modulator Object Section Object Section Object Section Object
Data Movement Stream Receiver Calling Object Mapping Engine Resource Manager (REMULAC) Distributed Shared State System Quality Modulator Stream Sender Object Section Object Section Object Section Object
Data Display Stream Receiver Calling Object Mapping Engine Resource Manager (REMULAC) Distributed Shared State System Quality Modulator Stream Sender Object Section Object Section Object Section Object
Mapping a Method Invocation to Optimize User Satisfaction • Degrees of freedom • Binding of call to implementation • Mapping of execution to a node • Quality modulation parameters • Constraints • Available resources and implementations • Space of quality modulation parameters
The Mapping Engine Mapping Request Application Quality Parameters Application Quality Parameter Constraints Binding Available Implementations Mapping Dist. Info User Prefs Measured User Satisfaction Resource Info
Structure of the Mapping Engine Implementation Constraints AQP Constraints Mapping Request Selection Heuristic User Satisfaction Estimate Objective Function (Estimates User Satisfaction) Current State Dist. Info User Prefs Measured User Sat. Resource Info • AQPs • Binding • Mapping
AQP1 AQP2 … … … Satisfaction Estimator AQPn Compression Estimator Response Time Estimator Mapping Binding User Prefs User Satisfaction Distribution Resources
AQP1 AQP2 … … … Satisfaction Estimator AQPn Compression Estimator Response Time Estimator Mapping Binding User Prefs User Satisfaction Distribution Resources
AQP1 AQP2 … … … Satisfaction Estimator AQPn Compression Estimator Response Time Estimator Mapping Binding User Prefs User Satisfaction Distribution Resources
AQP1 AQP2 … … … Satisfaction Estimator AQPn Compression Estimator Response Time Estimator Mapping Binding User Prefs User Satisfaction Distribution Resources
AQP1 AQP2 … … … Satisfaction Estimator AQPn Compression Estimator Response Time Estimator Mapping Binding User Prefs User Satisfaction Distribution Resources
AQP1 AQP2 … … … Satisfaction Estimator AQPn Compression Estimator Response Time Estimator Mapping Binding User Prefs User Satisfaction Distribution Resources
When a method is invoked on the model, choose AQP1…AQPn, mapping, and binding such that the satisfaction estimate is maximized given the contraints imposed by the ranges of AQP1…AQPn , the available candidate mappings, and resource availability and state distributions. Over the lifetime of application execution, modify the user satisfaction transfer functions based on changing User Preferences, improve the Satisfaction Estimator based on actual measured Satisfaction, and improve the Response Time Estimator based on actual response time measurements.
Extending OMG CORBA IDL for My Nefarious Purposes • Interface options • Variable size arrays • State declarations • Operation state use declarations
Interface Options • Object attributes • Serializeable, Mobile, Persistent, Secure, Replicable • Communication attributes • HTTP, UDP, TCP • ConnectionOriented • Nannyed • Distributed
Interface Option Examples interface Quoter [TCP, HTTP] { … } interface AudioSimulation2D [Nannyed, Distributed] { } interface ConvolutionEngine [Nannyed, Replicable] { }
Variable sized arrays struct ImpulseResponse { unsigned long numsamples; double sample[variable:numsamples]; };
State Declarations interface AudioSimulation2D [Nannyed, Distributed] { state SpaceAttributes { unsigned long numboundaryrects; unsigned long sizex; unsigned long sizey; }; state SimulationSpace { double space[3][variable:sizey][variable:sizex]; }; state ImpulseResponses { ImpulseResponse responses[variable:num_sources] [variable:num_listeners]; };
State Use Declarations interface AudioSimulation2D [Nannyed, Distributed] { void Compute(in unsigned long numiters) reads {SpaceAttributes,SourceAttributes, ListenerAttributes,BoundaryInfo} writes {SimulationSpace, ImpulseResponses} modifies {SimulationAttributes} ;
Method Invocation Throughput Null Call, No Arguments, 200 MHz Ppro, NT 4.0, VC++ 4.2
Data Transfer Throughput Process to Process, 256 KB argument, No Conversion, 200 MHz Ppro, NT 4.0, VC++ 4.2
Conclusions • IDL compiler supports extensions • Currently extending run-time • …