Download presentation
Presentation is loading. Please wait.
Published byTobias Glenn Modified over 9 years ago
1
Controls Group Archiving at Jefferson Lab (Presentation of work by Chris Larrieu)
2
Controls Group Development Efforts Archiving Engine History Data Access Interface Data Transforms
3
Controls Group JLAB Archiving Engine Standard C++: HP-UX aCC, Linux g++ Plug-in data acquisition modules Trigger Monitor Specialized pre/post event ring buffers Easy to add new ones Integrated relational database Configuration info Run log Data cross reference, grouping CORBA interface Efficient
4
Controls Group History Data Access Interface: Client Overview 1. Obtain archive reference 2. Initialize range (channel name, begin, end) 3. Manipulate (remote?) data 4. Pull to client side(?) 5. Use data locally.
5
Controls Group Accessing Local History Data Client Application CADataStore Class Data Manipulation Interface CADataStore Subclass CADataStore Subclass CADataStore Subclass Xarr formatCZAR format Frequency archiver format
6
Controls Group Adapting CADataStore To specialize CADataStore: Directory object 10 virtual functions Archive object 2 virtual functions Range object 4 virtual functions range_iterator object 1 virtual function
7
Controls Group Why Remote Access? Clients don’t require disk access (no disk mounts) For low-power data clients Put processing close to the data Future: cacheing common data requests
8
Controls Group Accessing Remote History Data Client Application CADataStore Class Data Manipulation Interface CADataStore Subclass CADataStore Subclass CADataStore Subclass Xarr formatCZAR format Frequency archiver format History Data Server
9
Controls Group Using CORBA Designed to support manipulation of distributed objects: ideal for history API. Open source implementation for UNIX / Windows (MICO 2.3.5) API uses but does not expose CORBA CORBA weaknesses not relevant for history API.
10
Controls Group When? Adaptor library by July Data manipulation API by September History server by December
11
Controls Group Producer / Consumer Model Producer pushes history records into FIFO Consumer pulls them out Transform consumes and produces First In, First Out ProducerConsumer records
12
Controls Group History records Collection of fields Name Human-friendly label (e.g. “timestamp”) Standing Computer-friendly label (primary, collating, auxiliary, …) Value Interprets referenced data (run-time typing) Inlined type-code switching no virtual functions Vector / scalar: real, integer, time, opaque
13
Controls Group Example: volatile CA history record “timestamp”CollatingScalar time “value”Primary “status”AuxiliaryScalar integer “severity”AuxiliaryScalar integer
14
Controls Group FIFO Packed field data Info record Provides static information about contained data (e.g. CA control info) Input record Conduit for writing sequential data (“write head”) push() advances field references Output record Conduit for retrieving sequential data (“read head”) pull() advances field references
15
Controls Group FIFO Schematic Input record Output record Field stat Field val Field ts Field stat Field val Field ts Memory block Next memory block
16
Controls Group Run-time Discovery Flexibility exacts performance penalty Extra level of indirection accessing data Dynamic typing implies dynamic memory management Mitigating factors Avoid rote OO approach of indiscriminate subclassing: better to inline switch statement than incur virtual function overhead. Primarily deal with large blocks of homogeneous data.
17
Controls Group Producer Create & describe info, data records dynamic_record info, data; info.add_field (…); data.add_field(…); …; Create fifo, specifying layout fifo * output = new fifo (info, data); Until done, assign to record then push. data[i] = x; data[j] = y; output->push();
18
Controls Group Consumer Reference input record, fields basic_record & irec = fifo.data(); basic_record::field & x = irec.collating(); basic_record::field & y = irec.primary(); Read and use data while ( fifo.pull() ) plot (x,y);
19
Controls Group Transform Consumer and producer Verify input record supplies compatible data Describe output fifo Consume input, generating output Single pass filters can work in parallel with others
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.