Deleted Added
sdiff udiff text old ( 1957:895f4795130f ) new ( 1958:144ef1d5315f )
full compact
1#!/usr/bin/env python
2
3# Copyright (c) 2003-2004 The Regents of The University of Michigan
4# All rights reserved.
5#
6# Redistribution and use in source and binary forms, with or without
7# modification, are permitted provided that the following conditions are
8# met: redistributions of source code must retain the above copyright

--- 84 unchanged lines hidden (view full) ---

93 if args[0] == 'clean':
94 if len(args) > 1: raise CommandException
95 mydb.connect()
96 mydb.clean()
97 return
98
99 raise CommandException
100
101 import db
102 source = db.Database()
103 source.host = options.host
104 source.db = options.db
105 source.passwd = options.passwd
106 source.user = options.user
107 source.connect()
108 #source.update_dict(globals())
109
110 if type(options.method) is str:
111 source.method = options.method
112
113 if options.runs is None:
114 runs = source.allRuns
115 else:
116 rx = re.compile(options.runs)
117 runs = []
118 for run in source.allRuns:
119 if rx.match(run.name):
120 runs.append(run)
121
122 if command == 'runs':
123 user = None
124 opts, args = getopts(args, '-u')
125 if len(args):
126 raise CommandException
127 for o,a in opts:
128 if o == '-u':
129 user = a
130 source.listRuns(user)
131 return
132
133 if command == 'stats':
134 if len(args) == 0:
135 source.listStats()
136 elif len(args) == 1:
137 source.listStats(args[0])
138 else:
139 raise CommandException
140
141 return
142
143 if command == 'bins':
144 if len(args) == 0:
145 source.listBins()
146 elif len(args) == 1:
147 source.listBins(args[0])
148 else:
149 raise CommandException
150
151 return
152
153 if command == 'formulas':
154 if len(args) == 0:
155 source.listFormulas()
156 elif len(args) == 1:
157 source.listFormulas(args[0])
158 else:
159 raise CommandException
160
161 return
162
163 if command == 'samples':
164 if len(args):
165 raise CommandException
166
167 source.listTicks(runs)
168 return
169
170 if command == 'stability':
171 if len(args) < 2:
172 raise CommandException
173
174 try:
175 merge = int(args[0])
176 except ValueError:
177 usage()
178 stats = source.getStat(args[1])
179 source.method = 'sum'
180
181 def disp(*args):
182 print "%-35s %12s %12s %4s %5s %5s %5s %10s" % args
183
184 # temporary variable containing a bunch of dashes
185 d = '-' * 100
186
187 #loop through all the stats selected
188 for stat in stats:
189 print "%s:" % stat.name
190 disp("run name", "average", "stdev", ">10%", ">1SDV", ">2SDV",
191 "SAMP", "CV")
192 disp(d[:35], d[:12], d[:12], d[:4], d[:5], d[:5], d[:5], d[:10])
193
194 #loop through all the selected runs
195 for run in runs:
196 runTicks = source.retTicks([ run ])
197 #throw away the first one, it's 0
198 runTicks.pop(0)
199 source.ticks = runTicks
200 avg = 0
201 stdev = 0
202 numoutsideavg = 0
203 numoutside1std = 0
204 numoutside2std = 0
205 pairRunTicks = []
206 if value(stat, run.run) == 1e300*1e300:
207 continue
208 for t in range(0, len(runTicks)-(merge-1), merge):
209 tempPair = []
210 for p in range(0,merge):
211 tempPair.append(runTicks[t+p])
212 pairRunTicks.append(tempPair)
213 #loop through all the various ticks for each run
214 for tick in pairRunTicks:
215 source.ticks = tick
216 avg += value(stat, run.run)
217 avg /= len(pairRunTicks)
218 for tick in pairRunTicks:
219 source.ticks = tick
220 val = value(stat, run.run)
221 stdev += pow((val-avg),2)
222 stdev = math.sqrt(stdev / len(pairRunTicks))
223 for tick in pairRunTicks:
224 source.ticks = tick
225 val = value(stat, run.run)
226 if (val < (avg * .9)) or (val > (avg * 1.1)):
227 numoutsideavg += 1
228 if (val < (avg - stdev)) or (val > (avg + stdev)):
229 numoutside1std += 1
230 if (val < (avg - (2*stdev))) or (val > (avg + (2*stdev))):
231 numoutside2std += 1
232 if avg > 1000:
233 disp(run.name, "%.1f" % avg, "%.1f" % stdev,

--- 22 unchanged lines hidden (view full) ---

256 'pps', 'bpp', 'txbpp', 'rxbpp',
257 'rtp', 'rtb' ]
258 for command in all:
259 commands(options, command, args)
260
261 if options.ticks:
262 if not options.graph:
263 print 'only displaying sample %s' % options.ticks
264 source.ticks = [ int(x) for x in options.ticks.split() ]
265
266 import output
267
268 def display():
269 if options.graph:
270 output.graph(options.graphdir)
271 else:
272 output.display(options.binned, options.printmode)
273
274
275 if command == 'stat' or command == 'formula':
276 if len(args) != 1:
277 raise CommandException
278
279 if command == 'stat':
280 stats = source.getStat(args[0])
281 if command == 'formula':
282 stats = eval(args[0])
283
284 for stat in stats:
285 output = output.StatOutput(stat.name, options.jobfile, source)
286 output.stat = stat
287 output.label = stat.name
288 display()
289
290 return
291
292 if len(args):
293 raise CommandException
294
295 system = source.__dict__[options.system]
296 from info import ProxyGroup
297 sim_ticks = source['sim_ticks']
298 sim_seconds = source['sim_seconds']
299 proxy = ProxyGroup(system = source[options.system])
300 system = proxy.system
301
302 etherdev = system.tsunami.etherdev0
303 bytes = etherdev.rxBytes + etherdev.txBytes
304 kbytes = bytes / 1024
305 packets = etherdev.rxPackets + etherdev.txPackets
306 bps = etherdev.rxBandwidth + etherdev.txBandwidth
307
308 output = output.StatOutput(command, options.jobfile, source)
309
310 if command == 'usertime':
311 import copy
312 user = copy.copy(system.full0.numCycles)
313 user.bins = 'user'
314
315 output.stat = user / system.full0.numCycles
316 output.label = 'User Fraction'

--- 134 unchanged lines hidden (view full) ---

451
452 options = Options()
453 options.host = None
454 options.db = None
455 options.passwd = ''
456 options.user = getpass.getuser()
457 options.runs = None
458 options.system = 'client'
459 options.method = None
460 options.binned = False
461 options.graph = False
462 options.ticks = False
463 options.printmode = 'G'
464 jobfilename = 'Test.py'
465 options.jobfile = None
466 options.all = False
467
468 opts, args = getopts(sys.argv[1:], '-BEFJad:g:h:j:m:pr:s:u:T:')
469 for o,a in opts:
470 if o == '-B':
471 options.binned = True
472 if o == '-E':
473 options.printmode = 'E'
474 if o == '-F':
475 options.printmode = 'F'
476 if o == '-a':
477 options.all = True
478 if o == '-d':
479 options.db = a
480 if o == '-g':
481 options.graph = True;
482 options.graphdir = a
483 if o == '-h':
484 options.host = a
485 if o == '-J':
486 jobfilename = None
487 if o == '-j':
488 jobfilename = a
489 if o == '-m':
490 options.method = a
491 if o == '-p':
492 options.passwd = getpass.getpass()
493 if o == '-r':
494 options.runs = a
495 if o == '-u':
496 options.user = a
497 if o == '-s':
498 options.system = a

--- 26 unchanged lines hidden ---