Skip to content

[TrigServices] Redesign HLT event loop manager for parallel operation

Rafal Bielski requested to merge rbielski/athena:hlt-evloop-parallel-v2 into master

Factorise all the start-of-event and end-of-event operations into separate functions, and enqueue them into a TBB task arena to process in parallel for different events, instead of serially on the main event loop thread. This is meant to better utilise the available threads and avoid the single thread bottleneck in high thread count configurations. Same problem as discussed in ATEAM-748 but this is a holistic solution for the online HLT case.

By default the maximum number of parallel I/O tasks is set to the number of scheduler slots in the job, but it can be changed with a job option.

Bonus change: Introduce a timeout for the "pop finished event from scheduler" operation to avoid timeouts / deadlocks during online operation, as observed in some corner cases in Technical Runs and Milestone Weeks at P1.

Side effect change: custom event loop check macros are replaced by functions, which is a nicer C++ design.

cc @wiedenma, @smh, @fwinkl, @tamartin, @bwynne, @astruebi, @palacino, @ssottoco

Edited by Rafal Bielski

Merge request reports