Skip to content

Adding baseline code for PerfMonMT GSoC work

This MR adds baseline code that we'll be using for the GSoC 2019 project in SPOT. It essentially entails additions to the PerfMonComps and PerfMonKernel. Now we have a dedicated service PerfMonMTSvc, a dedicated auditor PerfMonMTAuditor, and a new algorithm PerfMonMTAlg.

In the current implementation, we simply keep track of CPU/wall time from "AthRegSeq" "Start" until "AthMasterSeq" "Stop" to capture the event-loop as a first order approximation. Since the incidents are no longer in MT, we trigger the service from the algorithm per event (currently doesn't do anything but a placeholder just in case). The service is also triggered from the auditor. However, all these need to be worked on/polished as we go along.

At any rate, this naive first implementation seems to agree more or less w/ the reported wall-time from the AthenaHiveEventLoopMgr, i.e. for 10k events in 10 threads for HelloWorldOptions.py we get:

AthenaHiveEventLoopMgr                             INFO ---> Loop Finished (seconds): 1.38634
...
PerfMonMTSvc                                       INFO =========================================================
PerfMonMTSvc                                       INFO                 PerfMonMT Results Summary                
PerfMonMTSvc                                       INFO =========================================================
PerfMonMTSvc                                       INFO Total Wall time in the event loop is 1398 ms 
PerfMonMTSvc                                       INFO Total CPU  time in the event loop is 9730 ms 
PerfMonMTSvc                                       INFO Average CPU utilization in the event loop is 6.95994
PerfMonMTSvc                                       INFO =========================================================

I believe this is a good starting point for our student @haozturk. Let me cc @jcatmore.

Edited by Alaettin Serhan Mete

Merge request reports