stats.py revision 1604
11049Sbinkertn@umich.edu#!/usr/bin/env python 21049Sbinkertn@umich.edufrom __future__ import division 31318Ssaidi@eecs.umich.eduimport re, sys, math 41049Sbinkertn@umich.edu 51329Ssaidi@eecs.umich.edu 61049Sbinkertn@umich.edudef usage(): 71049Sbinkertn@umich.edu print '''\ 81049Sbinkertn@umich.eduUsage: %s [-E] [-F] [-d <db> ] [-g <get> ] [-h <host>] [-p] 91331Ssaidi@eecs.umich.edu [-s <system>] [-r <runs> ] [-T <samples>] [-u <username>] 101331Ssaidi@eecs.umich.edu <command> [command args] 111331Ssaidi@eecs.umich.edu 121331Ssaidi@eecs.umich.edu commands extra parameters description 131331Ssaidi@eecs.umich.edu ----------- ------------------ --------------------------------------- 141331Ssaidi@eecs.umich.edu bins [regex] List bins (only matching regex) 151331Ssaidi@eecs.umich.edu formula <formula> Evaluated formula specified 161331Ssaidi@eecs.umich.edu formulas [regex] List formulas (only matching regex) 171331Ssaidi@eecs.umich.edu runs none List all runs in database 181331Ssaidi@eecs.umich.edu samples none List samples present in database 191331Ssaidi@eecs.umich.edu stability <pairnum> <stats> Calculated statistical info about stats 201331Ssaidi@eecs.umich.edu stat <regex> Show stat data (only matching regex) 211331Ssaidi@eecs.umich.edu stats [regex] List all stats (only matching regex) 221596Ssaidi@eecs.umich.edu 231596Ssaidi@eecs.umich.edu database <command> Where command is drop, init, or clean 241596Ssaidi@eecs.umich.edu 251049Sbinkertn@umich.edu''' % sys.argv[0] 261049Sbinkertn@umich.edu sys.exit(1) 271049Sbinkertn@umich.edu 281049Sbinkertn@umich.edudef getopts(list, flags): 291049Sbinkertn@umich.edu import getopt 301049Sbinkertn@umich.edu try: 311049Sbinkertn@umich.edu opts, args = getopt.getopt(list, flags) 321049Sbinkertn@umich.edu except getopt.GetoptError: 331049Sbinkertn@umich.edu usage() 341049Sbinkertn@umich.edu 351049Sbinkertn@umich.edu return opts, args 361049Sbinkertn@umich.edu 371049Sbinkertn@umich.edudef printval(name, value, invert = False): 381049Sbinkertn@umich.edu if invert and value != 0.0: 391049Sbinkertn@umich.edu value = 1 / value 401049Sbinkertn@umich.edu 411049Sbinkertn@umich.edu if value == (1e300*1e300): 421049Sbinkertn@umich.edu return 431049Sbinkertn@umich.edu 441049Sbinkertn@umich.edu if printval.mode == 'G': 451049Sbinkertn@umich.edu print '%s: %g' % (name, value) 461049Sbinkertn@umich.edu elif printval.mode != 'F' and value > 1e6: 471049Sbinkertn@umich.edu print '%s: %0.5e' % (name, value) 481049Sbinkertn@umich.edu else: 491049Sbinkertn@umich.edu print '%s: %f' % (name, value) 501049Sbinkertn@umich.edu 511049Sbinkertn@umich.eduprintval.mode = 'G' 521049Sbinkertn@umich.edu 531049Sbinkertn@umich.edudef unique(list): 541049Sbinkertn@umich.edu set = {} 551049Sbinkertn@umich.edu map(set.__setitem__, list, []) 561049Sbinkertn@umich.edu return set.keys() 571049Sbinkertn@umich.edu 581307Sbinkertn@umich.edudef graphdata68(runs, options, tag, label, value): 591307Sbinkertn@umich.edu import info 601307Sbinkertn@umich.edu configs = ['ste', 'hte', 'htd', 'ocm', 'occ', 'ocp' ] 611307Sbinkertn@umich.edu benchmarks = [ 'm', 's', 'snt', 'nb1', 'w1', 'w2', 'w3', 'w4', 'nm', 'ns', 'nw1', 'nw2', 'nw3' ] 621307Sbinkertn@umich.edu dmas = [ 'x' ] 631307Sbinkertn@umich.edu caches = [ '2', '4' ] 641307Sbinkertn@umich.edu 651307Sbinkertn@umich.edu names = [] 661307Sbinkertn@umich.edu 671307Sbinkertn@umich.edu bench_system = { 681307Sbinkertn@umich.edu 'm' : 'client', 691307Sbinkertn@umich.edu 's' : 'client', 701307Sbinkertn@umich.edu 'snt' : 'client', 711307Sbinkertn@umich.edu 'nb1' : 'server', 721307Sbinkertn@umich.edu 'nb2' : 'server', 731307Sbinkertn@umich.edu 'nt1' : 'server', 741307Sbinkertn@umich.edu 'nt2' : 'server', 751307Sbinkertn@umich.edu 'w1' : 'server', 761307Sbinkertn@umich.edu 'w2' : 'server', 771307Sbinkertn@umich.edu 'w3' : 'server', 781307Sbinkertn@umich.edu 'w4' : 'server', 791307Sbinkertn@umich.edu 'w1s' : 'server', 801307Sbinkertn@umich.edu 'w2s' : 'server', 811307Sbinkertn@umich.edu 'w3s' : 'server', 821307Sbinkertn@umich.edu 'ns' : 'natbox', 831307Sbinkertn@umich.edu 'nm' : 'natbox', 841307Sbinkertn@umich.edu 'nw1' : 'natbox', 851307Sbinkertn@umich.edu 'nw2' : 'natbox', 861307Sbinkertn@umich.edu 'nw3' : 'natbox' 871307Sbinkertn@umich.edu } 881307Sbinkertn@umich.edu 891307Sbinkertn@umich.edu for bench in benchmarks: 901307Sbinkertn@umich.edu if bench_system[bench] != options.system: 911307Sbinkertn@umich.edu continue 921307Sbinkertn@umich.edu 931307Sbinkertn@umich.edu for dma in dmas: 941307Sbinkertn@umich.edu for cache in caches: 951307Sbinkertn@umich.edu names.append([bench, dma, cache]) 961307Sbinkertn@umich.edu 971307Sbinkertn@umich.edu for bench,dma,cache in names: 981307Sbinkertn@umich.edu base = '%s.%s.%s' % (bench, dma, cache) 991307Sbinkertn@umich.edu fname = 'data/%s.%s.68.dat' % (tag, base) 1001307Sbinkertn@umich.edu f = open(fname, 'w') 1011307Sbinkertn@umich.edu print >>f, '#set TITLE = ' 1021307Sbinkertn@umich.edu print >>f, '#set ylbl = %s' % label 1031307Sbinkertn@umich.edu #print >>f, '#set sublabels = %s' % ' '.join(configs) 1041307Sbinkertn@umich.edu print >>f, '#set sublabels = ste hte htd ocm occ ocs' 1051307Sbinkertn@umich.edu 1061604Srdreslin@umich.edu for speed,freq in zip(['s', 'm', 'f', 'q'],['4GHz', '6GHz','8GHz', '10GHz']): 1071307Sbinkertn@umich.edu print >>f, '"%s"' % freq, 1081307Sbinkertn@umich.edu for conf in configs: 1091307Sbinkertn@umich.edu name = '%s.%s.%s.%s.%s' % (conf, bench, dma, cache, speed) 1101307Sbinkertn@umich.edu run = info.source.allRunNames[name] 1111307Sbinkertn@umich.edu info.display_run = run.run; 1121307Sbinkertn@umich.edu val = float(value) 1131307Sbinkertn@umich.edu if val == 1e300*1e300: 1141307Sbinkertn@umich.edu print >>f, 0.0, 1151307Sbinkertn@umich.edu else: 1161307Sbinkertn@umich.edu print >>f, "%f" % val, 1171307Sbinkertn@umich.edu print >>f 1181307Sbinkertn@umich.edu f.close() 1191307Sbinkertn@umich.edu 1201269Sbinkertn@umich.edudef graphdata(runs, options, tag, label, value): 1211307Sbinkertn@umich.edu if options.graph68: 1221307Sbinkertn@umich.edu graphdata68(runs, options, tag, label, value) 1231307Sbinkertn@umich.edu return 1241307Sbinkertn@umich.edu 1251049Sbinkertn@umich.edu import info 1261269Sbinkertn@umich.edu configs = ['ste', 'hte', 'htd', 'ocm', 'occ', 'ocp' ] 1271269Sbinkertn@umich.edu #benchmarks = [ 'm', 's', 'nb1', 'nb2', 'nt1', 'nt2', 'w1', 'w2', 'w3', 'w4', 'ns', 'nm', 'nw1', 'nw2', 'nw3' ] 1281269Sbinkertn@umich.edu #benchmarks = [ 'm', 's', 'nb1', 'nb2', 'nt1', 'w1', 'w2', 'w3', 'ns', 'nm', 'w1s' ] 1291269Sbinkertn@umich.edu benchmarks = [ 'm', 's', 'nb1', 'nb2', 'w1', 'w2', 'w3', 'w4', 'ns', 'nm', 'nw1', 'snt' ] 1301269Sbinkertn@umich.edu #dmas = [ 'x', 'd', 'b' ] 1311269Sbinkertn@umich.edu dmas = [ 'x' ] 1321162Sbinkertn@umich.edu caches = [ '2', '4' ] 1331049Sbinkertn@umich.edu 1341049Sbinkertn@umich.edu names = [] 1351269Sbinkertn@umich.edu 1361269Sbinkertn@umich.edu bench_system = { 1371269Sbinkertn@umich.edu 'm' : 'client', 1381269Sbinkertn@umich.edu 's' : 'client', 1391269Sbinkertn@umich.edu 'snt' : 'client', 1401269Sbinkertn@umich.edu 'nb1' : 'server', 1411269Sbinkertn@umich.edu 'nb2' : 'server', 1421269Sbinkertn@umich.edu 'nt1' : 'server', 1431269Sbinkertn@umich.edu 'nt2' : 'server', 1441269Sbinkertn@umich.edu 'w1' : 'server', 1451269Sbinkertn@umich.edu 'w2' : 'server', 1461269Sbinkertn@umich.edu 'w3' : 'server', 1471269Sbinkertn@umich.edu 'w4' : 'server', 1481269Sbinkertn@umich.edu 'w1s' : 'server', 1491269Sbinkertn@umich.edu 'w2s' : 'server', 1501269Sbinkertn@umich.edu 'w3s' : 'server', 1511269Sbinkertn@umich.edu 'ns' : 'natbox', 1521269Sbinkertn@umich.edu 'nm' : 'natbox', 1531269Sbinkertn@umich.edu 'nw1' : 'natbox', 1541269Sbinkertn@umich.edu 'nw2' : 'natbox', 1551269Sbinkertn@umich.edu 'nw3' : 'natbox' 1561269Sbinkertn@umich.edu } 1571269Sbinkertn@umich.edu 1581049Sbinkertn@umich.edu for bench in benchmarks: 1591269Sbinkertn@umich.edu if bench_system[bench] != options.system: 1601269Sbinkertn@umich.edu continue 1611269Sbinkertn@umich.edu 1621049Sbinkertn@umich.edu for dma in dmas: 1631049Sbinkertn@umich.edu for cache in caches: 1641269Sbinkertn@umich.edu names.append([bench, dma, cache]) 1651049Sbinkertn@umich.edu 1661269Sbinkertn@umich.edu for bench,dma,cache in names: 1671269Sbinkertn@umich.edu base = '%s.%s.%s' % (bench, dma, cache) 1681165Sbinkertn@umich.edu fname = 'data/%s.%s.dat' % (tag, base) 1691049Sbinkertn@umich.edu f = open(fname, 'w') 1701307Sbinkertn@umich.edu print >>f, '#set TITLE = ' 1711049Sbinkertn@umich.edu print >>f, '#set ylbl = %s' % label 1721307Sbinkertn@umich.edu #print >>f, '#set sublabels = %s' % ' '.join(configs) 1731307Sbinkertn@umich.edu print >>f, '#set sublabels = ste hte htd ocm occ ocs' 1741049Sbinkertn@umich.edu 1751049Sbinkertn@umich.edu for speed,freq in zip(['s', 'q'],['4GHz','10GHz']): 1761049Sbinkertn@umich.edu print >>f, '"%s"' % freq, 1771049Sbinkertn@umich.edu for conf in configs: 1781269Sbinkertn@umich.edu name = '%s.%s.%s.%s.%s' % (conf, bench, dma, cache, speed) 1791049Sbinkertn@umich.edu run = info.source.allRunNames[name] 1801049Sbinkertn@umich.edu info.display_run = run.run; 1811049Sbinkertn@umich.edu val = float(value) 1821049Sbinkertn@umich.edu if val == 1e300*1e300: 1831049Sbinkertn@umich.edu print >>f, 0.0, 1841049Sbinkertn@umich.edu else: 1851049Sbinkertn@umich.edu print >>f, "%f" % val, 1861049Sbinkertn@umich.edu print >>f 1871049Sbinkertn@umich.edu f.close() 1881049Sbinkertn@umich.edu 1891049Sbinkertn@umich.edudef printdata(runs, value, invert = False): 1901049Sbinkertn@umich.edu import info 1911049Sbinkertn@umich.edu for run in runs: 1921049Sbinkertn@umich.edu info.display_run = run.run; 1931049Sbinkertn@umich.edu val = float(value) 1941049Sbinkertn@umich.edu printval(run.name, val) 1951049Sbinkertn@umich.edu 1961049Sbinkertn@umich.educlass CommandException(Exception): 1971049Sbinkertn@umich.edu pass 1981049Sbinkertn@umich.edu 1991049Sbinkertn@umich.edudef commands(options, command, args): 2001049Sbinkertn@umich.edu if command == 'database': 2011049Sbinkertn@umich.edu if len(args) == 0: raise CommandException 2021049Sbinkertn@umich.edu 2031049Sbinkertn@umich.edu import dbinit 2041049Sbinkertn@umich.edu mydb = dbinit.MyDB(options) 2051049Sbinkertn@umich.edu 2061049Sbinkertn@umich.edu if args[0] == 'drop': 2071049Sbinkertn@umich.edu if len(args) > 2: raise CommandException 2081049Sbinkertn@umich.edu mydb.admin() 2091049Sbinkertn@umich.edu mydb.drop() 2101049Sbinkertn@umich.edu if len(args) == 2 and args[1] == 'init': 2111049Sbinkertn@umich.edu mydb.create() 2121049Sbinkertn@umich.edu mydb.connect() 2131049Sbinkertn@umich.edu mydb.populate() 2141049Sbinkertn@umich.edu mydb.close() 2151049Sbinkertn@umich.edu return 2161049Sbinkertn@umich.edu 2171049Sbinkertn@umich.edu if args[0] == 'init': 2181049Sbinkertn@umich.edu if len(args) > 1: raise CommandException 2191049Sbinkertn@umich.edu mydb.admin() 2201049Sbinkertn@umich.edu mydb.create() 2211049Sbinkertn@umich.edu mydb.connect() 2221049Sbinkertn@umich.edu mydb.populate() 2231049Sbinkertn@umich.edu mydb.close() 2241049Sbinkertn@umich.edu return 2251049Sbinkertn@umich.edu 2261049Sbinkertn@umich.edu if args[0] == 'clean': 2271049Sbinkertn@umich.edu if len(args) > 1: raise CommandException 2281049Sbinkertn@umich.edu mydb.connect() 2291049Sbinkertn@umich.edu mydb.clean() 2301049Sbinkertn@umich.edu return 2311049Sbinkertn@umich.edu 2321049Sbinkertn@umich.edu raise CommandException 2331049Sbinkertn@umich.edu 2341049Sbinkertn@umich.edu import db, info 2351049Sbinkertn@umich.edu info.source = db.Database() 2361049Sbinkertn@umich.edu info.source.host = options.host 2371049Sbinkertn@umich.edu info.source.db = options.db 2381049Sbinkertn@umich.edu info.source.passwd = options.passwd 2391049Sbinkertn@umich.edu info.source.user = options.user 2401049Sbinkertn@umich.edu info.source.connect() 2411049Sbinkertn@umich.edu info.source.update_dict(globals()) 2421049Sbinkertn@umich.edu 2431049Sbinkertn@umich.edu if type(options.get) is str: 2441049Sbinkertn@umich.edu info.source.get = options.get 2451049Sbinkertn@umich.edu 2461049Sbinkertn@umich.edu if options.runs is None: 2471049Sbinkertn@umich.edu runs = info.source.allRuns 2481049Sbinkertn@umich.edu else: 2491049Sbinkertn@umich.edu rx = re.compile(options.runs) 2501049Sbinkertn@umich.edu runs = [] 2511049Sbinkertn@umich.edu for run in info.source.allRuns: 2521049Sbinkertn@umich.edu if rx.match(run.name): 2531049Sbinkertn@umich.edu runs.append(run) 2541049Sbinkertn@umich.edu 2551049Sbinkertn@umich.edu info.display_run = runs[0].run 2561049Sbinkertn@umich.edu 2571049Sbinkertn@umich.edu if command == 'runs': 2581049Sbinkertn@umich.edu user = None 2591049Sbinkertn@umich.edu opts, args = getopts(args, '-u') 2601049Sbinkertn@umich.edu if len(args): 2611049Sbinkertn@umich.edu raise CommandException 2621049Sbinkertn@umich.edu for o,a in opts: 2631049Sbinkertn@umich.edu if o == '-u': 2641049Sbinkertn@umich.edu user = a 2651049Sbinkertn@umich.edu info.source.listRuns(user) 2661049Sbinkertn@umich.edu return 2671049Sbinkertn@umich.edu 2681309Ssaidi@eecs.umich.edu if command == 'stability': 2691331Ssaidi@eecs.umich.edu if len(args) < 2: 2701331Ssaidi@eecs.umich.edu raise CommandException 2711331Ssaidi@eecs.umich.edu 2721331Ssaidi@eecs.umich.edu try: 2731331Ssaidi@eecs.umich.edu merge = int(args[0]) 2741331Ssaidi@eecs.umich.edu except ValueError: 2751331Ssaidi@eecs.umich.edu usage() 2761331Ssaidi@eecs.umich.edu stats = info.source.getStat(args[1]) 2771331Ssaidi@eecs.umich.edu info.source.get = "sum" 2781331Ssaidi@eecs.umich.edu 2791309Ssaidi@eecs.umich.edu 2801309Ssaidi@eecs.umich.edu #loop through all the stats selected 2811309Ssaidi@eecs.umich.edu for stat in stats: 2821309Ssaidi@eecs.umich.edu 2831317Ssaidi@eecs.umich.edu print "%s:" % stat.name 2841331Ssaidi@eecs.umich.edu print "%-20s %12s %12s %4s %5s %5s %5s %10s" % \ 2851329Ssaidi@eecs.umich.edu ("run name", "average", "stdev", ">10%", ">1SDV", ">2SDV", "SAMP", "CV") 2861331Ssaidi@eecs.umich.edu print "%-20s %12s %12s %4s %5s %5s %5s %10s" % \ 2871329Ssaidi@eecs.umich.edu ("--------------------", "------------", 2881331Ssaidi@eecs.umich.edu "------------", "----", "-----", "-----", "-----", "----------") 2891309Ssaidi@eecs.umich.edu #loop through all the selected runs 2901309Ssaidi@eecs.umich.edu for run in runs: 2911309Ssaidi@eecs.umich.edu info.display_run = run.run; 2921309Ssaidi@eecs.umich.edu runTicks = info.source.retTicks([ run ]) 2931309Ssaidi@eecs.umich.edu #throw away the first one, it's 0 2941309Ssaidi@eecs.umich.edu runTicks.pop(0) 2951329Ssaidi@eecs.umich.edu info.globalTicks = runTicks 2961331Ssaidi@eecs.umich.edu avg = 0 2971317Ssaidi@eecs.umich.edu stdev = 0 2981317Ssaidi@eecs.umich.edu numoutsideavg = 0 2991318Ssaidi@eecs.umich.edu numoutside1std = 0 3001318Ssaidi@eecs.umich.edu numoutside2std = 0 3011331Ssaidi@eecs.umich.edu pairRunTicks = [] 3021331Ssaidi@eecs.umich.edu if float(stat) == 1e300*1e300: 3031331Ssaidi@eecs.umich.edu continue 3041331Ssaidi@eecs.umich.edu for t in range(0, len(runTicks)-(merge-1), merge): 3051331Ssaidi@eecs.umich.edu tempPair = [] 3061331Ssaidi@eecs.umich.edu for p in range(0,merge): 3071331Ssaidi@eecs.umich.edu tempPair.append(runTicks[t+p]) 3081331Ssaidi@eecs.umich.edu pairRunTicks.append(tempPair) 3091309Ssaidi@eecs.umich.edu #loop through all the various ticks for each run 3101331Ssaidi@eecs.umich.edu for tick in pairRunTicks: 3111331Ssaidi@eecs.umich.edu info.globalTicks = tick 3121331Ssaidi@eecs.umich.edu avg += float(stat) 3131331Ssaidi@eecs.umich.edu avg /= len(pairRunTicks) 3141331Ssaidi@eecs.umich.edu for tick in pairRunTicks: 3151331Ssaidi@eecs.umich.edu info.globalTicks = tick 3161331Ssaidi@eecs.umich.edu val = float(stat) 3171331Ssaidi@eecs.umich.edu stdev += pow((val-avg),2) 3181331Ssaidi@eecs.umich.edu stdev = math.sqrt(stdev / len(pairRunTicks)) 3191331Ssaidi@eecs.umich.edu for tick in pairRunTicks: 3201331Ssaidi@eecs.umich.edu info.globalTicks = tick 3211309Ssaidi@eecs.umich.edu val = float(stat) 3221309Ssaidi@eecs.umich.edu if (val < (avg * .9)) or (val > (avg * 1.1)): 3231317Ssaidi@eecs.umich.edu numoutsideavg += 1 3241317Ssaidi@eecs.umich.edu if (val < (avg - stdev)) or (val > (avg + stdev)): 3251318Ssaidi@eecs.umich.edu numoutside1std += 1 3261318Ssaidi@eecs.umich.edu if (val < (avg - (2*stdev))) or (val > (avg + (2*stdev))): 3271318Ssaidi@eecs.umich.edu numoutside2std += 1 3281331Ssaidi@eecs.umich.edu if avg > 1000: 3291331Ssaidi@eecs.umich.edu print "%-20s %12s %12s %4s %5s %5s %5s %10s" % \ 3301331Ssaidi@eecs.umich.edu (run.name, "%.1f" % avg, "%.1f" % stdev, 3311331Ssaidi@eecs.umich.edu "%d" % numoutsideavg, "%d" % numoutside1std, 3321331Ssaidi@eecs.umich.edu "%d" % numoutside2std, "%d" % len(pairRunTicks), 3331331Ssaidi@eecs.umich.edu "%.3f" % (stdev/avg*100)) 3341331Ssaidi@eecs.umich.edu elif avg > 100: 3351331Ssaidi@eecs.umich.edu print "%-20s %12s %12s %4s %5s %5s %5s %10s" % \ 3361331Ssaidi@eecs.umich.edu (run.name, "%.1f" % avg, "%.1f" % stdev, 3371331Ssaidi@eecs.umich.edu "%d" % numoutsideavg, "%d" % numoutside1std, 3381331Ssaidi@eecs.umich.edu "%d" % numoutside2std, "%d" % len(pairRunTicks), 3391331Ssaidi@eecs.umich.edu "%.5f" % (stdev/avg*100)) 3401331Ssaidi@eecs.umich.edu else: 3411331Ssaidi@eecs.umich.edu print "%-20s %12s %12s %4s %5s %5s %5s %10s" % \ 3421331Ssaidi@eecs.umich.edu (run.name, "%.5f" % avg, "%.5f" % stdev, 3431331Ssaidi@eecs.umich.edu "%d" % numoutsideavg, "%d" % numoutside1std, 3441331Ssaidi@eecs.umich.edu "%d" % numoutside2std, "%d" % len(pairRunTicks), 3451331Ssaidi@eecs.umich.edu "%.7f" % (stdev/avg*100)) 3461309Ssaidi@eecs.umich.edu return 3471309Ssaidi@eecs.umich.edu 3481049Sbinkertn@umich.edu if command == 'stats': 3491049Sbinkertn@umich.edu if len(args) == 0: 3501049Sbinkertn@umich.edu info.source.listStats() 3511049Sbinkertn@umich.edu elif len(args) == 1: 3521049Sbinkertn@umich.edu info.source.listStats(args[0]) 3531049Sbinkertn@umich.edu else: 3541049Sbinkertn@umich.edu raise CommandException 3551049Sbinkertn@umich.edu 3561049Sbinkertn@umich.edu return 3571049Sbinkertn@umich.edu 3581049Sbinkertn@umich.edu if command == 'stat': 3591049Sbinkertn@umich.edu if len(args) != 1: 3601049Sbinkertn@umich.edu raise CommandException 3611049Sbinkertn@umich.edu 3621049Sbinkertn@umich.edu stats = info.source.getStat(args[0]) 3631049Sbinkertn@umich.edu for stat in stats: 3641076Sbinkertn@umich.edu if options.graph: 3651269Sbinkertn@umich.edu graphdata(runs, options, stat.name, stat.name, stat) 3661049Sbinkertn@umich.edu else: 3671301Ssaidi@eecs.umich.edu if options.ticks: 3681301Ssaidi@eecs.umich.edu print 'only displaying sample %s' % options.ticks 3691329Ssaidi@eecs.umich.edu info.globalTicks = [ int(x) for x in options.ticks.split() ] 3701301Ssaidi@eecs.umich.edu 3711165Sbinkertn@umich.edu if options.binned: 3721165Sbinkertn@umich.edu print 'kernel ticks' 3731165Sbinkertn@umich.edu stat.bins = 'kernel' 3741165Sbinkertn@umich.edu printdata(runs, stat) 3751165Sbinkertn@umich.edu 3761165Sbinkertn@umich.edu print 'idle ticks' 3771165Sbinkertn@umich.edu stat.bins = 'idle' 3781165Sbinkertn@umich.edu printdata(runs, stat) 3791165Sbinkertn@umich.edu 3801165Sbinkertn@umich.edu print 'user ticks' 3811165Sbinkertn@umich.edu stat.bins = 'user' 3821165Sbinkertn@umich.edu printdata(runs, stat) 3831165Sbinkertn@umich.edu 3841165Sbinkertn@umich.edu print 'interrupt ticks' 3851301Ssaidi@eecs.umich.edu stat.bins = 'interrupt' 3861165Sbinkertn@umich.edu printdata(runs, stat) 3871165Sbinkertn@umich.edu 3881165Sbinkertn@umich.edu print 'total ticks' 3891165Sbinkertn@umich.edu 3901165Sbinkertn@umich.edu stat.bins = None 3911049Sbinkertn@umich.edu print stat.name 3921049Sbinkertn@umich.edu printdata(runs, stat) 3931049Sbinkertn@umich.edu return 3941049Sbinkertn@umich.edu 3951269Sbinkertn@umich.edu if command == 'formula': 3961269Sbinkertn@umich.edu if len(args) != 1: 3971269Sbinkertn@umich.edu raise CommandException 3981269Sbinkertn@umich.edu 3991269Sbinkertn@umich.edu stats = eval(args[0]) 4001269Sbinkertn@umich.edu for stat in stats: 4011269Sbinkertn@umich.edu if options.graph: 4021269Sbinkertn@umich.edu graphdata(runs, options, stat.name, stat.name, stat) 4031269Sbinkertn@umich.edu else: 4041269Sbinkertn@umich.edu if options.binned: 4051269Sbinkertn@umich.edu print 'kernel ticks' 4061269Sbinkertn@umich.edu stat.bins = 'kernel' 4071269Sbinkertn@umich.edu printdata(runs, stat) 4081269Sbinkertn@umich.edu 4091269Sbinkertn@umich.edu print 'idle ticks' 4101269Sbinkertn@umich.edu stat.bins = 'idle' 4111269Sbinkertn@umich.edu printdata(runs, stat) 4121269Sbinkertn@umich.edu 4131269Sbinkertn@umich.edu print 'user ticks' 4141269Sbinkertn@umich.edu stat.bins = 'user' 4151269Sbinkertn@umich.edu printdata(runs, stat) 4161269Sbinkertn@umich.edu 4171269Sbinkertn@umich.edu print 'interrupt ticks' 4181301Ssaidi@eecs.umich.edu stat.bins = 'interrupt' 4191269Sbinkertn@umich.edu printdata(runs, stat) 4201269Sbinkertn@umich.edu 4211269Sbinkertn@umich.edu print 'total ticks' 4221269Sbinkertn@umich.edu 4231269Sbinkertn@umich.edu stat.bins = None 4241269Sbinkertn@umich.edu print args[0] 4251269Sbinkertn@umich.edu printdata(runs, stat) 4261269Sbinkertn@umich.edu return 4271269Sbinkertn@umich.edu 4281049Sbinkertn@umich.edu if command == 'bins': 4291049Sbinkertn@umich.edu if len(args) == 0: 4301049Sbinkertn@umich.edu info.source.listBins() 4311049Sbinkertn@umich.edu elif len(args) == 1: 4321049Sbinkertn@umich.edu info.source.listBins(args[0]) 4331049Sbinkertn@umich.edu else: 4341049Sbinkertn@umich.edu raise CommandException 4351049Sbinkertn@umich.edu 4361049Sbinkertn@umich.edu return 4371049Sbinkertn@umich.edu 4381049Sbinkertn@umich.edu if command == 'formulas': 4391049Sbinkertn@umich.edu if len(args) == 0: 4401049Sbinkertn@umich.edu info.source.listFormulas() 4411049Sbinkertn@umich.edu elif len(args) == 1: 4421049Sbinkertn@umich.edu info.source.listFormulas(args[0]) 4431049Sbinkertn@umich.edu else: 4441049Sbinkertn@umich.edu raise CommandException 4451049Sbinkertn@umich.edu 4461049Sbinkertn@umich.edu return 4471049Sbinkertn@umich.edu 4481049Sbinkertn@umich.edu if command == 'samples': 4491049Sbinkertn@umich.edu if len(args): 4501049Sbinkertn@umich.edu raise CommandException 4511049Sbinkertn@umich.edu 4521049Sbinkertn@umich.edu info.source.listTicks(runs) 4531049Sbinkertn@umich.edu return 4541049Sbinkertn@umich.edu 4551049Sbinkertn@umich.edu if len(args): 4561049Sbinkertn@umich.edu raise CommandException 4571049Sbinkertn@umich.edu 4581209Sbinkertn@umich.edu system = info.source.__dict__[options.system] 4591209Sbinkertn@umich.edu 4601049Sbinkertn@umich.edu if command == 'usertime': 4611049Sbinkertn@umich.edu import copy 4621604Srdreslin@umich.edu kernel = copy.copy(system.full0.numCycles) 4631049Sbinkertn@umich.edu kernel.bins = 'kernel' 4641049Sbinkertn@umich.edu 4651604Srdreslin@umich.edu user = copy.copy(system.full0.numCycles) 4661049Sbinkertn@umich.edu user.bins = 'user' 4671049Sbinkertn@umich.edu 4681076Sbinkertn@umich.edu if options.graph: 4691269Sbinkertn@umich.edu graphdata(runs, options, 'usertime', 'User Fraction', 4701604Srdreslin@umich.edu user / system.full0.numCycles) 4711049Sbinkertn@umich.edu else: 4721604Srdreslin@umich.edu printdata(runs, user / system.full0.numCycles) 4731049Sbinkertn@umich.edu return 4741049Sbinkertn@umich.edu 4751049Sbinkertn@umich.edu if command == 'ticks': 4761076Sbinkertn@umich.edu if options.binned: 4771049Sbinkertn@umich.edu print 'kernel ticks' 4781604Srdreslin@umich.edu system.full0.numCycles.bins = 'kernel' 4791604Srdreslin@umich.edu printdata(runs, system.full0.numCycles) 4801049Sbinkertn@umich.edu 4811049Sbinkertn@umich.edu print 'idle ticks' 4821604Srdreslin@umich.edu system.full0.numCycles.bins = 'idle' 4831604Srdreslin@umich.edu printdata(runs, system.full0.numCycles) 4841049Sbinkertn@umich.edu 4851049Sbinkertn@umich.edu print 'user ticks' 4861604Srdreslin@umich.edu system.full0.numCycles.bins = 'user' 4871604Srdreslin@umich.edu printdata(runs, system.full0.numCycles) 4881049Sbinkertn@umich.edu 4891049Sbinkertn@umich.edu print 'total ticks' 4901049Sbinkertn@umich.edu 4911604Srdreslin@umich.edu system.full0.numCycles.bins = None 4921604Srdreslin@umich.edu printdata(runs, system.full0.numCycles) 4931049Sbinkertn@umich.edu return 4941049Sbinkertn@umich.edu 4951049Sbinkertn@umich.edu if command == 'packets': 4961604Srdreslin@umich.edu packets = system.tsunami.etherdev0.rxPackets 4971076Sbinkertn@umich.edu if options.graph: 4981269Sbinkertn@umich.edu graphdata(runs, options, 'packets', 'Packets', packets) 4991049Sbinkertn@umich.edu else: 5001049Sbinkertn@umich.edu printdata(runs, packets) 5011049Sbinkertn@umich.edu return 5021049Sbinkertn@umich.edu 5031049Sbinkertn@umich.edu if command == 'ppt' or command == 'tpp': 5041604Srdreslin@umich.edu ppt = system.tsunami.etherdev0.rxPackets / sim_ticks 5051049Sbinkertn@umich.edu printdata(runs, ppt, command == 'tpp') 5061049Sbinkertn@umich.edu return 5071049Sbinkertn@umich.edu 5081049Sbinkertn@umich.edu if command == 'pps': 5091604Srdreslin@umich.edu pps = system.tsunami.etherdev0.rxPackets / sim_seconds 5101076Sbinkertn@umich.edu if options.graph: 5111269Sbinkertn@umich.edu graphdata(runs, options, 'pps', 'Packets/s', pps) 5121049Sbinkertn@umich.edu else: 5131049Sbinkertn@umich.edu printdata(runs, pps) 5141049Sbinkertn@umich.edu return 5151049Sbinkertn@umich.edu 5161049Sbinkertn@umich.edu if command == 'bpt' or command == 'tpb': 5171604Srdreslin@umich.edu bytes = system.tsunami.etherdev0.rxBytes + system.tsunami.etherdev0.txBytes 5181049Sbinkertn@umich.edu bpt = bytes / sim_ticks * 8 5191076Sbinkertn@umich.edu if options.graph: 5201269Sbinkertn@umich.edu graphdata(runs, options, 'bpt', 'bps / Hz', bpt) 5211049Sbinkertn@umich.edu else: 5221049Sbinkertn@umich.edu printdata(runs, bpt, command == 'tpb') 5231049Sbinkertn@umich.edu return 5241049Sbinkertn@umich.edu 5251049Sbinkertn@umich.edu if command == 'bptb' or command == 'tpbb': 5261604Srdreslin@umich.edu bytes = system.tsunami.etherdev0.rxBytes + system.tsunami.etherdev0.txBytes 5271049Sbinkertn@umich.edu 5281049Sbinkertn@umich.edu print 'kernel stats' 5291049Sbinkertn@umich.edu bytes.bins = 'kernel' 5301049Sbinkertn@umich.edu printdata(runs, bytes / ticks) 5311049Sbinkertn@umich.edu 5321049Sbinkertn@umich.edu print 'idle stats' 5331049Sbinkertn@umich.edu bytes.bins = 'idle' 5341049Sbinkertn@umich.edu printdata(runs, bytes / ticks) 5351049Sbinkertn@umich.edu 5361049Sbinkertn@umich.edu print 'user stats' 5371049Sbinkertn@umich.edu bytes.bins = 'user' 5381049Sbinkertn@umich.edu printdata(runs, bytes / ticks) 5391049Sbinkertn@umich.edu 5401049Sbinkertn@umich.edu return 5411049Sbinkertn@umich.edu 5421049Sbinkertn@umich.edu if command == 'bytes': 5431604Srdreslin@umich.edu stat = system.tsunami.etherdev0.rxBytes + system.tsunami.etherdev0.txBytes 5441049Sbinkertn@umich.edu 5451076Sbinkertn@umich.edu if options.binned: 5461049Sbinkertn@umich.edu print '%s kernel stats' % stat.name 5471049Sbinkertn@umich.edu stat.bins = 'kernel' 5481049Sbinkertn@umich.edu printdata(runs, stat) 5491049Sbinkertn@umich.edu 5501049Sbinkertn@umich.edu print '%s idle stats' % stat.name 5511049Sbinkertn@umich.edu stat.bins = 'idle' 5521049Sbinkertn@umich.edu printdata(runs, stat) 5531049Sbinkertn@umich.edu 5541049Sbinkertn@umich.edu print '%s user stats' % stat.name 5551049Sbinkertn@umich.edu stat.bins = 'user' 5561049Sbinkertn@umich.edu printdata(runs, stat) 5571049Sbinkertn@umich.edu 5581049Sbinkertn@umich.edu print '%s total stats' % stat.name 5591049Sbinkertn@umich.edu stat.bins = None 5601049Sbinkertn@umich.edu 5611049Sbinkertn@umich.edu printdata(runs, stat) 5621049Sbinkertn@umich.edu return 5631049Sbinkertn@umich.edu 5641049Sbinkertn@umich.edu if command == 'rxbps': 5651604Srdreslin@umich.edu gbps = system.tsunami.etherdev0.rxBandwidth / 1e9 5661076Sbinkertn@umich.edu if options.graph: 5671269Sbinkertn@umich.edu graphdata(runs, options, 'rxbps', 'Bandwidth (Gbps)', gbps) 5681049Sbinkertn@umich.edu else: 5691049Sbinkertn@umich.edu printdata(runs, gbps) 5701049Sbinkertn@umich.edu return 5711049Sbinkertn@umich.edu 5721049Sbinkertn@umich.edu if command == 'txbps': 5731604Srdreslin@umich.edu gbps = system.tsunami.etherdev0.txBandwidth / 1e9 5741076Sbinkertn@umich.edu if options.graph: 5751269Sbinkertn@umich.edu graphdata(runs, options, 'txbps', 'Bandwidth (Gbps)', gbps) 5761049Sbinkertn@umich.edu else: 5771049Sbinkertn@umich.edu printdata(runs, gbps) 5781049Sbinkertn@umich.edu return 5791049Sbinkertn@umich.edu 5801049Sbinkertn@umich.edu if command == 'bps': 5811604Srdreslin@umich.edu rxbps = system.tsunami.etherdev0.rxBandwidth 5821604Srdreslin@umich.edu txbps = system.tsunami.etherdev0.txBandwidth 5831049Sbinkertn@umich.edu gbps = (rxbps + txbps) / 1e9 5841076Sbinkertn@umich.edu if options.graph: 5851269Sbinkertn@umich.edu graphdata(runs, options, 'bps', 'Bandwidth (Gbps)', gbps) 5861049Sbinkertn@umich.edu else: 5871049Sbinkertn@umich.edu printdata(runs, gbps) 5881049Sbinkertn@umich.edu return 5891049Sbinkertn@umich.edu 5901049Sbinkertn@umich.edu if command == 'misses': 5911604Srdreslin@umich.edu stat = system.l2.overall_mshr_misses 5921076Sbinkertn@umich.edu if options.binned: 5931049Sbinkertn@umich.edu print '%s kernel stats' % stat.name 5941049Sbinkertn@umich.edu stat.bins = 'kernel' 5951049Sbinkertn@umich.edu printdata(runs, stat) 5961049Sbinkertn@umich.edu 5971049Sbinkertn@umich.edu print '%s idle stats' % stat.name 5981049Sbinkertn@umich.edu stat.bins = 'idle' 5991049Sbinkertn@umich.edu printdata(runs, stat) 6001049Sbinkertn@umich.edu 6011049Sbinkertn@umich.edu print '%s user stats' % stat.name 6021049Sbinkertn@umich.edu stat.bins = 'user' 6031049Sbinkertn@umich.edu printdata(runs, stat) 6041049Sbinkertn@umich.edu 6051049Sbinkertn@umich.edu print '%s total stats' % stat.name 6061049Sbinkertn@umich.edu 6071049Sbinkertn@umich.edu stat.bins = None 6081076Sbinkertn@umich.edu if options.graph: 6091269Sbinkertn@umich.edu graphdata(runs, options, 'misses', 'Overall MSHR Misses', stat) 6101049Sbinkertn@umich.edu else: 6111049Sbinkertn@umich.edu printdata(runs, stat) 6121049Sbinkertn@umich.edu return 6131049Sbinkertn@umich.edu 6141049Sbinkertn@umich.edu if command == 'mpkb': 6151604Srdreslin@umich.edu misses = system.l2.overall_mshr_misses 6161604Srdreslin@umich.edu rxbytes = system.tsunami.etherdev0.rxBytes 6171604Srdreslin@umich.edu txbytes = system.tsunami.etherdev0.txBytes 6181049Sbinkertn@umich.edu 6191076Sbinkertn@umich.edu if options.binned: 6201049Sbinkertn@umich.edu print 'mpkb kernel stats' 6211049Sbinkertn@umich.edu misses.bins = 'kernel' 6221049Sbinkertn@umich.edu mpkb = misses / ((rxbytes + txbytes) / 1024) 6231049Sbinkertn@umich.edu printdata(runs, mpkb) 6241049Sbinkertn@umich.edu 6251049Sbinkertn@umich.edu print 'mpkb idle stats' 6261049Sbinkertn@umich.edu misses.bins = 'idle' 6271049Sbinkertn@umich.edu mpkb = misses / ((rxbytes + txbytes) / 1024) 6281049Sbinkertn@umich.edu printdata(runs, mpkb) 6291049Sbinkertn@umich.edu 6301049Sbinkertn@umich.edu print 'mpkb user stats' 6311049Sbinkertn@umich.edu misses.bins = 'user' 6321049Sbinkertn@umich.edu mpkb = misses / ((rxbytes + txbytes) / 1024) 6331049Sbinkertn@umich.edu printdata(runs, mpkb) 6341049Sbinkertn@umich.edu 6351049Sbinkertn@umich.edu print 'mpkb total stats' 6361049Sbinkertn@umich.edu 6371049Sbinkertn@umich.edu mpkb = misses / ((rxbytes + txbytes) / 1024) 6381049Sbinkertn@umich.edu misses.bins = None 6391076Sbinkertn@umich.edu if options.graph: 6401269Sbinkertn@umich.edu graphdata(runs, options, 'mpkb', 'Misses / KB', mpkb) 6411049Sbinkertn@umich.edu else: 6421049Sbinkertn@umich.edu printdata(runs, mpkb) 6431049Sbinkertn@umich.edu return 6441049Sbinkertn@umich.edu 6451269Sbinkertn@umich.edu if command == 'ipkb': 6461604Srdreslin@umich.edu interrupts = system.full0.kern.faults[4] 6471604Srdreslin@umich.edu rxbytes = system.tsunami.etherdev0.rxBytes 6481604Srdreslin@umich.edu txbytes = system.tsunami.etherdev0.txBytes 6491269Sbinkertn@umich.edu 6501269Sbinkertn@umich.edu if options.binned: 6511269Sbinkertn@umich.edu print 'ipkb kernel stats' 6521269Sbinkertn@umich.edu interrupts.bins = 'kernel' 6531269Sbinkertn@umich.edu ipkb = interrupts / ((rxbytes + txbytes) / 1024) 6541269Sbinkertn@umich.edu printdata(runs, ipkb) 6551269Sbinkertn@umich.edu 6561269Sbinkertn@umich.edu print 'ipkb idle stats' 6571269Sbinkertn@umich.edu interrupts.bins = 'idle' 6581269Sbinkertn@umich.edu ipkb = interrupts / ((rxbytes + txbytes) / 1024) 6591269Sbinkertn@umich.edu printdata(runs, ipkb) 6601269Sbinkertn@umich.edu 6611269Sbinkertn@umich.edu print 'ipkb user stats' 6621269Sbinkertn@umich.edu interrupts.bins = 'user' 6631269Sbinkertn@umich.edu ipkb = interrupts / ((rxbytes + txbytes) / 1024) 6641269Sbinkertn@umich.edu printdata(runs, ipkb) 6651269Sbinkertn@umich.edu 6661269Sbinkertn@umich.edu print 'ipkb total stats' 6671269Sbinkertn@umich.edu 6681269Sbinkertn@umich.edu ipkb = interrupts / ((rxbytes + txbytes) / 1024) 6691269Sbinkertn@umich.edu interrupts.bins = None 6701269Sbinkertn@umich.edu if options.graph: 6711269Sbinkertn@umich.edu graphdata(runs, options, 'ipkb', 'Interrupts / KB', ipkb) 6721269Sbinkertn@umich.edu else: 6731269Sbinkertn@umich.edu printdata(runs, ipkb) 6741269Sbinkertn@umich.edu return 6751269Sbinkertn@umich.edu 6761049Sbinkertn@umich.edu if command == 'execute': 6771604Srdreslin@umich.edu printdata(runs, system.full0.ISSUE__count) 6781049Sbinkertn@umich.edu return 6791049Sbinkertn@umich.edu 6801049Sbinkertn@umich.edu if command == 'commit': 6811604Srdreslin@umich.edu printdata(runs, system.full0.COM__count) 6821049Sbinkertn@umich.edu return 6831049Sbinkertn@umich.edu 6841049Sbinkertn@umich.edu if command == 'fetch': 6851604Srdreslin@umich.edu printdata(runs, system.full0.FETCH__count) 6861049Sbinkertn@umich.edu return 6871049Sbinkertn@umich.edu 6881162Sbinkertn@umich.edu if command == 'bpp': 6891604Srdreslin@umich.edu ed = system.tsunami.etherdev0 6901162Sbinkertn@umich.edu bpp = (ed.rxBytes + ed.txBytes) / (ed.rxPackets + ed.txPackets) 6911162Sbinkertn@umich.edu if options.graph: 6921269Sbinkertn@umich.edu graphdata(runs, options, 'bpp', 'Bytes / Packet', bpp) 6931162Sbinkertn@umich.edu else: 6941162Sbinkertn@umich.edu printdata(runs, bpp) 6951162Sbinkertn@umich.edu return 6961162Sbinkertn@umich.edu 6971049Sbinkertn@umich.edu if command == 'rxbpp': 6981604Srdreslin@umich.edu bpp = system.tsunami.etherdev0.rxBytes / system.tsunami.etherdev0.rxPackets 6991162Sbinkertn@umich.edu if options.graph: 7001269Sbinkertn@umich.edu graphdata(runs, options, 'rxbpp', 'Receive Bytes / Packet', bpp) 7011162Sbinkertn@umich.edu else: 7021162Sbinkertn@umich.edu printdata(runs, bpp) 7031049Sbinkertn@umich.edu return 7041049Sbinkertn@umich.edu 7051049Sbinkertn@umich.edu if command == 'txbpp': 7061604Srdreslin@umich.edu bpp = system.tsunami.etherdev0.txBytes / system.tsunami.etherdev0.txPackets 7071162Sbinkertn@umich.edu if options.graph: 7081269Sbinkertn@umich.edu graphdata(runs, options, 'txbpp', 'Transmit Bytes / Packet', bpp) 7091162Sbinkertn@umich.edu else: 7101162Sbinkertn@umich.edu printdata(runs, bpp) 7111162Sbinkertn@umich.edu return 7121162Sbinkertn@umich.edu 7131162Sbinkertn@umich.edu if command == 'rtp': 7141604Srdreslin@umich.edu rtp = system.tsunami.etherdev0.rxPackets / system.tsunami.etherdev0.txPackets 7151162Sbinkertn@umich.edu if options.graph: 7161269Sbinkertn@umich.edu graphdata(runs, options, 'rtp', 'rxPackets / txPackets', rtp) 7171162Sbinkertn@umich.edu else: 7181162Sbinkertn@umich.edu printdata(runs, rtp) 7191162Sbinkertn@umich.edu return 7201162Sbinkertn@umich.edu 7211162Sbinkertn@umich.edu if command == 'rtb': 7221604Srdreslin@umich.edu rtb = system.tsunami.etherdev0.rxBytes / system.tsunami.etherdev0.txBytes 7231162Sbinkertn@umich.edu if options.graph: 7241269Sbinkertn@umich.edu graphdata(runs, options, 'rtb', 'rxBytes / txBytes', rtb) 7251162Sbinkertn@umich.edu else: 7261162Sbinkertn@umich.edu printdata(runs, rtb) 7271049Sbinkertn@umich.edu return 7281049Sbinkertn@umich.edu 7291049Sbinkertn@umich.edu raise CommandException 7301049Sbinkertn@umich.edu 7311049Sbinkertn@umich.edu 7321049Sbinkertn@umich.educlass Options: pass 7331049Sbinkertn@umich.edu 7341049Sbinkertn@umich.eduif __name__ == '__main__': 7351049Sbinkertn@umich.edu import getpass 7361049Sbinkertn@umich.edu 7371049Sbinkertn@umich.edu options = Options() 7381049Sbinkertn@umich.edu options.host = 'zizzer.pool' 7391049Sbinkertn@umich.edu options.db = None 7401049Sbinkertn@umich.edu options.passwd = '' 7411049Sbinkertn@umich.edu options.user = getpass.getuser() 7421049Sbinkertn@umich.edu options.runs = None 7431049Sbinkertn@umich.edu options.system = 'client' 7441049Sbinkertn@umich.edu options.get = None 7451076Sbinkertn@umich.edu options.binned = False 7461076Sbinkertn@umich.edu options.graph = False 7471307Sbinkertn@umich.edu options.graph68 = False 7481301Ssaidi@eecs.umich.edu options.ticks = False 7491049Sbinkertn@umich.edu 7501308Ssaidi@eecs.umich.edu opts, args = getopts(sys.argv[1:], '-6BEFGd:g:h:pr:s:u:T:') 7511049Sbinkertn@umich.edu for o,a in opts: 7521307Sbinkertn@umich.edu if o == '-6': 7531307Sbinkertn@umich.edu options.graph68 = True 7541049Sbinkertn@umich.edu if o == '-B': 7551049Sbinkertn@umich.edu options.binned = True 7561049Sbinkertn@umich.edu if o == '-E': 7571049Sbinkertn@umich.edu printval.mode = 'E' 7581049Sbinkertn@umich.edu if o == '-F': 7591049Sbinkertn@umich.edu printval.mode = 'F' 7601049Sbinkertn@umich.edu if o == '-G': 7611049Sbinkertn@umich.edu options.graph = True; 7621049Sbinkertn@umich.edu if o == '-d': 7631049Sbinkertn@umich.edu options.db = a 7641049Sbinkertn@umich.edu if o == '-g': 7651049Sbinkertn@umich.edu options.get = a 7661049Sbinkertn@umich.edu if o == '-h': 7671049Sbinkertn@umich.edu options.host = a 7681049Sbinkertn@umich.edu if o == '-p': 7691049Sbinkertn@umich.edu options.passwd = getpass.getpass() 7701049Sbinkertn@umich.edu if o == '-r': 7711049Sbinkertn@umich.edu options.runs = a 7721049Sbinkertn@umich.edu if o == '-u': 7731049Sbinkertn@umich.edu options.user = a 7741049Sbinkertn@umich.edu if o == '-s': 7751049Sbinkertn@umich.edu options.system = a 7761301Ssaidi@eecs.umich.edu if o == '-T': 7771301Ssaidi@eecs.umich.edu options.ticks = a 7781049Sbinkertn@umich.edu 7791049Sbinkertn@umich.edu if len(args) == 0: 7801049Sbinkertn@umich.edu usage() 7811049Sbinkertn@umich.edu 7821049Sbinkertn@umich.edu command = args[0] 7831049Sbinkertn@umich.edu args = args[1:] 7841049Sbinkertn@umich.edu 7851049Sbinkertn@umich.edu try: 7861049Sbinkertn@umich.edu commands(options, command, args) 7871049Sbinkertn@umich.edu except CommandException: 7881049Sbinkertn@umich.edu usage() 789