Data Transport for Online & Offline Processing

Slides:



Advertisements
Similar presentations
Categories of I/O Devices
Advertisements

Software Frame Simulator (SFS) Technion CS Computer Communications Lab (236340) in cooperation with ECI telecom Uri Ferri & Ynon Cohen January 2007.
Windows Communication Foundation and Web Services.
Status and roadmap of the AlFa Framework Mohammad Al-Turany GSI-IT/CERN-PH-AIP.
C++ fundamentals.
CVSQL 2 The Design. System Overview System Components CVSQL Server –Three network interfaces –Modular data source provider framework –Decoupled SQL parsing.
Overview Print and Document Services Print Management console Printer properties Troubleshooting.
Introduction to the Enterprise Library. Sounds familiar? Writing a component to encapsulate data access Building a component that allows you to log errors.
WINDOWS SERVICES. Introduction You often need programs that run continuously in the background Examples: – servers –Print spooler You often need.
Name Resolution Domain Name System.
UML Collaboration Diagram. Recap System Sequence Diagrams (SSD) UML for SSD Examples.
Interoperability Tests for IEC Scott Neumann November 12, 2009.
Introducing Axis2 Eran Chinthaka. Agenda  Introduction and Motivation  The “big picture”  Key Features of Axis2 High Performance XML Processing Model.
Institute of Computer and Communication Network Engineering OFC/NFOEC, 6-10 March 2011, Los Angeles, CA Lessons Learned From Implementing a Path Computation.
(Business) Process Centric Exchanges
QuikTrac 5.5, a validated Motorola Software Solution, allows you to take your Host ERP screens and extend them out to fixed or mobile devices including.
Oracle Data Integrator Procedures, Advanced Workflows.
1 Cisco Unified Application Environment Developers Conference 2008© 2008 Cisco Systems, Inc. All rights reserved.Cisco Public Introduction to Etch Scott.
Module 7: Resolving NetBIOS Names by Using Windows Internet Name Service (WINS)
Shannon Hastings Multiscale Computing Laboratory Department of Biomedical Informatics.
1 Geospatial and Business Intelligence Jean-Sébastien Turcotte Executive VP San Francisco - April 2007 Streamlining web mapping applications.
The TANGO Logging Service Status Implementation details Possible enhancements.
Architecture View Models A model is a complete, simplified description of a system from a particular perspective or viewpoint. There is no single view.
JS (Java Servlets). Internet evolution [1] The internet Internet started of as a static content dispersal and delivery mechanism, where files residing.
ICM – API Server & Forms Gary Ratcliffe.
Marcelo R.N. Mendes. What is FINCoS? A set of tools for data generation, load submission, and performance measurement of CEP systems; Main Characteristics:
Lecture 4 Mechanisms & Kernel for NOSs. Mechanisms for Network Operating Systems  Network operating systems provide three basic mechanisms that support.
© 2008 by Wind River; made available under the EPL v1.0 | 19-Nov-2008 TCF The Target Communication Framework Michael Scharf, Wind River wiki.eclipse.org/DSDP/TM/TCF_FAQ.
Hyperion Artifact Life Cycle Management Agenda  Overview  Demo  Tips & Tricks  Takeaways  Queries.
Interactions & Automations
Active-HDL Server Farm Course 11. All materials updated on: September 30, 2004 Outline 1.Introduction 2.Advantages 3.Requirements 4.Installation 5.Architecture.
Configuring MQ Connections and Handlers for MQ adapter 6.5 July 2008.
Mitglied der Helmholtz-Gemeinschaft FairMQ with FPGAs and GPUs Simone Esch –
CHAPTER 3 Router CLI Command Line Interface. Router User Interface User and privileged modes User mode --Typical tasks include those that check the router.
How to develop a VoIP softphone in C# by using OZEKI VoIP SIP SDK This presentation demonstrates the first steps concerning to how to develop a fully-functional.
1 RIC 2009 Symbolic Nuclear Analysis Package - SNAP version 1.0: Features and Applications Chester Gingrich RES/DSA/CDB 3/12/09.
Clinical Data Exchange using HL7 and Mirth Connect Lecture 12 - Using JavaScript with Mirth Connect – III - Advanced Message Routing - XSLT transforms.
Apache Axis2 XML Based Client API.
SDN controllers App Network elements has two components: OpenFlow client, forwarding hardware with flow tables. The SDN controller must implement the network.
Windows Communication Foundation and Web Services
Development Environment
Essentials of UrbanCode Deploy v6.1 QQ147
DDS Dynamic Deployment System
SMS module HDL-MGSM.431.
IMPORTING & EXPORTING DATA
CARA 3.10 Major New Features
Instructor: Mazhar Hussain
Section 13 - Integrating with Third Party Tools
Self Healing and Dynamic Construction Framework:
Extend SAP integration
Introduction to Redux Header Eric W. Greene Microsoft Virtual Academy
In-situ Visualization using VisIt
Activities and Intents
All about social networking
Enterprise Library Overview
Advanced Integration and Deployment Techniques
Windows Communication Foundation and Web Services
Use of Multiple Devices
Virtual LANs.
Northbound API Dan Shmidt | January 2017
Implementation CAN Communication Engine
CSE 154 Lecture 22: AJAX.
Time Gathering Systems Secure Data Collection for IBM System i Server
Analysis models and design models
Training Module Introduction to the TB9100/P25 CG/P25 TAG Customer Service Software (CSS) Describes Release 3.95 for Trunked TB9100 and P25 TAG Release.
Ch 17 - Binding Protocol Addresses
Overview Multimedia: The Role of WINS in the Network Infrastructure
Consuming Web Services with 2E Generated Objects
Concepts in ASP.NET Core App
Message Passing Systems
Presentation transcript:

