diff --git a/Control/AthenaConfiguration/python/AllConfigFlags.py b/Control/AthenaConfiguration/python/AllConfigFlags.py index a4b9b4cf06bca91c0dd5f3db0c93754b41c4fe1e..e5be898d987fa04e401a946c05a89c91c1d5664a 100644 --- a/Control/AthenaConfiguration/python/AllConfigFlags.py +++ b/Control/AthenaConfiguration/python/AllConfigFlags.py @@ -198,6 +198,11 @@ def _createCfgFlags(): return dqf _addFlagsCategory(acf, "DQ", __dq, 'AthenaMonitoring' ) + def __perfmon(): + from PerfMonComps.PerfMonConfigFlags import createPerfMonConfigFlags + return createPerfMonConfigFlags() + _addFlagsCategory(acf, "PerfMon", __perfmon, 'PerfMonComps') + return acf diff --git a/Control/PerformanceMonitoring/PerfMonComps/python/PerfMonCompsConfig.py b/Control/PerformanceMonitoring/PerfMonComps/python/PerfMonCompsConfig.py new file mode 100644 index 0000000000000000000000000000000000000000..8f41afd32b225f955498a2fc3069139e79572ffd --- /dev/null +++ b/Control/PerformanceMonitoring/PerfMonComps/python/PerfMonCompsConfig.py @@ -0,0 +1,52 @@ +#!/usr/bin/env python + +# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration + +from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator +from AthenaConfiguration.ComponentFactory import CompFactory +from AthenaCommon.Logging import logging + +## A minimal new-style configuration for PerfMonMTSvc +def PerfMonMTSvcCfg(flags, **kwargs): + """ Configuring PerfMonMTSvc """ + + # Get the logger + log = logging.getLogger("PerfMonMTSvcCfg") + log.info("Configuring PerfMonMTSvc with flags:") + log.info(" >> doFastMonMT {}".format(flags.PerfMon.doFastMonMT)) + log.info(" >> doFullMonMT {}".format(flags.PerfMon.doFullMonMT)) + + # Check if basic monitoring is asked for + if not flags.PerfMon.doFastMonMT and not flags.PerfMon.doFullMonMT: + log.info("Nothing to be done...") + return ComponentAccumulator() + + # Hook to PerfMonMTSvc + PerfMonMTSvc = CompFactory.PerfMonMTSvc + + # Set the main properties for the service + import os,psutil + kwargs.setdefault("wallTimeOffset", + psutil.Process(os.getpid()).create_time() * 1000) + kwargs.setdefault("numberOfThreads", + max(1,flags.Concurrency.NumThreads)) + kwargs.setdefault("numberOfSlots", + max(1,flags.Concurrency.NumConcurrentEvents)) + kwargs.setdefault("doComponentLevelMonitoring", + flags.PerfMon.doFullMonMT) + + # Get CA and add the service + acc = ComponentAccumulator() + acc.addService(PerfMonMTSvc(**kwargs), create=True) + + # Enable the auditors that are necessarry for the service + acc.setAppProperty("AuditAlgorithms", True) + acc.setAppProperty("AuditTools", True) + acc.setAppProperty("AuditServices", True) + + # Add the algorithm that is necessary for the service + PerfMonMTAlg = CompFactory.PerfMonMTAlg + acc.addEventAlgo(PerfMonMTAlg(), sequenceName='AthAlgSeq') + + # Return the CA + return acc diff --git a/Control/PerformanceMonitoring/PerfMonComps/python/PerfMonConfigFlags.py b/Control/PerformanceMonitoring/PerfMonComps/python/PerfMonConfigFlags.py new file mode 100644 index 0000000000000000000000000000000000000000..353af4479999516aaa9078ef398d8d691e12bed8 --- /dev/null +++ b/Control/PerformanceMonitoring/PerfMonComps/python/PerfMonConfigFlags.py @@ -0,0 +1,12 @@ +# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration + +from AthenaConfiguration.AthConfigFlags import AthConfigFlags + +def createPerfMonConfigFlags(): + pcf = AthConfigFlags() + + # Two basic flags for PerfMonMT + pcf.addFlag('PerfMon.doFastMonMT', False) + pcf.addFlag('PerfMon.doFullMonMT', False) + + return pcf