Go to the documentation of this file.00001 import sys
00002 class FirstSummary:
00003 def __init__(self):
00004 self.type = ''
00005 self.protocol = ''
00006 self.nevt = 0
00007 self.data={}
00008 self.opt={}
00009 self.step={}
00010 self.stepno={}
00011
00012 class Summary:
00013 def __init__(self):
00014 self.type = ''
00015 self.protocol = ''
00016 self.step = {}
00017
00018 class Step:
00019 def __init__(self):
00020 self.name=''
00021 self.type=''
00022 self.protocol = ''
00023 self.data=''
00024 self.usage=None
00025 self.cpu = 0.
00026 self.events = 0
00027 self.user=0.
00028 self.system=0.
00029 self.ellapsed = 0.
00030
00031 def toString(self):
00032 s1 = '%-8s %-8s %-12s %7d %8.2f %8.2f %8.2f %7.2f '%(self.type,self.protocol,self.name,self.events,self.ellapsed,self.user,self.system,self.cpu)
00033 s2 = '%8.2e %8.2e %8.2e'%(self.ellapsed/self.events,self.user/self.events,self.system/self.events)
00034 return s1+s2
00035
00036 def diff(self,other):
00037 e1 = self.ellapsed/self.events
00038 e2 = other.ellapsed/other.events
00039 e3 = (self.user+self.system)/self.events
00040 e4 = (other.user+other.system)/other.events
00041 s1 = '%8.2e %8.2e'%(e1-e2,e3-e4)
00042 return s1
00043
00044 class Summary:
00045 def __init__(self):
00046 self.step={}
00047
00048 lines=open(sys.argv[1],"r").readlines()
00049 step = None
00050 line = 999
00051
00052 all_summs={}
00053 prot=None
00054 summary=None
00055 for l in lines:
00056 if l.find('Write ')==0:
00057 itm=l.split(' ')
00058 step = 0;
00059 line = 0
00060 summary = FirstSummary()
00061 summary.nevt = int(itm[4])
00062 summary.type = itm[1]
00063 summary.protocol = itm[3]
00064 summary.step[step] = 'Write'
00065 all_summs[summary.protocol]=summary
00066 summary.stepno[summary.step[step]] = step
00067 elif l.find('Read ')==0:
00068 itm=l.split(' ')
00069 if not all_summs.has_key(itm[3]):
00070 summary = FirstSummary()
00071 summary.nevt = int(itm[4])
00072 summary.type = itm[1]
00073 summary.protocol = itm[3]
00074 all_summs[summary.protocol]=summary
00075 step = 2;
00076 line = 0
00077 summary.step[step] = 'Read'
00078 summary.stepno[summary.step[step]] = step
00079 elif l.find('CollWrite')==0:
00080 step = 1;
00081 line = 0
00082 summary.step[step] = 'CollWrite'
00083 summary.stepno[summary.step[step]] = step
00084 elif l.find('CollRead 90')==0:
00085 step = 3;
00086 line = 0
00087 summary.step[step] = 'CollRead 90'
00088 summary.stepno[summary.step[step]] = step
00089 elif l.find('CollRead 50')==0:
00090 step = 4;
00091 line = 0
00092 summary.step[step] = 'CollRead 50'
00093 summary.stepno[summary.step[step]] = step
00094 elif l.find('CollRead 10')==0:
00095 step = 5;
00096 line = 0
00097 summary.step[step] = 'CollRead 10'
00098 summary.stepno[summary.step[step]] = step
00099
00100 if step is not None:
00101 line = line+1
00102 if line==2:
00103 summary.data[step] = l[:-1]
00104 elif line==3:
00105 summary.opt[step] = summary.nevt
00106 if step>1:
00107 summary.opt[step] = int(l[l.find(' #=')+3:-1])
00108
00109
00110 steps = {}
00111 opts = {}
00112 for k in all_summs.keys():
00113 summary = all_summs[k]
00114
00115 for s in summary.data.keys():
00116 opt=''
00117 if summary.opt.has_key(s): opt=summary.opt[s]
00118
00119 steps[s]=summary.step[s]
00120 opts[s]=summary.opt[s]
00121
00122 sum = {}
00123 sum['castor'] = Summary()
00124 sum['file'] = Summary()
00125
00126
00127 for sk in steps.keys():
00128 i = steps[sk]
00129 for k in all_summs.keys():
00130 summary = all_summs[k]
00131
00132 for s in summary.data.keys():
00133 if i==summary.step[s]:
00134 nevt = opts[s]
00135 itms = summary.data[s].split('\t')[0].split(' ')
00136
00137 user = float(itms[0][:-1])
00138 system = float(itms[1][:-1])
00139 cpu = float(itms[3][:-1])
00140 ellapsed = (user+system)/cpu*100.0
00141
00142 s1 = '%-8s %-8s %-12s %8.2f %8.2f %7.2f %4.1f %7d'%(summary.type,summary.protocol,summary.step[s],ellapsed,user,system,cpu,nevt,)
00143 s2 = '%8.2e %8.2e %8.2e'%(ellapsed/nevt,user/nevt,system/nevt)
00144
00145
00146 item = Step()
00147 item.name = summary.step[s]
00148 item.type = summary.type
00149 item.protocol = summary.protocol
00150 item.data = summary.data[s]
00151 item.cpu = cpu
00152 item.events = nevt
00153 item.user=user
00154 item.system=system
00155 item.ellapsed = ellapsed
00156 item.usage = (nevt,cpu,user,system,ellapsed)
00157 sum[summary.protocol].step[summary.stepno[i]] = item
00158
00159 print 132*'-'
00160 file = sum['file']
00161 castor = sum['castor']
00162 for s in file.step.keys():
00163 step_f = file.step[s]
00164 step_c = castor.step[s]
00165 print step_f.toString()
00166 print step_c.toString(),step_c.diff(step_f)
00167