Data Transport for Online & Offline Processing FairMQ Status Data Transport for Online & Offline Processing Alexey Rybalchenko (GSI Darmstadt, FairRoot group) PANDA Collaboration Meeting GSI, December 6, 2016

Ethernet, InfiniBand (IP-over-IB) What is FairMQ? Organize processing tasks in topologies, consisting of independent processes (Devices), that communicate via asynchronous message queues over network or inter-process. Ethernet, InfiniBand (IP-over-IB) SPLITTER MERGER SINK SAMPLER PROCESSOR FAIRMQ TOPOLOGY (example) Communication patterns: PUB-SUB, PUSH-PULL, REQ-REP, ... Ready to use devices are provided for typical scenarios. User-defined devices can be implemented by inheriting from FairMQDevice. Alexey Rybalchenko | PANDA Collaboration Meeting | 05.12.2016 2/13

FairMQ Status Reducing the amount of boilerplate code needed to create a device executable and simpler API to implement communication logic. Configuration subscriptions. Plugin system for device configuration and control. Alexey Rybalchenko | PANDA Collaboration Meeting | 05.12.2016 3/13

Reducing Boilerplate Recent FairMQ developments and user feedback allows us to significantly simplify executable creation and device code. Extract the main() function to a common header file. Provide simple callback-based API for handling data from the communication channels. Simplify configuration access and its extension. Extract dynamic configuration & control (via DDS) into a plugin system. Provide a simple recommended way to write and run a device which does not exclude any complex use cases. Alexey Rybalchenko | PANDA Collaboration Meeting | 05.12.2016 4/13

https://github.com/FairRootGroup/FairRoot/tree/dev/examples/MQ Common main() Extract the main() function to a common header file to minimize amount of boilerplate code. Allows us to hide more internal details from the user and easily extend/change them in the future. User has to implement two functions: addCustomOptions(...) : add custom command line options (optional), accessible from the device via fConfig. getDevice(...) : return the device to run. Example: https://github.com/FairRootGroup/FairRoot/tree/dev/examples/MQ Alexey Rybalchenko | PANDA Collaboration Meeting | 05.12.2016 5/13

https://github.com/FairRootGroup/FairRoot/tree/dev/examples/MQ Callback API Allow the user to register callback(s) for specific communication channels, that are called when data arrives on them: OnData(“channelA”, [](FairMQMessagePtr& msg){ /* use data */ }); OnData(“channelB”, [](FairMQParts& parts){ /* use data */ }); Hides the state check and the loop iterating over Receive(). Set in the constructor of the device or in InitTask(). Callbacks are called only when the device is in the RUNNING state. If a callback returns false, the device goes into IDLE state. https://github.com/FairRootGroup/FairRoot/tree/dev/examples/MQ Alexey Rybalchenko | PANDA Collaboration Meeting | 05.12.2016 6/13

