Upload
dillon-hooper
View
20
Download
1
Tags:
Embed Size (px)
DESCRIPTION
Infopipes and the Infopipe Stub Generator Galen Swint, Calton Pu, Younggyun Koh, Wenchang Yan. Overview. The Infosphere project Goals of the ISG Implementation Current results Infopipes and OEP Future Work. The Infosphere Project. Distributed computing with RPC is hard - PowerPoint PPT Presentation
Citation preview
Infopipes Infopipes and theand the
Infopipe Stub Infopipe Stub GeneratorGenerator
Galen Swint, Calton Pu, Galen Swint, Calton Pu, Younggyun Koh, Wenchang YanYounggyun Koh, Wenchang Yan
OverviewOverview
The Infosphere projectThe Infosphere projectGoals of the ISGGoals of the ISG ImplementationImplementationCurrent resultsCurrent results Infopipes and OEPInfopipes and OEPFuture WorkFuture Work
The Infosphere ProjectThe Infosphere Project
Distributed computing with RPC is hardDistributed computing with RPC is hard RPC semantics do not fit streaming RPC semantics do not fit streaming
applicationsapplications Need services to be more composableNeed services to be more composable QoS concernsQoS concerns
• ““expanded” QoSexpanded” QoS• eliminate redundant QoS codingeliminate redundant QoS coding
Enhance portabilityEnhance portability• Same specification can be made for several Same specification can be made for several
different comm. machinesdifferent comm. machines
MotivationMotivation RPCRPC
• Procedure call abstraction hides Procedure call abstraction hides networknetwork
ApplicationApplication must address QoS must address QoS Does not understand application packetsDoes not understand application packets Request/Response is an unnatural fit for Request/Response is an unnatural fit for
streaming media (movies/sound)streaming media (movies/sound)
• Composable?Composable?• Basis for CORBA, RMI, Sun RPC, SOAPBasis for CORBA, RMI, Sun RPC, SOAP
We need an We need an information-centric information-centric abstraction that is abstraction that is network awarenetwork aware to to complementcomplement RPC RPC
Goals for ISL/ISGGoals for ISL/ISG
Form the core of an Infopipe toolkitForm the core of an Infopipe toolkit ISLISL
• Simple description for flowsSimple description for flows• Support datatypesSupport datatypes• Support “basic” compositionSupport “basic” composition• QoS requirementsQoS requirements
ISGISG• Generate datatypes, communication stubsGenerate datatypes, communication stubs• Support multiple communication layersSupport multiple communication layers• Support multiple languagesSupport multiple languages
Implementation Implementation ISG becomes part of a ISG becomes part of a processprocess XSLT + C++XSLT + C++ Brand new XIP (Young)Brand new XIP (Young) New comm. added more quickly (but New comm. added more quickly (but
needs more typing!)needs more typing!) XSLT allows easy modularity in XSLT allows easy modularity in
templates (xsl:include)templates (xsl:include) Must re-implement the aspectsMust re-implement the aspects Buzzword compliantBuzzword compliant
μ-benchmarksμ-benchmarks
Round trip time (ping-pong)Round trip time (ping-pong)• One number sent and received on separate One number sent and received on separate
simplex channelssimplex channels• 100 experiments of 1000 ping-pongs100 experiments of 1000 ping-pongs
0.1 sec 0.1 sec 1.5 sec 1.5 sec Java RMI Java RMI
0.001 sec 0.001 sec 0.152 sec 0.152 sec TCP socket TCP socket
0.04 sec 0.04 sec 0.35 sec 0.35 sec ECho/Infopipe ECho/Infopipe
Std. Dev. Std. Dev. Mean Time Mean Time
Experiment 1 - UAVExperiment 1 - UAV
UAV demoUAV demo• DoD projectDoD project• EChoECho• Remote camera sends data via wireless Remote camera sends data via wireless
linklink• Demonstrates code uploadingDemonstrates code uploading• ISG generates replacement comm. code ISG generates replacement comm. code
from SIP/XIPfrom SIP/XIP
Experiment 1 - UAV - ResultsExperiment 1 - UAV - Results
InitializationInitialization• 101 runs, discard 101 runs, discard
firstfirst• No statisical No statisical
differencedifference
0.7 ms0.7 ms19.6 ms19.6 msInfopipeInfopipe0.6 ms0.6 ms19.5 ms19.5 msOriginal Original
Std. Dev. Std. Dev. Mean Time Mean Time
Frame transferFrame transfer• 101 runs, discard 101 runs, discard
firstfirst• No statistical No statistical
differencedifference
45 ms45 ms606 ms606 msInfopipeInfopipe33 ms33 ms598 ms598 msOriginal Original
Std. Dev. Std. Dev. Mean Mean Time Time
Same performance with 36% fewer LOC!
ConclusionsConclusions
No performance hitNo performance hit Substantial LOC savingsSubstantial LOC savings Time savings for developmentTime savings for development Potential portabilityPotential portability LOC savings probably varies with AppLOC savings probably varies with App
OEP Integration RecapOEP Integration Recap
Participation in BBN OEPParticipation in BBN OEP• Source-based filters for adaptive constrained Source-based filters for adaptive constrained
resource management in the Multi-UAV demoresource management in the Multi-UAV demo• New filters as Infopipes (compression, New filters as Infopipes (compression,
encryption)encryption)• Better DRE application programs and better Better DRE application programs and better
QoS support (more platforms and dimensions)QoS support (more platforms and dimensions) Infopipe software toolsInfopipe software tools
• Infopipe Stub Generator, program viewer, Infopipe Stub Generator, program viewer, other toolsother tools
• Demo apps (BBN OEP, Boeing OEP, etc)Demo apps (BBN OEP, Boeing OEP, etc)
New Infopipe FunctionalityNew Infopipe Functionality
Three kinds of filters (and more)Three kinds of filters (and more)• Image filters (lower/higher resolution, B&W)Image filters (lower/higher resolution, B&W)• Compression (gzip, lzo, JPEG)Compression (gzip, lzo, JPEG)• Encryption (Rijndael)Encryption (Rijndael)
Two underlying platformsTwo underlying platforms• BSD sockets/TCP and TAO AVStreams/UDPBSD sockets/TCP and TAO AVStreams/UDP• And more: event channels, publish/subscribeAnd more: event channels, publish/subscribe
Automated QoS management Automated QoS management • Adaptation by choosing appropriate Adaptation by choosing appropriate
combination of filters (also controlled combination of filters (also controlled manually at runtime)manually at runtime)
WirelessLink-TCP
Abstract Infopipe ViewAbstract Infopipe View
WebCam
FilterControl
GUI
BBN VideoDistributor
Defragmenter
UDP
Assembler
ATR (PPM)
QuOContract
DVDviewMPEG/PPMPBIO/XML
parserMiddlemethod Stub PBIO/XML
generatorStub
PB
IO/X
ML
pars
er
Mid
dle
meth
od
Stu
bPB
IO/X
ML
genera
tor
Stu
b
SourceFilter
Application
Single Filter ExperimentsSingle Filter Experiments
GUI for Infopipe Specification
Infopipe Spec.Lang. (ISL)
ISL2XIP XIP
XMLparser
Middlemethod
StubXML
generatorStubXML XML
Infopipe StubGenerator
(evolving)
(fixed,extensible)
Multiple-Filter Experiment (1)Multiple-Filter Experiment (1)
Refining the information flow by Refining the information flow by combining Infopipes through connectorscombining Infopipes through connectors
Source
Image Filter Compress Encrypt
DVDviewMPEG/PPM
ATR
Decrypt Decompress
Multiple-Filter Experiment (2)Multiple-Filter Experiment (2)
Self-configured Infopipes (when data Self-configured Infopipes (when data stream is unencrypted, system bypasses stream is unencrypted, system bypasses the decryption stage)the decryption stage)
Source
Image Filter Compress
DVDviewMPEG/PPM
ATR
Decompress
Multiple-Filter Experiment (3)Multiple-Filter Experiment (3)
Adaptive and flexible distribution of Adaptive and flexible distribution of Infopipe stages at runtimeInfopipe stages at runtime
UAV
Image FilterCompress Encrypt
DVDviewMPEG/PPM
ATR
Decrypt Decompress
Intermediate Processing
Source
Distributor
IPC Connector
Connector SpecializationConnector Specialization
Socket ConnectorXML
parserMiddlemethod
StubXML
generatorStub
XMLparser
Middlemethod
StubXML
generatorStub
Function Call Conn. Middlemethod
StubXML
generatorStub
XMLparser
Middlemethod
StubStub
Function Call Conn.
Same machine
Same process/CPU
Different machines
Future WorkFuture Work
Stabilize comm. layersStabilize comm. layers Some basic type checkingSome basic type checking Use aspects for QoS (w/Lenin S.)Use aspects for QoS (w/Lenin S.) Wrap in specialization (w/Young K.)Wrap in specialization (w/Young K.) Use aspects for performance Use aspects for performance
adaptationadaptation
Planned ExperimentsPlanned Experiments Infopipe (filter) development and integrationInfopipe (filter) development and integration
• Development cost/time, variety of filter codeDevelopment cost/time, variety of filter code• Code quantity (ISL/XIP module size), quality Code quantity (ISL/XIP module size), quality
(runtime overhead), portability (variety of (runtime overhead), portability (variety of underlying platforms)underlying platforms)
• Integration into OEP, making QoS work with new Integration into OEP, making QoS work with new filters (measure QoS dimensions below)filters (measure QoS dimensions below)
QoS dimensions and trade-offsQoS dimensions and trade-offs• Performance (e.g., latency, bandwidth, image Performance (e.g., latency, bandwidth, image
resolution)resolution)• Security (e.g., encryption level)Security (e.g., encryption level)• Other platforms in OEP that support QoS Other platforms in OEP that support QoS
CreditsCredits Initial stub generator – MorimoriInitial stub generator – Morimori ECho – Greg Eisenhauer, Karsten SchwanECho – Greg Eisenhauer, Karsten Schwan Java socket template – Younggyun KohJava socket template – Younggyun Koh C socket template – Volkan AltuntasC socket template – Volkan Altuntas Initial QoS – Wei HanInitial QoS – Wei Han Demo harnesses, demo integration – Demo harnesses, demo integration –
Wenchang YanWenchang Yan Initial UAV demo – Fabian Bustamante, Initial UAV demo – Fabian Bustamante,
P@rick WidenerP@rick Widener
XIP ExampleXIP Example
Creating a data typeCreating a data type• From the UAV demo, this holds a frameFrom the UAV demo, this holds a frame
<datatype name="Raw_data"> <arg type="integer" name="tag" /> <arg type="char" name="ppm1" /> <arg type="char" name="ppm2" /> <arg type="integer" name="size" /> <arg type="integer" name="width" /> <arg type="integer" name="height" /> <arg type="integer" name="maxval" /> <arrayArg type="byte" name="buff" size="155000" /> </datatype>
XIP ExampleXIP Example
Creating a filterCreating a filter• From the UAV example, this crops an From the UAV example, this crops an
image to half sizeimage to half size
<filter name="cropImage1Cto2C" uri="cropImage.ecl" inType="Raw_data1C" outType="Raw_data2C" takesParams="1" paramType="Params_rectangle" />
XIP ExampleXIP Example
Declaring a simple, singular pipeDeclaring a simple, singular pipe• From UAV example, the sender and From UAV example, the sender and
receiversreceivers• Note each is only a half-pipeNote each is only a half-pipe
<pipe name="uavSender" absMachine="ECho2"> <outport name="send1" type="Raw_data" /> </pipe>
<pipe name="uavReceiverNormal" absMachine="ECho2"> <inport name="receive1" type="Raw_data" /> </pipe>
XIP ExampleXIP Example Connecting pipes togetherConnecting pipes together
<composedPipe name="multiUAV"> <declarations> <pipe name="sender" class="uavSender" /> <pipe name="receiver" class="uavReceiverNormal" /> </declarations> <ports /> <connections> <connection> <from pipe="sender" port="send1" /> <to pipe="receiver" port="receive1" /> </connection> </connections></composedPipe>
ISG TemplateISG Template Snippet for current version of ISGSnippet for current version of ISG
• Submit function for sending dataSubmit function for sending data• for-each for-each command generates for multiple outputscommand generates for multiple outputs• ““nodePipeOutConnectnodePipeOutConnect” captures some semantic ” captures some semantic
data about the templatedata about the template
<xsl:for-each select="/xip/pipes/pipe[@name=$thisPipeClass]/outport"><xsl:variable name="portName" select="@name"/><nodePipeOutConnect mark="true">int <xsl:value-of select="$thisPipeName"/>_<connType/>_<xsl:value-of select="$portName"/><connName/>Submit( );</nodePipeOutConnect></xsl:for-each>
Et voila!Et voila!
The code producedThe code produced
//int sender__send1Submit( CarrierStruct * );int sender__send1Submit( );
μ-benchmarksμ-benchmarks Single IntegerSingle Integer
• Loop 100,000 times sending 1 integer (4 bytes)Loop 100,000 times sending 1 integer (4 bytes)
0.003 sec 0.003 sec 0.122 sec 0.122 sec TCP socket TCP socket 0.015 sec 0.015 sec 2.6 sec 2.6 sec ECho/Infopipe ECho/Infopipe Std. Dev. Std. Dev. Mean Time Mean Time
0.003 sec 0.003 sec 3.393 sec 3.393 sec TCP socket TCP socket 0.004 sec 0.004 sec 3.463 sec 3.463 sec ECho/Infopipe ECho/Infopipe Std. Dev. Std. Dev. Mean Time Mean Time
1000 Integers1000 Integers• Loop 10,000 times sending 1,000 integers Loop 10,000 times sending 1,000 integers
(4000 bytes)(4000 bytes)