ATLAS Offline Software
DQProcMonitor.py
Go to the documentation of this file.
1 # Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
2 
3 #python 2.6 is buggy, it can't import modules in deamon threads one has to import them in to global
4 from resource import getrusage, RUSAGE_SELF, RUSAGE_CHILDREN
5 from time import sleep, time
6 
7 PROCMONVERSION="$Id: DQProcMonitor.py 359096 2011-04-15 13:25:36Z kama $"
8 
9 def formatRusage(rusage):
10  fieldnames=["utime","stime","maxrss","shrmem","ushrmem","ushrstk","minflt",
11  "majflt","nswap","inblock","oublock","msgsnd","msgrcv",
12  "nsignals","nvcontsw","nivcontsw"]
13  return ", ".join(["=".join([n,"%s"%v] if isinstance(v, int) else [n,"%f"%v]) for n,v in zip(fieldnames,rusage)])
14 
15 def DQProcMon(*args,**kwargs):
16  # from resource import getrusage, RUSAGE_SELF, RUSAGE_CHILDREN
17  # from pprint import pformat,pprint
18  # from time import sleep, time
19  pollPeriod = kwargs.pop("poll_period", 1.0)
20  if pollPeriod < 0.25:
21  pollPeriod=0.25 #min poll time
22  filename = kwargs.pop("file_name","DQResourceUtilization.txt")
23  print("Monitoring thread poll period=",pollPeriod,"seconds, output file name=\"%s\""%filename)
24  with open(filename,'w') as resoutfile:
25  while True:
26  try:
27  ru=getrusage(RUSAGE_SELF)
28  cru=getrusage(RUSAGE_CHILDREN)
29  except Exception:
30  pass
31  #self_info="[utime=%f, stime=%f, maxrss=%s, minflt=%s, majflt=%s, nvcsw=%s, nivcsw=%s]" % (ru.ru_utime,
32  #ru.ru_stime, ru.ru_maxrss, ru.ru_minflt, ru.ru_majflt, ru.ru_)
33  resoutfile.write(str(time())+" <self> "+formatRusage(ru)+" <children> "+formatRusage(cru)+"\n")
34  #pprint(rusage,resoutfile)
35  resoutfile.flush()
36  sleep(pollPeriod)
37 
38 def startProcMonThread(pollPeriod=1,file_name="DQResourceUtilization.txt"):
39  from threading import Thread
40  ResMon=Thread(target=DQProcMon,args=[],kwargs={'poll_period':pollPeriod,
41  'file_name':file_name})
42  #ResMon.setDaemon(True)
43  ResMon.start()
44  print("========Starting DQProcMonThread==============")
45 
python.DQProcMonitor.formatRusage
def formatRusage(rusage)
Definition: DQProcMonitor.py:9
python.DQProcMonitor.startProcMonThread
def startProcMonThread(pollPeriod=1, file_name="DQResourceUtilization.txt")
Definition: DQProcMonitor.py:38
python.DQProcMonitor.DQProcMon
def DQProcMon(*args, **kwargs)
Definition: DQProcMonitor.py:15
print
void print(char *figname, TCanvas *c1)
Definition: TRTCalib_StrawStatusPlots.cxx:25
TCS::join
std::string join(const std::vector< std::string > &v, const char c=',')
Definition: Trigger/TrigT1/L1Topo/L1TopoCommon/Root/StringUtils.cxx:10
Trk::open
@ open
Definition: BinningType.h:40
str
Definition: BTagTrackIpAccessor.cxx:11