online reconstruction (manchego) status report 09/02/12

26
Software Sustainability Institute www.software.ac. uk Online reconstruction (Manchego) Status report 09/02/12 Mike Jackson [email protected]

Upload: amber-petty

Post on 04-Jan-2016

29 views

Category:

Documents


2 download

DESCRIPTION

Online reconstruction (Manchego) Status report 09/02/12. Mike Jackson [email protected]. Architecture. DAQ. INPUT. InputPySpillGenerator. InputCppDAQOnlineData. spill N. spill N. MapPyGroup. MapPyGroup. MAP. MapPyBeamMapper. MapCppTOFDigits. MapCppSimulation. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Online reconstruction (Manchego) Status report 09/02/12

Software Sustainability Institute

www.software.ac.uk

Online reconstruction(Manchego)Status report

09/02/12Mike Jackson

[email protected]

Page 2: Online reconstruction (Manchego) Status report 09/02/12

Software Sustainability Institute

www.software.ac.uk

Architecture

InputPySpillGenerator

ReducePyDoNothing

OutputPyJSON

MapPyGroupMapPyBeamMapper

MapCppSimulation

MapCppTrackerDigitization

spill N

(spill N)’

In-memory cache

DAQ

InputCppDAQOnlineData

ReducePyTOFPlot

OutputPyImage

MapPyGroupMapCppTOFDigits

MapCppTOFSlabHits

MapCppTOFSpacePoints

spill N

(spill N)’

In-memory cache

INPUT

REDUCE

OUTPUT

MAP

In-memory cache

Page 3: Online reconstruction (Manchego) Status report 09/02/12

Software Sustainability Institute

www.software.ac.uk

Software development

Input

Output

Celery

DAQ

Web front-end

Transform

spill N

Transform

spill N+1

Transform

spill N-1

(spill N)’ (spill N+1)’(spill N-1)’

Merge

parallel transform execution

histogram mergers

web front-end

document-oriented database

Page 4: Online reconstruction (Manchego) Status report 09/02/12

Software Sustainability Institute

www.software.ac.uk

Parallel transform execution

Page 5: Online reconstruction (Manchego) Status report 09/02/12

Software Sustainability Institute

www.software.ac.uk

Parallel transform execution

• Spills are independent so can be transformed in parallel

• Celery Python asynchronous task queue Multi-processing

• RabbitMQ Message broker

Page 6: Online reconstruction (Manchego) Status report 09/02/12

Software Sustainability Institute

www.software.ac.uk

Celery and RabbitMQ

RabbitMQ Celery Worker

Celery Worker

Celery Worker

• Celery workers register with RabbitMQ automatically on start-up

• Celery workers can run locally or remotely

• Celery workers spawn N sub-processes to manage task execution

Page 7: Online reconstruction (Manchego) Status report 09/02/12

Software Sustainability Institute

www.software.ac.uk

Celery workers and tasks

RabbitMQ Celery Worker

Go.py

spill

spill’

Celery Proxy

spill

spill’

Celery Worker

Celery WorkerTransform

spill

spill’

• Celery tasks (request to transform a spill) are dispatched to the next available worker• Worker dispatches task to a free sub-process• Each sub-process is configured to apply a transform• Each worker has its own MAUS deployment

Transform

Transform

Transform

Transform

Transform

Page 8: Online reconstruction (Manchego) Status report 09/02/12

Software Sustainability Institute

www.software.ac.uk

Celery workers and broadcasts

RabbitMQ

Go.py

configuration

Celery Proxy

configuration

configuration

configuration

configuration

status

status

status

status

status

Celery Worker

Celery Worker

Celery WorkerTransform

Transform

Transform

Transform

Transform

Transform

• Celery broadcasts are dispatched all workers• Custom code to force broadcast into all sub-processes• Broadcast is used to ensure all workers have the same MAUS configuration and

transform – dynamic worker configuration

Page 9: Online reconstruction (Manchego) Status report 09/02/12

Software Sustainability Institute

www.software.ac.uk

Celery workers

• Start up Celery worker executable celeryd --c 2 --l INFO --purge --c is number of sub-processes (default is number of cores) --l is default Celery logging level --purge clears any backlog of messages from RabbitMQ

• Celery spawns sub-processes Up to --c value Sub-processes execute tasks i.e. transforms

Page 10: Online reconstruction (Manchego) Status report 09/02/12

Software Sustainability Institute

www.software.ac.uk

Dynamic configuration and Go.py

• Uses reflection to get transform name(s) MapPyGroup(MapPyBeamMaker, MapCppSimulation,

MapCppTrackerDigitization) “Transform specification”

• Invokes a Celery broadcast Transform specification + MAUS configuration + configuration ID

(Go.py process ID) Waits for a maximum of 5 minutes to hear from workers

• Synchronisation Celery workers and Go.py client should run the same MAUS

version

Page 11: Online reconstruction (Manchego) Status report 09/02/12

