stats.py revision 1162:a45bd001ac39
16019Shines@cs.fsu.edu#!/usr/bin/env python 26019Shines@cs.fsu.edufrom __future__ import division 37178Sgblack@eecs.umich.eduimport re, sys 47178Sgblack@eecs.umich.edu 57178Sgblack@eecs.umich.edudef usage(): 67178Sgblack@eecs.umich.edu print '''\ 77178Sgblack@eecs.umich.eduUsage: %s [-E] [-F] [-d <db> ] [-g <get> ] [-h <host>] [-p] 87178Sgblack@eecs.umich.edu [-s <system>] [-r <runs> ] [-u <username>] <command> [command args] 97178Sgblack@eecs.umich.edu''' % sys.argv[0] 107178Sgblack@eecs.umich.edu sys.exit(1) 117178Sgblack@eecs.umich.edu 127178Sgblack@eecs.umich.edudef getopts(list, flags): 137178Sgblack@eecs.umich.edu import getopt 147178Sgblack@eecs.umich.edu try: 156019Shines@cs.fsu.edu opts, args = getopt.getopt(list, flags) 166019Shines@cs.fsu.edu except getopt.GetoptError: 176019Shines@cs.fsu.edu usage() 186019Shines@cs.fsu.edu 196019Shines@cs.fsu.edu return opts, args 206019Shines@cs.fsu.edu 216019Shines@cs.fsu.edudef printval(name, value, invert = False): 226019Shines@cs.fsu.edu if invert and value != 0.0: 236019Shines@cs.fsu.edu value = 1 / value 246019Shines@cs.fsu.edu 256019Shines@cs.fsu.edu if value == (1e300*1e300): 266019Shines@cs.fsu.edu return 276019Shines@cs.fsu.edu 286019Shines@cs.fsu.edu if printval.mode == 'G': 296019Shines@cs.fsu.edu print '%s: %g' % (name, value) 306019Shines@cs.fsu.edu elif printval.mode != 'F' and value > 1e6: 316019Shines@cs.fsu.edu print '%s: %0.5e' % (name, value) 326019Shines@cs.fsu.edu else: 336019Shines@cs.fsu.edu print '%s: %f' % (name, value) 346019Shines@cs.fsu.edu 356019Shines@cs.fsu.eduprintval.mode = 'G' 366019Shines@cs.fsu.edu 376019Shines@cs.fsu.edudef unique(list): 386019Shines@cs.fsu.edu set = {} 396019Shines@cs.fsu.edu map(set.__setitem__, list, []) 406019Shines@cs.fsu.edu return set.keys() 416019Shines@cs.fsu.edu 426019Shines@cs.fsu.edudef graphdata(runs, tag, label, value): 436019Shines@cs.fsu.edu import info 446019Shines@cs.fsu.edu configs = ['stx', 'ste', 'hte', 'htd', 'ocm', 'occ', 'ocp' ] 456019Shines@cs.fsu.edu benchmarks = [ 'm', 's' ] 466019Shines@cs.fsu.edu dmas = [ 'X', 'D' ] 476019Shines@cs.fsu.edu caches = [ '2', '4' ] 487356Sgblack@eecs.umich.edu checkpoints = [ '1' ] 497356Sgblack@eecs.umich.edu 507356Sgblack@eecs.umich.edu names = [] 517435Sgblack@eecs.umich.edu for bench in benchmarks: 527435Sgblack@eecs.umich.edu for dma in dmas: 537435Sgblack@eecs.umich.edu for cache in caches: 547435Sgblack@eecs.umich.edu for cpt in checkpoints: 557435Sgblack@eecs.umich.edu names.append([bench, dma, cache, cpt]) 567435Sgblack@eecs.umich.edu 577435Sgblack@eecs.umich.edu for bench,dma,cache,cpt in names: 587435Sgblack@eecs.umich.edu base = '%s.%s.%s.%s' % (bench, dma, cache, cpt) 597435Sgblack@eecs.umich.edu fname = '/n/ziff/z/binkertn/graph/test2/data/%s.%s.dat' % (tag, base) 607435Sgblack@eecs.umich.edu f = open(fname, 'w') 617435Sgblack@eecs.umich.edu print >>f, '#set TITLE = %s' % base 627435Sgblack@eecs.umich.edu print >>f, '#set xlbl = Configuration' 637435Sgblack@eecs.umich.edu print >>f, '#set ylbl = %s' % label 647435Sgblack@eecs.umich.edu print >>f, '#set sublabels = %s' % ' '.join(configs) 657435Sgblack@eecs.umich.edu 667435Sgblack@eecs.umich.edu for speed,freq in zip(['s', 'q'],['4GHz','10GHz']): 677435Sgblack@eecs.umich.edu print >>f, '"%s"' % freq, 687435Sgblack@eecs.umich.edu for conf in configs: 697435Sgblack@eecs.umich.edu name = '%s.%s.%s.%s.%s.%s' % (conf, bench, dma, speed, cache, 707435Sgblack@eecs.umich.edu cpt) 717435Sgblack@eecs.umich.edu run = info.source.allRunNames[name] 727435Sgblack@eecs.umich.edu info.display_run = run.run; 737435Sgblack@eecs.umich.edu val = float(value) 747435Sgblack@eecs.umich.edu if val == 1e300*1e300: 757435Sgblack@eecs.umich.edu print >>f, 0.0, 767435Sgblack@eecs.umich.edu else: 777435Sgblack@eecs.umich.edu print >>f, "%f" % val, 787435Sgblack@eecs.umich.edu print >>f 797435Sgblack@eecs.umich.edu f.close() 807435Sgblack@eecs.umich.edu 817435Sgblack@eecs.umich.edudef printdata(runs, value, invert = False): 827435Sgblack@eecs.umich.edu import info 837435Sgblack@eecs.umich.edu for run in runs: 847435Sgblack@eecs.umich.edu info.display_run = run.run; 857435Sgblack@eecs.umich.edu val = float(value) 867435Sgblack@eecs.umich.edu printval(run.name, val) 877435Sgblack@eecs.umich.edu 887435Sgblack@eecs.umich.educlass CommandException(Exception): 897435Sgblack@eecs.umich.edu pass 907435Sgblack@eecs.umich.edu 917435Sgblack@eecs.umich.edudef commands(options, command, args): 927435Sgblack@eecs.umich.edu if command == 'database': 937435Sgblack@eecs.umich.edu if len(args) == 0: raise CommandException 947435Sgblack@eecs.umich.edu 957435Sgblack@eecs.umich.edu import dbinit 967435Sgblack@eecs.umich.edu mydb = dbinit.MyDB(options) 977435Sgblack@eecs.umich.edu 987435Sgblack@eecs.umich.edu if args[0] == 'drop': 997435Sgblack@eecs.umich.edu if len(args) > 2: raise CommandException 1007435Sgblack@eecs.umich.edu mydb.admin() 1017435Sgblack@eecs.umich.edu mydb.drop() 1027435Sgblack@eecs.umich.edu if len(args) == 2 and args[1] == 'init': 1037435Sgblack@eecs.umich.edu mydb.create() 1047435Sgblack@eecs.umich.edu mydb.connect() 1057435Sgblack@eecs.umich.edu mydb.populate() 1067435Sgblack@eecs.umich.edu mydb.close() 1077435Sgblack@eecs.umich.edu return 1087435Sgblack@eecs.umich.edu 1097435Sgblack@eecs.umich.edu if args[0] == 'init': 1107435Sgblack@eecs.umich.edu if len(args) > 1: raise CommandException 1117435Sgblack@eecs.umich.edu mydb.admin() 1127435Sgblack@eecs.umich.edu mydb.create() 1137435Sgblack@eecs.umich.edu mydb.connect() 1147435Sgblack@eecs.umich.edu mydb.populate() 1157435Sgblack@eecs.umich.edu mydb.close() 1167435Sgblack@eecs.umich.edu return 1177435Sgblack@eecs.umich.edu 1187435Sgblack@eecs.umich.edu if args[0] == 'clean': 1197435Sgblack@eecs.umich.edu if len(args) > 1: raise CommandException 1207435Sgblack@eecs.umich.edu mydb.connect() 1217435Sgblack@eecs.umich.edu mydb.clean() 1227435Sgblack@eecs.umich.edu return 1237435Sgblack@eecs.umich.edu 1247435Sgblack@eecs.umich.edu raise CommandException 1257435Sgblack@eecs.umich.edu 1267435Sgblack@eecs.umich.edu import db, info 1277435Sgblack@eecs.umich.edu info.source = db.Database() 1287435Sgblack@eecs.umich.edu info.source.host = options.host 1297435Sgblack@eecs.umich.edu info.source.db = options.db 1307435Sgblack@eecs.umich.edu info.source.passwd = options.passwd 1317435Sgblack@eecs.umich.edu info.source.user = options.user 1327435Sgblack@eecs.umich.edu info.source.connect() 1337435Sgblack@eecs.umich.edu info.source.update_dict(globals()) 1347435Sgblack@eecs.umich.edu 1357435Sgblack@eecs.umich.edu system = info.source.__dict__[options.system] 1367435Sgblack@eecs.umich.edu 1377435Sgblack@eecs.umich.edu if type(options.get) is str: 1387435Sgblack@eecs.umich.edu info.source.get = options.get 1397435Sgblack@eecs.umich.edu 1407435Sgblack@eecs.umich.edu if options.runs is None: 1417435Sgblack@eecs.umich.edu runs = info.source.allRuns 1427435Sgblack@eecs.umich.edu else: 1437435Sgblack@eecs.umich.edu rx = re.compile(options.runs) 1447435Sgblack@eecs.umich.edu runs = [] 1457435Sgblack@eecs.umich.edu for run in info.source.allRuns: 1467435Sgblack@eecs.umich.edu if rx.match(run.name): 1477435Sgblack@eecs.umich.edu runs.append(run) 1487435Sgblack@eecs.umich.edu 1497435Sgblack@eecs.umich.edu info.display_run = runs[0].run 1507435Sgblack@eecs.umich.edu 1517435Sgblack@eecs.umich.edu if command == 'runs': 1527435Sgblack@eecs.umich.edu user = None 1537435Sgblack@eecs.umich.edu opts, args = getopts(args, '-u') 1547435Sgblack@eecs.umich.edu if len(args): 1557435Sgblack@eecs.umich.edu raise CommandException 1567435Sgblack@eecs.umich.edu for o,a in opts: 1577435Sgblack@eecs.umich.edu if o == '-u': 1587435Sgblack@eecs.umich.edu user = a 1597435Sgblack@eecs.umich.edu info.source.listRuns(user) 1607435Sgblack@eecs.umich.edu return 1617435Sgblack@eecs.umich.edu 1627435Sgblack@eecs.umich.edu if command == 'stats': 1637435Sgblack@eecs.umich.edu if len(args) == 0: 1647435Sgblack@eecs.umich.edu info.source.listStats() 1657435Sgblack@eecs.umich.edu elif len(args) == 1: 1667435Sgblack@eecs.umich.edu info.source.listStats(args[0]) 1677435Sgblack@eecs.umich.edu else: 1687435Sgblack@eecs.umich.edu raise CommandException 1697435Sgblack@eecs.umich.edu 1707435Sgblack@eecs.umich.edu return 1717435Sgblack@eecs.umich.edu 1727435Sgblack@eecs.umich.edu if command == 'stat': 1737435Sgblack@eecs.umich.edu if len(args) != 1: 1747435Sgblack@eecs.umich.edu raise CommandException 1757435Sgblack@eecs.umich.edu 1767435Sgblack@eecs.umich.edu stats = info.source.getStat(args[0]) 1777435Sgblack@eecs.umich.edu for stat in stats: 1787435Sgblack@eecs.umich.edu if options.graph: 1797435Sgblack@eecs.umich.edu graphdata(runs, stat.name, stat.name, stat) 1807435Sgblack@eecs.umich.edu else: 1817435Sgblack@eecs.umich.edu print stat.name 1827435Sgblack@eecs.umich.edu printdata(runs, stat) 1837435Sgblack@eecs.umich.edu return 1847435Sgblack@eecs.umich.edu 1857435Sgblack@eecs.umich.edu if command == 'bins': 1867435Sgblack@eecs.umich.edu if len(args) == 0: 1877435Sgblack@eecs.umich.edu info.source.listBins() 1887435Sgblack@eecs.umich.edu elif len(args) == 1: 1897435Sgblack@eecs.umich.edu info.source.listBins(args[0]) 1907435Sgblack@eecs.umich.edu else: 1917435Sgblack@eecs.umich.edu raise CommandException 1927435Sgblack@eecs.umich.edu 1937435Sgblack@eecs.umich.edu return 1947435Sgblack@eecs.umich.edu 1957435Sgblack@eecs.umich.edu if command == 'formulas': 1967435Sgblack@eecs.umich.edu if len(args) == 0: 1977435Sgblack@eecs.umich.edu info.source.listFormulas() 1987435Sgblack@eecs.umich.edu elif len(args) == 1: 1997435Sgblack@eecs.umich.edu info.source.listFormulas(args[0]) 2007435Sgblack@eecs.umich.edu else: 2017435Sgblack@eecs.umich.edu raise CommandException 2027435Sgblack@eecs.umich.edu 2037435Sgblack@eecs.umich.edu return 2047435Sgblack@eecs.umich.edu 2057435Sgblack@eecs.umich.edu if command == 'samples': 2067435Sgblack@eecs.umich.edu if len(args): 2077435Sgblack@eecs.umich.edu raise CommandException 2087435Sgblack@eecs.umich.edu 2097435Sgblack@eecs.umich.edu info.source.listTicks(runs) 2107435Sgblack@eecs.umich.edu return 2117435Sgblack@eecs.umich.edu 2127435Sgblack@eecs.umich.edu if len(args): 2137435Sgblack@eecs.umich.edu raise CommandException 2147435Sgblack@eecs.umich.edu 2157435Sgblack@eecs.umich.edu if command == 'usertime': 2167435Sgblack@eecs.umich.edu import copy 2177435Sgblack@eecs.umich.edu kernel = copy.copy(system.full_cpu.numCycles) 2187435Sgblack@eecs.umich.edu kernel.bins = 'kernel' 2197435Sgblack@eecs.umich.edu 2207435Sgblack@eecs.umich.edu user = copy.copy(system.full_cpu.numCycles) 2217435Sgblack@eecs.umich.edu user.bins = 'user' 2227435Sgblack@eecs.umich.edu 2237435Sgblack@eecs.umich.edu if options.graph: 2247435Sgblack@eecs.umich.edu graphdata(runs, 'usertime', 'User Fraction', 2257435Sgblack@eecs.umich.edu user / system.full_cpu.numCycles) 2267435Sgblack@eecs.umich.edu else: 2277435Sgblack@eecs.umich.edu printdata(runs, user / system.full_cpu.numCycles) 2287435Sgblack@eecs.umich.edu return 2297435Sgblack@eecs.umich.edu 2307435Sgblack@eecs.umich.edu if command == 'ticks': 2317435Sgblack@eecs.umich.edu if options.binned: 2327435Sgblack@eecs.umich.edu print 'kernel ticks' 2337435Sgblack@eecs.umich.edu system.full_cpu.numCycles.bins = 'kernel' 2347435Sgblack@eecs.umich.edu printdata(runs, system.full_cpu.numCycles) 2357435Sgblack@eecs.umich.edu 2367435Sgblack@eecs.umich.edu print 'idle ticks' 2377435Sgblack@eecs.umich.edu system.full_cpu.numCycles.bins = 'idle' 2387435Sgblack@eecs.umich.edu printdata(runs, system.full_cpu.numCycles) 2397435Sgblack@eecs.umich.edu 2407435Sgblack@eecs.umich.edu print 'user ticks' 2417435Sgblack@eecs.umich.edu system.full_cpu.numCycles.bins = 'user' 2427435Sgblack@eecs.umich.edu printdata(runs, system.full_cpu.numCycles) 2437435Sgblack@eecs.umich.edu 2447435Sgblack@eecs.umich.edu print 'total ticks' 2457435Sgblack@eecs.umich.edu 2467435Sgblack@eecs.umich.edu system.full_cpu.numCycles.bins = None 2477435Sgblack@eecs.umich.edu printdata(runs, system.full_cpu.numCycles) 2487435Sgblack@eecs.umich.edu return 2497435Sgblack@eecs.umich.edu 2507435Sgblack@eecs.umich.edu if command == 'packets': 2517435Sgblack@eecs.umich.edu packets = system.tsunami.etherdev.rxPackets 2527435Sgblack@eecs.umich.edu if options.graph: 2537435Sgblack@eecs.umich.edu graphdata(runs, 'packets', 'Packets', packets) 2547435Sgblack@eecs.umich.edu else: 2557435Sgblack@eecs.umich.edu printdata(runs, packets) 2567435Sgblack@eecs.umich.edu return 2577435Sgblack@eecs.umich.edu 2587435Sgblack@eecs.umich.edu if command == 'ppt' or command == 'tpp': 2597435Sgblack@eecs.umich.edu ppt = system.tsunami.etherdev.rxPackets / sim_ticks 2607435Sgblack@eecs.umich.edu printdata(runs, ppt, command == 'tpp') 2617435Sgblack@eecs.umich.edu return 2627435Sgblack@eecs.umich.edu 2637435Sgblack@eecs.umich.edu if command == 'pps': 2647435Sgblack@eecs.umich.edu pps = system.tsunami.etherdev.rxPackets / sim_seconds 2657435Sgblack@eecs.umich.edu if options.graph: 2667435Sgblack@eecs.umich.edu graphdata(runs, 'pps', 'Packets/s', pps) 2677435Sgblack@eecs.umich.edu else: 2687435Sgblack@eecs.umich.edu printdata(runs, pps) 2697435Sgblack@eecs.umich.edu return 2707435Sgblack@eecs.umich.edu 2717435Sgblack@eecs.umich.edu if command == 'bpt' or command == 'tpb': 2727435Sgblack@eecs.umich.edu bytes = system.tsunami.etherdev.rxBytes + system.tsunami.etherdev.txBytes 2737435Sgblack@eecs.umich.edu bpt = bytes / sim_ticks * 8 2747435Sgblack@eecs.umich.edu if options.graph: 2757435Sgblack@eecs.umich.edu graphdata(runs, 'bpt', 'bps / Hz', bpt) 2767435Sgblack@eecs.umich.edu else: 2777435Sgblack@eecs.umich.edu printdata(runs, bpt, command == 'tpb') 2787435Sgblack@eecs.umich.edu return 2797435Sgblack@eecs.umich.edu 2807435Sgblack@eecs.umich.edu if command == 'bptb' or command == 'tpbb': 2817435Sgblack@eecs.umich.edu bytes = system.tsunami.etherdev.rxBytes + system.tsunami.etherdev.txBytes 2827435Sgblack@eecs.umich.edu 2837435Sgblack@eecs.umich.edu print 'kernel stats' 2847435Sgblack@eecs.umich.edu bytes.bins = 'kernel' 2857435Sgblack@eecs.umich.edu printdata(runs, bytes / ticks) 2867435Sgblack@eecs.umich.edu 2877435Sgblack@eecs.umich.edu print 'idle stats' 2887435Sgblack@eecs.umich.edu bytes.bins = 'idle' 2897435Sgblack@eecs.umich.edu printdata(runs, bytes / ticks) 2907435Sgblack@eecs.umich.edu 2917435Sgblack@eecs.umich.edu print 'user stats' 2927435Sgblack@eecs.umich.edu bytes.bins = 'user' 2937435Sgblack@eecs.umich.edu printdata(runs, bytes / ticks) 2947435Sgblack@eecs.umich.edu 2957435Sgblack@eecs.umich.edu return 2967435Sgblack@eecs.umich.edu 2977435Sgblack@eecs.umich.edu if command == 'bytes': 2987435Sgblack@eecs.umich.edu stat = system.tsunami.etherdev.rxBytes + system.tsunami.etherdev.txBytes 2997435Sgblack@eecs.umich.edu 3007435Sgblack@eecs.umich.edu if options.binned: 3017435Sgblack@eecs.umich.edu print '%s kernel stats' % stat.name 3027435Sgblack@eecs.umich.edu stat.bins = 'kernel' 3037435Sgblack@eecs.umich.edu printdata(runs, stat) 3047435Sgblack@eecs.umich.edu 3057435Sgblack@eecs.umich.edu print '%s idle stats' % stat.name 3067435Sgblack@eecs.umich.edu stat.bins = 'idle' 3077435Sgblack@eecs.umich.edu printdata(runs, stat) 3087435Sgblack@eecs.umich.edu 3097435Sgblack@eecs.umich.edu print '%s user stats' % stat.name 3107435Sgblack@eecs.umich.edu stat.bins = 'user' 3117435Sgblack@eecs.umich.edu printdata(runs, stat) 3127435Sgblack@eecs.umich.edu 3137435Sgblack@eecs.umich.edu print '%s total stats' % stat.name 3147435Sgblack@eecs.umich.edu stat.bins = None 3157435Sgblack@eecs.umich.edu 3167435Sgblack@eecs.umich.edu printdata(runs, stat) 3177435Sgblack@eecs.umich.edu return 3187435Sgblack@eecs.umich.edu 3197435Sgblack@eecs.umich.edu if command == 'rxbps': 3207435Sgblack@eecs.umich.edu gbps = system.tsunami.etherdev.rxBandwidth / 1e9 3217435Sgblack@eecs.umich.edu if options.graph: 3227435Sgblack@eecs.umich.edu graphdata(runs, 'rxbps', 'Bandwidth (Gbps)', gbps) 3237435Sgblack@eecs.umich.edu else: 3247435Sgblack@eecs.umich.edu printdata(runs, gbps) 3257435Sgblack@eecs.umich.edu return 3267435Sgblack@eecs.umich.edu 3277435Sgblack@eecs.umich.edu if command == 'txbps': 3287435Sgblack@eecs.umich.edu gbps = system.tsunami.etherdev.txBandwidth / 1e9 3297435Sgblack@eecs.umich.edu if options.graph: 3307435Sgblack@eecs.umich.edu graphdata(runs, 'txbps', 'Bandwidth (Gbps)', gbps) 3317435Sgblack@eecs.umich.edu else: 3327435Sgblack@eecs.umich.edu printdata(runs, gbps) 3337435Sgblack@eecs.umich.edu return 3347435Sgblack@eecs.umich.edu 3357435Sgblack@eecs.umich.edu if command == 'bps': 3367435Sgblack@eecs.umich.edu rxbps = system.tsunami.etherdev.rxBandwidth 3377435Sgblack@eecs.umich.edu txbps = system.tsunami.etherdev.txBandwidth 3387435Sgblack@eecs.umich.edu gbps = (rxbps + txbps) / 1e9 3397435Sgblack@eecs.umich.edu if options.graph: 3407435Sgblack@eecs.umich.edu graphdata(runs, 'bps', 'Bandwidth (Gbps)', gbps) 3417435Sgblack@eecs.umich.edu else: 3427435Sgblack@eecs.umich.edu printdata(runs, gbps) 3437435Sgblack@eecs.umich.edu return 3447435Sgblack@eecs.umich.edu 3457435Sgblack@eecs.umich.edu if command == 'misses': 3467435Sgblack@eecs.umich.edu stat = system.L2.overall_mshr_misses 3477435Sgblack@eecs.umich.edu if options.binned: 3487435Sgblack@eecs.umich.edu print '%s kernel stats' % stat.name 3497435Sgblack@eecs.umich.edu stat.bins = 'kernel' 3507435Sgblack@eecs.umich.edu printdata(runs, stat) 3517435Sgblack@eecs.umich.edu 3527435Sgblack@eecs.umich.edu print '%s idle stats' % stat.name 3537435Sgblack@eecs.umich.edu stat.bins = 'idle' 3547435Sgblack@eecs.umich.edu printdata(runs, stat) 3557435Sgblack@eecs.umich.edu 3567435Sgblack@eecs.umich.edu print '%s user stats' % stat.name 3577435Sgblack@eecs.umich.edu stat.bins = 'user' 3587435Sgblack@eecs.umich.edu printdata(runs, stat) 3597435Sgblack@eecs.umich.edu 3607435Sgblack@eecs.umich.edu print '%s total stats' % stat.name 3617435Sgblack@eecs.umich.edu 3627435Sgblack@eecs.umich.edu stat.bins = None 3637435Sgblack@eecs.umich.edu if options.graph: 3647435Sgblack@eecs.umich.edu graphdata(runs, 'misses', 'Overall MSHR Misses', stat) 3657435Sgblack@eecs.umich.edu else: 3667435Sgblack@eecs.umich.edu printdata(runs, stat) 3677435Sgblack@eecs.umich.edu return 3687435Sgblack@eecs.umich.edu 3697435Sgblack@eecs.umich.edu if command == 'mpkb': 3707435Sgblack@eecs.umich.edu misses = system.L2.overall_mshr_misses 3717435Sgblack@eecs.umich.edu rxbytes = system.tsunami.etherdev.rxBytes 3727435Sgblack@eecs.umich.edu txbytes = system.tsunami.etherdev.txBytes 3737435Sgblack@eecs.umich.edu 3747435Sgblack@eecs.umich.edu if options.binned: 3757435Sgblack@eecs.umich.edu print 'mpkb kernel stats' 3767435Sgblack@eecs.umich.edu misses.bins = 'kernel' 3777435Sgblack@eecs.umich.edu mpkb = misses / ((rxbytes + txbytes) / 1024) 3787435Sgblack@eecs.umich.edu printdata(runs, mpkb) 3797435Sgblack@eecs.umich.edu 3807435Sgblack@eecs.umich.edu print 'mpkb idle stats' 3817435Sgblack@eecs.umich.edu misses.bins = 'idle' 3827435Sgblack@eecs.umich.edu mpkb = misses / ((rxbytes + txbytes) / 1024) 3837435Sgblack@eecs.umich.edu printdata(runs, mpkb) 3847435Sgblack@eecs.umich.edu 3857435Sgblack@eecs.umich.edu print 'mpkb user stats' 3867435Sgblack@eecs.umich.edu misses.bins = 'user' 3877435Sgblack@eecs.umich.edu mpkb = misses / ((rxbytes + txbytes) / 1024) 3887435Sgblack@eecs.umich.edu printdata(runs, mpkb) 3897435Sgblack@eecs.umich.edu 3907435Sgblack@eecs.umich.edu print 'mpkb total stats' 3917435Sgblack@eecs.umich.edu 3927435Sgblack@eecs.umich.edu mpkb = misses / ((rxbytes + txbytes) / 1024) 3937435Sgblack@eecs.umich.edu misses.bins = None 3947435Sgblack@eecs.umich.edu if options.graph: 3957435Sgblack@eecs.umich.edu graphdata(runs, 'mpkb', 'Misses / KB', mpkb) 3967435Sgblack@eecs.umich.edu else: 3977435Sgblack@eecs.umich.edu printdata(runs, mpkb) 3987435Sgblack@eecs.umich.edu return 3997435Sgblack@eecs.umich.edu 4007435Sgblack@eecs.umich.edu if command == 'execute': 4017435Sgblack@eecs.umich.edu printdata(runs, system.full_cpu.ISSUE__count) 4027435Sgblack@eecs.umich.edu return 4037435Sgblack@eecs.umich.edu 4047435Sgblack@eecs.umich.edu if command == 'commit': 4057435Sgblack@eecs.umich.edu printdata(runs, system.full_cpu.COM__count) 4067435Sgblack@eecs.umich.edu return 4077435Sgblack@eecs.umich.edu 4087435Sgblack@eecs.umich.edu if command == 'fetch': 4097435Sgblack@eecs.umich.edu printdata(runs, system.full_cpu.FETCH__count) 4107435Sgblack@eecs.umich.edu return 4117435Sgblack@eecs.umich.edu 4127435Sgblack@eecs.umich.edu if command == 'bpp': 4137435Sgblack@eecs.umich.edu ed = system.tsunami.etherdev 4147435Sgblack@eecs.umich.edu bpp = (ed.rxBytes + ed.txBytes) / (ed.rxPackets + ed.txPackets) 4157435Sgblack@eecs.umich.edu if options.graph: 4167435Sgblack@eecs.umich.edu graphdata(runs, 'bpp', 'Bytes / Packet', bpp) 4177435Sgblack@eecs.umich.edu else: 4187435Sgblack@eecs.umich.edu printdata(runs, bpp) 4197435Sgblack@eecs.umich.edu return 4207435Sgblack@eecs.umich.edu 4217435Sgblack@eecs.umich.edu if command == 'rxbpp': 4227435Sgblack@eecs.umich.edu bpp = system.tsunami.etherdev.rxBytes / system.tsunami.etherdev.rxPackets 4237435Sgblack@eecs.umich.edu if options.graph: 4247435Sgblack@eecs.umich.edu graphdata(runs, 'rxbpp', 'Receive Bytes / Packet', bpp) 4257435Sgblack@eecs.umich.edu else: 4267435Sgblack@eecs.umich.edu printdata(runs, bpp) 4277435Sgblack@eecs.umich.edu return 4287435Sgblack@eecs.umich.edu 4297435Sgblack@eecs.umich.edu if command == 'txbpp': 4307435Sgblack@eecs.umich.edu bpp = system.tsunami.etherdev.txBytes / system.tsunami.etherdev.txPackets 4317435Sgblack@eecs.umich.edu if options.graph: 4327435Sgblack@eecs.umich.edu graphdata(runs, 'txbpp', 'Transmit Bytes / Packet', bpp) 4337435Sgblack@eecs.umich.edu else: 4347435Sgblack@eecs.umich.edu printdata(runs, bpp) 4357435Sgblack@eecs.umich.edu return 4367435Sgblack@eecs.umich.edu 4377435Sgblack@eecs.umich.edu if command == 'rtp': 4387435Sgblack@eecs.umich.edu rtp = system.tsunami.etherdev.rxPackets / system.tsunami.etherdev.txPackets 4397435Sgblack@eecs.umich.edu if options.graph: 4407435Sgblack@eecs.umich.edu graphdata(runs, 'rtp', 'rxPackets / txPackets', rtp) 4417435Sgblack@eecs.umich.edu else: 4427435Sgblack@eecs.umich.edu printdata(runs, rtp) 4437435Sgblack@eecs.umich.edu return 4447435Sgblack@eecs.umich.edu 4457435Sgblack@eecs.umich.edu if command == 'rtb': 4467435Sgblack@eecs.umich.edu rtb = system.tsunami.etherdev.rxBytes / system.tsunami.etherdev.txBytes 4477435Sgblack@eecs.umich.edu if options.graph: 4487435Sgblack@eecs.umich.edu graphdata(runs, 'rtb', 'rxBytes / txBytes', rtb) 4497435Sgblack@eecs.umich.edu else: 4507435Sgblack@eecs.umich.edu printdata(runs, rtb) 4517435Sgblack@eecs.umich.edu return 4527435Sgblack@eecs.umich.edu 4537435Sgblack@eecs.umich.edu raise CommandException 4547435Sgblack@eecs.umich.edu 4557435Sgblack@eecs.umich.edu 4567435Sgblack@eecs.umich.educlass Options: pass 4577435Sgblack@eecs.umich.edu 4587435Sgblack@eecs.umich.eduif __name__ == '__main__': 4597435Sgblack@eecs.umich.edu import getpass 4607435Sgblack@eecs.umich.edu 4617435Sgblack@eecs.umich.edu options = Options() 4627435Sgblack@eecs.umich.edu options.host = 'zizzer.pool' 4637435Sgblack@eecs.umich.edu options.db = None 4647435Sgblack@eecs.umich.edu options.passwd = '' 4657435Sgblack@eecs.umich.edu options.user = getpass.getuser() 4667435Sgblack@eecs.umich.edu options.runs = None 4677435Sgblack@eecs.umich.edu options.system = 'client' 4687435Sgblack@eecs.umich.edu options.get = None 4697435Sgblack@eecs.umich.edu options.binned = False 4707435Sgblack@eecs.umich.edu options.graph = False 4717435Sgblack@eecs.umich.edu 4727435Sgblack@eecs.umich.edu opts, args = getopts(sys.argv[1:], '-BEFGd:g:h:pr:s:u:') 4737435Sgblack@eecs.umich.edu for o,a in opts: 4747435Sgblack@eecs.umich.edu if o == '-B': 4757435Sgblack@eecs.umich.edu options.binned = True 4767435Sgblack@eecs.umich.edu if o == '-E': 4777435Sgblack@eecs.umich.edu printval.mode = 'E' 4787435Sgblack@eecs.umich.edu if o == '-F': 4797435Sgblack@eecs.umich.edu printval.mode = 'F' 4807435Sgblack@eecs.umich.edu if o == '-G': 4817435Sgblack@eecs.umich.edu options.graph = True; 4827435Sgblack@eecs.umich.edu if o == '-d': 4837435Sgblack@eecs.umich.edu options.db = a 4847435Sgblack@eecs.umich.edu if o == '-g': 4857435Sgblack@eecs.umich.edu options.get = a 4867435Sgblack@eecs.umich.edu if o == '-h': 4877435Sgblack@eecs.umich.edu options.host = a 4887435Sgblack@eecs.umich.edu if o == '-p': 4897435Sgblack@eecs.umich.edu options.passwd = getpass.getpass() 4907435Sgblack@eecs.umich.edu if o == '-r': 4917435Sgblack@eecs.umich.edu options.runs = a 4927435Sgblack@eecs.umich.edu if o == '-u': 4937435Sgblack@eecs.umich.edu options.user = a 4947435Sgblack@eecs.umich.edu if o == '-s': 4957435Sgblack@eecs.umich.edu options.system = a 4967435Sgblack@eecs.umich.edu 4977435Sgblack@eecs.umich.edu if len(args) == 0: 4987435Sgblack@eecs.umich.edu usage() 4997435Sgblack@eecs.umich.edu 5007435Sgblack@eecs.umich.edu command = args[0] 5017435Sgblack@eecs.umich.edu args = args[1:] 5027435Sgblack@eecs.umich.edu 5037435Sgblack@eecs.umich.edu try: 5047435Sgblack@eecs.umich.edu commands(options, command, args) 5057435Sgblack@eecs.umich.edu except CommandException: 5067435Sgblack@eecs.umich.edu usage() 5077435Sgblack@eecs.umich.edu