Skip to content

TrigCostMonMT: Enable MultiSlot saving of online cost data for jobs with --concurrent-events > 1

Tim Martin requested to merge tamartin/athena:multiSlotMonitoring into master

When running with --concurrent-events > 1, algorithms from multiple events will be occupying the N threads assigned to the athena process.

This MR first modifies its AlgorithmIdentifier

  • The AlgorithmIdentifier must provide a unique hash.
  • When collecting data from a single slot, this is obtained from the alg's name and the alg's store's name
  • Without Event Views, this would work across slots too as StoreGate's slot # is built into its store name.
  • With Event Views, it's the View's # in the store name. Hence more data needs to be added to the hash
  • I add std::to_string(slot) to the alg's name and alg's slot's name before hashing.
  • This identifies the alg, its View, and its Slot.

Next the concept of the "MasterSlot" is added. Here it is slot 0. If EnableMultiSlot is true, and monitoring is currently active for the MasterSlot, then data are collected from the execution of algorithms over all slots, and all these data are stored in the MasterSlot's payload container.

When the event in the MasterSlot finishes processing, data are exported not only for the event's algorithms, but also the algorithms in the other concurrent events which happened to overlap in time.

With these data, we can see (for MasterSlot events) if all threads are being kept busy or if there are periods of time where a thread is not running any algorithm in any slot.

If a non-MasterSlot monitored event overlaps in time with a monitored MasterSlot event, there is some duplication. The non-MasterSlot's data will be saved both to that slot's payload container and to the MasterSlot's payload container.

Additional:

  • Improved container-locking on fetching values
  • Add a concrete start timestamp for the L1Decoder (which starts things off)
  • Add a public isMonitoredEvent function for external callers
  • Cache the thread ID - to be used when ROS data start to be provided.

Tested with trigger JOs.

Edited by Tim Martin

Merge request reports