Skip to content

Speed up and clean up HiveDataBrokerSvc, AlgorithmMgr and ToolSvc

Rosen Matev requested to merge rmatev/Gaudi:clean-databroker into master

I noticed that with a realistic LHCb HLT2 configuration a lot of the time in initialize is spent in HiveDataBroker (called by HLTControlFlowMgr). This is explained by the ~50k algorithms and sub-optimal scaling in answering algorithmsRequiredFor queries (and the query pattern of HLTControlFlowMgr and our control flow tree). With the changes below, initialization becomes a few hundred seconds faster and the time spent in HiveDataBroker is no longer significant.

  • Cleanups
    • Remove possibility to late-initialize algs (remove m_cfnodes).
    • Do not check for type when a TypeNameString request has no explicit type.
  • Speedups (overall 315s->75s in the initialization time for LHCb's HLT2)
    • Implement requests using DFS topological sorting which has a linear complexity scaling with the size of the result.
    • Store AlgEntry-s in a map with their name as key. Spares a linear lookup in algorithmsRequiredFor.
    • Store tools in ToolSvc in a map for faster lookup by name.
    • Store algorithm SmartIFs in AlgorithmManager in a map for faster lookup by name.
Edited by Rosen Matev

Merge request reports