Adding Component Level Monitoring feature to PerfMonMT as part of GSoC work
This MR includes additions to PerfMonComps in the context of developing a new, thread-safe Performance Monitoring service.
In the current implementation, we measure CPU and Wall times both at the component level and also as a whole(Initialize - Event Loop - Finalize). Component level monitoring is implemented separately for serial and parallel steps. We have made event loop monitoring optional due to usage of locks which may cause a decrease in the job's performance. A very detailed information about the service can be found in this presentation.
For a better understanding, here is a snippet of service's output:
PerfMonMTSvc =======================================================================================
PerfMonMTSvc Serial Component Level Monitoring
PerfMonMTSvc =======================================================================================
PerfMonMTSvc Step CPU Time [ms] Wall Time [ms] Component
PerfMonMTSvc Initialize 0 1002 AvalancheSchedulerSvc
PerfMonMTSvc Initialize 250 321 AthDictLoaderSvc
PerfMonMTSvc Initialize 30 27 AthMasterSeq
PerfMonMTSvc Initialize 20 25 AthAlgEvtSeq
PerfMonMTSvc Initialize 20 24 AthAlgSeq
PerfMonMTSvc Initialize 20 24 AthAllAlgSeq
...
PerfMonMTSvc =======================================================================================
PerfMonMTSvc Aggregated Event Loop Monitoring
PerfMonMTSvc =======================================================================================
PerfMonMTSvc Step CPU Time [ms] Wall Time [ms] Component
PerfMonMTSvc Execute 9.13 10 xAODMaker::EventInfoCnvAlg
PerfMonMTSvc Execute 3.03 2 HelloWorld
PerfMonMTSvc Execute 2.11 4 BeginIncFiringAlg
PerfMonMTSvc Execute 2.05 2 SGInputLoader
PerfMonMTSvc Execute 1.93 4 IncidentProcAlg1
PerfMonMTSvc Execute 1.54 1 IncidentProcAlg2
PerfMonMTSvc Execute 1.05 0 EndIncFiringAlg
...
PerfMonMTSvc =======================================================================================
PerfMonMTSvc PerfMonMT Results Summary
PerfMonMTSvc =======================================================================================
PerfMonMTSvc Total CPU time in the Initialization is: 380 ms
PerfMonMTSvc Total Wall time in the Initialization is: 472 ms
PerfMonMTSvc
PerfMonMTSvc Total CPU time in the Event Loop is: 120 ms
PerfMonMTSvc Total Wall time in the Event Loop is: 123 ms
PerfMonMTSvc
PerfMonMTSvc Total CPU time in the Finalize is: 0 ms
PerfMonMTSvc Total Wall time in the Finalize is: 61 ms
PerfMonMTSvc
PerfMonMTSvc Number of Events processed: 77
PerfMonMTSvc CPU Usage per Event: 1.56 ms
PerfMonMTSvc Events per second: 0.626016
PerfMonMTSvc =======================================================================================
PerfMonMTSvc System Information
PerfMonMTSvc =======================================================================================
PerfMonMTSvc CPU Model: Intel Core Processor (Broadwell, IBRS)
PerfMonMTSvc Number of Logical Cores: 10
PerfMonMTSvc =======================================================================================