Software Sustainability Institute

www.software.ac.uk

Dynamic configuration and Celery workers

• Celery worker main process Receive broadcast command If configuration ID has changed

• Crams transform specification/configuration down to sub-processes• If all sub-processes update correctly then main process saves the configuration ID,

transform specification/configuration too

If sub-process dies, a new sub-process will spawn with the current configuration

Catches and converts any exceptions• Avoid non-Pickleable exceptions from causing unexpected errors

• Celery worker sub-processes Death existing transform Create and birth new ones Catches and converts any exceptions

Page 12: Online reconstruction (Manchego) Status report 09/02/12

Software Sustainability Institute

www.software.ac.uk

Transforming spills and Go.py

• execute_transform Celery task to execute MAUS transforms Client-side proxy Submits spill to RabbitMQ Returns AsyncResult to Go.py

• Polls AsyncResult Status – SUCCESS, FAILURE, PENDING Results – the transformed spill Errors

Page 13: Online reconstruction (Manchego) Status report 09/02/12

Software Sustainability Institute

www.software.ac.uk

TODOs

• Document error messages that can appear in Celery worker terminal window Draft already done but out-of-date due to recent

reimplementation http://micewww.pp.rl.ac.uk/projects/maus/wiki/M

AUSCeleryRabbitMQRecovery

• Relate to a “recovery” guide for control room

Page 14: Online reconstruction (Manchego) Status report 09/02/12

Software Sustainability Institute

www.software.ac.uk

Document-oriented database

Page 15: Online reconstruction (Manchego) Status report 09/02/12

Software Sustainability Institute

www.software.ac.uk

Document-oriented database

• Cache spills between input-transform and merge-output phases

• Products CouchDB

• (id, document)• 0.1.0 –yum install• 1.1.0 –day-wasting unable to build from source experience

MongoDB• Collections of (id, document)• Latest version –yum install

Page 16: Online reconstruction (Manchego) Status report 09/02/12

Software Sustainability Institute

www.software.ac.uk

Document-oriented database

• Go.py currently can use both or just cache spills in-memory

• Current naïve algorithm Read spill from database Pass to merge-output Delete spill from database

Page 17: Online reconstruction (Manchego) Status report 09/02/12

Software Sustainability Institute

www.software.ac.uk

TODOs

• Resolve how document cache is used within a single run By single instance of Go.py running merge-output? By multiple instances of Go.py running merge-output?

• Determines How spills are identified How they’re marked as having been “reduced” When they can be deleted

• Update Go.py appropriately

Page 18: Online reconstruction (Manchego) Status report 09/02/12

Software Sustainability Institute

www.software.ac.uk

Histogram mergers

Page 19: Online reconstruction (Manchego) Status report 09/02/12

Software Sustainability Institute

www.software.ac.uk

Histogram mergers

• Aggregate spill data and update histogram• Super-classes for graph packages

Matplotlib – ReducePyMatplotlibHistogram PyROOT – ReducePyROOTHistogram

• Examples: ReducePyHistogramTDCADCCounts ReducePyTOFPlot (Durga)

• Mergers do not display the histograms

Page 20: Online reconstruction (Manchego) Status report 09/02/12

Software Sustainability Institute

www.software.ac.uk

Histogram mergers

• Configuration options Image type e.g. EPS, PNG, JPG,… Refresh rate e.g. output every spill, every N spills Auto-number image tag

• Output JSON document Base64-encoded image data Image tag used for a file name Meta-data e.g. English description

Page 21: Online reconstruction (Manchego) Status report 09/02/12

Software Sustainability Institute

www.software.ac.uk

Image outputter

• OutputPyImage• Configuration options

Filename prefix Directory

• Extract and save base64-encoded image data Image file e.g. EPS, PNG, JPG,…

Page 22: Online reconstruction (Manchego) Status report 09/02/12

Software Sustainability Institute

www.software.ac.uk

TODOs

• Image JSON document Add keywords field

• OutputPyImage Save image and JSON document with meta-data JSON document becomes part of the online

reconstruction-web server API

Page 23: Online reconstruction (Manchego) Status report 09/02/12

Software Sustainability Institute

www.software.ac.uk

Web front-end

Page 24: Online reconstruction (Manchego) Status report 09/02/12

Software Sustainability Institute

www.software.ac.uk

Web front-end

• Django Python web framework Refresh every 5 seconds Currently using Django test web server

• Serve up images from a directory “API” between online reconstruction framework

and web front-end is just this directory Can run web-front end anywhere so long as images

are made available “somehow”

Page 25: Online reconstruction (Manchego) Status report 09/02/12

Software Sustainability Institute

www.software.ac.uk

Current state

Page 26: Online reconstruction (Manchego) Status report 09/02/12

Software Sustainability Institute

www.software.ac.uk

TODOs

• Web server Deploy under Apache 2.2 and mod_wsgi Render images and meta-data Search-by-keyword option

• Extensible Customise layout and presentation later