Skip to content

HltEventLoopMgr: Add option to switch from pop-all mode to pop-one

Rafal Bielski requested to merge rbielski/athena:hlt-elm-pop-one into master

The current HLT event loop manager logic, copied from AthenaHiveEventLoopMgr, is:

  1. for each free slot, read new event and push to scheduler
  2. once there are no free slots (or events in input), pop all finished events from scheduler
  3. for each finished event, do output handling, then clear the corresponding store
  4. after all finished events are handled, go to 1.

This MR introduces a different mode, where in 2. we pop one and only one event from the scheduler, then handle the output and go to 1. to re-fill the scheduler slot ASAP before dealing with other finished events.

The default behaviour remains pop-all but now we have a flag to easily switch to pop-one. The pop-one mode provides higher scheduler slot occupancy and lower I/O times per event, but increases the time which finished events wait to be popped. The effect of this on the application throughput very much depends on event processing times, I/O times and how much is done in the event loop manager thread for finished events. In some situations this may improve and in some may decrease the performance. Which setting is better for HLT remains to be tested thoroughly.

FYI @bwynne, @tbold, @tamartin, @fwinkl, @wiedenma, @smh

A similar option may be also of interest for some offline workflows with AthenaHiveEventLoopMgr, so tagging @tsulaia, @ssnyder, @ponyisi

Merge request reports