Device without input channels: ConditionalRun() For devices without incoming data channels OnData() cannot be used. Instead the device implements ConditionalRun() method. It is called repeatedly until it returns false, after which the device goes into IDLE state. As with OnData(), this method hides the state check loop. https://github.com/FairRootGroup/FairRoot/tree/dev/examples/MQ Alexey Rybalchenko | PANDA Collaboration Meeting | 05.12.2016 7/13

Configuration Access and Extension The old GetProperty()/SetProperty() methods in FairMQ device are very verbose to extend in the derived devices, especially when support for custom options descriptions and different types is needed. Now the device has direct access to the FairMQProgOptions class via fConfig member. It allows easy access to all the provided command line options and other configuration parameters (e.g., from the JSON file). Here is an example of its use to set some device members from cmd options: Alexey Rybalchenko | PANDA Collaboration Meeting | 05.12.2016 8/13

Configuration Subscriptions The FairMQProgOptions class also allows the user to subscribe for configuration updates. This can be used, for example, to react when an external tool updates the configuration (to change device state and/or reinitialize). API: config.Subscribe<string>("data.0.address", [&device](const string& key, const string& value) { LOG(INFO) << ”Address configuration has changed: " << key << " = " << value; device.fChannels.at("data").at(0).UpdateAddress(value); }); config.UpdateValue<string>("data.0.address", "tcp://localhost:4321"); // callback will be called after this Nicolas Winckler Example: https://github.com/FairRootGroup/FairRoot/blob/dev/fairmq/options/runConfigEx.cxx Alexey Rybalchenko | PANDA Collaboration Meeting | 05.12.2016 9/13

Device Plugins for Configuration/Control Provide a plugin system for: Updating device configuration: configure connection parameters with values from runtime environment, configuration files, deployment system. Controlling the state of the device: accepting commands from an external control system and translating these into device state changes: init, run, stop, etc. device executable config manager config plugin control plugin device class Alexey Rybalchenko | PANDA Collaboration Meeting | 05.12.2016 10/13

Device Configuration Plugin: DDS Configure a running topology of devices dynamically by exchanging connection information via DDS. Plugin can be applied to any device without changing its code via command line option: --config libFairMQDDSConfigPlugin.so (default is ‘static’) The mapping is done via channel names corresponding to DDS property names in the DDS XML topology file: Binding channels write DDS properties. Connecting channels read DDS properties. E.g.: example topology device1 channelA : bind channelA : connect channelA : connect device2 ... device2 channelB : connect channelB : connect channelB : bind device3 "channel”: { "name": “channelA", "method": "bind", ... } <properties> <id access="write">channelA</id> </properties> Example: https://github.com/FairRootGroup/FairRoot/tree/dev/examples/MQ/3-dds Alexey Rybalchenko | PANDA Collaboration Meeting | 05.12.2016 11/13

Device Control Plugin: DDS FairMQDDSControlPlugin uses DDS CCustomCmd interface to listen to incoming commands. The commands are sent by a simple reference utility https://github.com/FairRootGroup/FairRoot/blob/dev/fairmq/run/runDDSCommandUI.cxx (to run: $FAIRROOTPATH/bin/fairmq-dds-command-ui (when dds-server is running)) Plugin can be applied to any device without changing its code via command line option: --control libFairMQDDSControlPlugin.so (other options are ‘static’ or ‘interactive’ (default)) The reference utility allows querying and changing the device state. DDS CCustomCmd interface allows to target which tasks to send the commands to (via topology path). device process device ChangeState() GetCurrentState() control plugin DDS FairMQ DDS Command UI process Example: https://github.com/FairRootGroup/FairRoot/tree/dev/examples/MQ/3-dds Alexey Rybalchenko | PANDA Collaboration Meeting | 05.12.2016 12/13

Miscellaneous Work in Progress: --log-to-file <filename> to log to a file instead of console. NewSimpleMessage() for simpler creation of small messages (copying!). Configurable logging interval per channel (“rateLogging”: “<seconds>”). FairMQMultiplier device – send same incoming message to multiple receivers with PUSH-PULL (without an additional copy). Simpler API for send/receive timeouts: Send(msg, “data”, 0, <milliseconds>). Work in Progress: Extension of the configuration plugin to support configuration updates (e.g. topology updates). Integration of the shared memory transport prototype as a third transport (beside zmq/nanomsg). Alexey Rybalchenko | PANDA Collaboration Meeting | 05.12.2016 13/13