stats.py revision 1049
111730Sar4jc@virginia.edu#!/usr/bin/env python 211730Sar4jc@virginia.edufrom __future__ import division 311730Sar4jc@virginia.eduimport re, sys 411730Sar4jc@virginia.edu 511730Sar4jc@virginia.edudef usage(): 611730Sar4jc@virginia.edu print '''\ 711730Sar4jc@virginia.eduUsage: %s [-E] [-F] [-d <db> ] [-g <get> ] [-h <host>] [-p] 811730Sar4jc@virginia.edu [-s <system>] [-r <runs> ] [-u <username>] <command> [command args] 911730Sar4jc@virginia.edu''' % sys.argv[0] 1011730Sar4jc@virginia.edu sys.exit(1) 1111730Sar4jc@virginia.edu 1211730Sar4jc@virginia.edudef getopts(list, flags): 1311730Sar4jc@virginia.edu import getopt 1411730Sar4jc@virginia.edu try: 1511730Sar4jc@virginia.edu opts, args = getopt.getopt(list, flags) 1611730Sar4jc@virginia.edu except getopt.GetoptError: 1711730Sar4jc@virginia.edu usage() 1811730Sar4jc@virginia.edu 1911730Sar4jc@virginia.edu return opts, args 2011730Sar4jc@virginia.edu 2111730Sar4jc@virginia.edudef printval(name, value, invert = False): 2211730Sar4jc@virginia.edu if invert and value != 0.0: 2311730Sar4jc@virginia.edu value = 1 / value 2411730Sar4jc@virginia.edu 2511730Sar4jc@virginia.edu if value == (1e300*1e300): 2611730Sar4jc@virginia.edu return 2711730Sar4jc@virginia.edu 2811730Sar4jc@virginia.edu if printval.mode == 'G': 2911730Sar4jc@virginia.edu print '%s: %g' % (name, value) 3011730Sar4jc@virginia.edu elif printval.mode != 'F' and value > 1e6: 3111730Sar4jc@virginia.edu print '%s: %0.5e' % (name, value) 3211730Sar4jc@virginia.edu else: 3311730Sar4jc@virginia.edu print '%s: %f' % (name, value) 3411730Sar4jc@virginia.edu 3511730Sar4jc@virginia.eduprintval.mode = 'G' 3611730Sar4jc@virginia.edu 3711730Sar4jc@virginia.edudef unique(list): 3811730Sar4jc@virginia.edu set = {} 3911730Sar4jc@virginia.edu map(set.__setitem__, list, []) 4011730Sar4jc@virginia.edu return set.keys() 4111730Sar4jc@virginia.edu 4211730Sar4jc@virginia.edudef graphdata(runs, tag, label, value): 4311730Sar4jc@virginia.edu import info 4411730Sar4jc@virginia.edu configs = ['std', 'csa', 'ht1', 'ht4', 'htx', 'ocm', 'occ', 'ocp' ] 4511730Sar4jc@virginia.edu benchmarks = [ 'm', 's' ] 4611730Sar4jc@virginia.edu dmas = [ 'x', 'd', 'b' ] 4711730Sar4jc@virginia.edu caches = [ '1', '2', '3', '4', '5' ] 4811730Sar4jc@virginia.edu systems = [ 'M' ] 4911730Sar4jc@virginia.edu checkpoints = [ '1' ] 5011730Sar4jc@virginia.edu 5111730Sar4jc@virginia.edu names = [] 5211730Sar4jc@virginia.edu for bench in benchmarks: 5311730Sar4jc@virginia.edu for dma in dmas: 5411730Sar4jc@virginia.edu for cache in caches: 5511730Sar4jc@virginia.edu for sys in systems: 5611730Sar4jc@virginia.edu for cpt in checkpoints: 5711730Sar4jc@virginia.edu names.append([bench, dma, cache, sys, cpt]) 5811730Sar4jc@virginia.edu 5911730Sar4jc@virginia.edu for bench,dma,cache,sys,cpt in names: 6011730Sar4jc@virginia.edu base = '%s.%s.%s.%s.%s' % (bench, dma, cache, sys, cpt) 6111730Sar4jc@virginia.edu fname = '/n/ziff/z/binkertn/graph/data.ibm/%s.%s.dat' % (tag, base) 6211730Sar4jc@virginia.edu f = open(fname, 'w') 6311730Sar4jc@virginia.edu print >>f, '#set TITLE = %s' % base 6411730Sar4jc@virginia.edu print >>f, '#set xlbl = Configuration' 6511730Sar4jc@virginia.edu print >>f, '#set ylbl = %s' % label 6611730Sar4jc@virginia.edu print >>f, '#set sublabels = %s' % ' '.join(configs) 6711730Sar4jc@virginia.edu 6811730Sar4jc@virginia.edu for speed,freq in zip(['s', 'q'],['4GHz','10GHz']): 6911730Sar4jc@virginia.edu print >>f, '"%s"' % freq, 7011730Sar4jc@virginia.edu for conf in configs: 7111730Sar4jc@virginia.edu name = '%s.%s.%s.%s.%s.%s.%s' % (conf, bench, dma, speed, 7211730Sar4jc@virginia.edu cache, sys, cpt) 7311730Sar4jc@virginia.edu run = info.source.allRunNames[name] 7411730Sar4jc@virginia.edu info.display_run = run.run; 7511730Sar4jc@virginia.edu val = float(value) 7611730Sar4jc@virginia.edu if val == 1e300*1e300: 7711730Sar4jc@virginia.edu print >>f, 0.0, 7811730Sar4jc@virginia.edu else: 7911730Sar4jc@virginia.edu print >>f, "%f" % val, 8011730Sar4jc@virginia.edu print >>f 8111730Sar4jc@virginia.edu f.close() 8211730Sar4jc@virginia.edu 8311730Sar4jc@virginia.edudef printdata(runs, value, invert = False): 8411730Sar4jc@virginia.edu import info 8511730Sar4jc@virginia.edu for run in runs: 8611730Sar4jc@virginia.edu info.display_run = run.run; 8711730Sar4jc@virginia.edu val = float(value) 8811730Sar4jc@virginia.edu printval(run.name, val) 8911730Sar4jc@virginia.edu 9011730Sar4jc@virginia.educlass CommandException(Exception): 9111730Sar4jc@virginia.edu pass 9211730Sar4jc@virginia.edu 9311730Sar4jc@virginia.edudef commands(options, command, args): 9411730Sar4jc@virginia.edu if command == 'database': 9511730Sar4jc@virginia.edu if len(args) == 0: raise CommandException 9611730Sar4jc@virginia.edu 9711730Sar4jc@virginia.edu import dbinit 9811730Sar4jc@virginia.edu mydb = dbinit.MyDB(options) 9911730Sar4jc@virginia.edu 10011730Sar4jc@virginia.edu if args[0] == 'drop': 10111730Sar4jc@virginia.edu if len(args) > 2: raise CommandException 10211730Sar4jc@virginia.edu mydb.admin() 10311730Sar4jc@virginia.edu mydb.drop() 10411730Sar4jc@virginia.edu if len(args) == 2 and args[1] == 'init': 10511730Sar4jc@virginia.edu mydb.create() 10611730Sar4jc@virginia.edu mydb.connect() 10711730Sar4jc@virginia.edu mydb.populate() 10811730Sar4jc@virginia.edu mydb.close() 10911730Sar4jc@virginia.edu return 11011730Sar4jc@virginia.edu 11111730Sar4jc@virginia.edu if args[0] == 'init': 11211730Sar4jc@virginia.edu if len(args) > 1: raise CommandException 11311730Sar4jc@virginia.edu mydb.admin() 11411730Sar4jc@virginia.edu mydb.create() 11511730Sar4jc@virginia.edu mydb.connect() 11611730Sar4jc@virginia.edu mydb.populate() 11711730Sar4jc@virginia.edu mydb.close() 11811730Sar4jc@virginia.edu return 11911730Sar4jc@virginia.edu 12011730Sar4jc@virginia.edu if args[0] == 'clean': 12111730Sar4jc@virginia.edu if len(args) > 1: raise CommandException 12211730Sar4jc@virginia.edu mydb.connect() 12311730Sar4jc@virginia.edu mydb.clean() 12411730Sar4jc@virginia.edu return 12511730Sar4jc@virginia.edu 12611730Sar4jc@virginia.edu raise CommandException 12711730Sar4jc@virginia.edu 12811730Sar4jc@virginia.edu import db, info 12911730Sar4jc@virginia.edu info.source = db.Database() 13011730Sar4jc@virginia.edu info.source.host = options.host 13111730Sar4jc@virginia.edu info.source.db = options.db 13211730Sar4jc@virginia.edu info.source.passwd = options.passwd 13311730Sar4jc@virginia.edu info.source.user = options.user 13411730Sar4jc@virginia.edu info.source.connect() 13511730Sar4jc@virginia.edu info.source.update_dict(globals()) 13611730Sar4jc@virginia.edu 13711730Sar4jc@virginia.edu system = info.source.__dict__[options.system] 13811730Sar4jc@virginia.edu 13911730Sar4jc@virginia.edu if type(options.get) is str: 14011730Sar4jc@virginia.edu info.source.get = options.get 14111730Sar4jc@virginia.edu 14211730Sar4jc@virginia.edu if options.runs is None: 14311730Sar4jc@virginia.edu runs = info.source.allRuns 14411730Sar4jc@virginia.edu else: 14511730Sar4jc@virginia.edu rx = re.compile(options.runs) 14611730Sar4jc@virginia.edu runs = [] 14711730Sar4jc@virginia.edu for run in info.source.allRuns: 14811730Sar4jc@virginia.edu if rx.match(run.name): 14911730Sar4jc@virginia.edu runs.append(run) 15011730Sar4jc@virginia.edu 15111730Sar4jc@virginia.edu info.display_run = runs[0].run 15211730Sar4jc@virginia.edu 15311730Sar4jc@virginia.edu if command == 'runs': 15411730Sar4jc@virginia.edu user = None 15511730Sar4jc@virginia.edu opts, args = getopts(args, '-u') 15611730Sar4jc@virginia.edu if len(args): 15711730Sar4jc@virginia.edu raise CommandException 15811730Sar4jc@virginia.edu for o,a in opts: 15911730Sar4jc@virginia.edu if o == '-u': 16011730Sar4jc@virginia.edu user = a 16111730Sar4jc@virginia.edu info.source.listRuns(user) 16211730Sar4jc@virginia.edu return 16311730Sar4jc@virginia.edu 16411730Sar4jc@virginia.edu if command == 'stats': 16511730Sar4jc@virginia.edu if len(args) == 0: 16611730Sar4jc@virginia.edu info.source.listStats() 16711730Sar4jc@virginia.edu elif len(args) == 1: 16811730Sar4jc@virginia.edu info.source.listStats(args[0]) 16911730Sar4jc@virginia.edu else: 17011730Sar4jc@virginia.edu raise CommandException 17111730Sar4jc@virginia.edu 17211730Sar4jc@virginia.edu return 17311730Sar4jc@virginia.edu 17411730Sar4jc@virginia.edu if command == 'stat': 17511730Sar4jc@virginia.edu if len(args) != 1: 17611730Sar4jc@virginia.edu raise CommandException 17711730Sar4jc@virginia.edu 17811730Sar4jc@virginia.edu stats = info.source.getStat(args[0]) 17911730Sar4jc@virginia.edu for stat in stats: 18011730Sar4jc@virginia.edu if graph: 18111730Sar4jc@virginia.edu graphdata(runs, stat.name, stat.name, stat) 18211730Sar4jc@virginia.edu else: 18311730Sar4jc@virginia.edu print stat.name 18411730Sar4jc@virginia.edu printdata(runs, stat) 18511730Sar4jc@virginia.edu return 18611730Sar4jc@virginia.edu 18711730Sar4jc@virginia.edu if command == 'bins': 18811730Sar4jc@virginia.edu if len(args) == 0: 18911730Sar4jc@virginia.edu info.source.listBins() 19011730Sar4jc@virginia.edu elif len(args) == 1: 19111730Sar4jc@virginia.edu info.source.listBins(args[0]) 19211730Sar4jc@virginia.edu else: 19311730Sar4jc@virginia.edu raise CommandException 19411730Sar4jc@virginia.edu 19511730Sar4jc@virginia.edu return 19611730Sar4jc@virginia.edu 19711730Sar4jc@virginia.edu if command == 'formulas': 19811730Sar4jc@virginia.edu if len(args) == 0: 19911730Sar4jc@virginia.edu info.source.listFormulas() 20011730Sar4jc@virginia.edu elif len(args) == 1: 20111730Sar4jc@virginia.edu info.source.listFormulas(args[0]) 20211730Sar4jc@virginia.edu else: 20311730Sar4jc@virginia.edu raise CommandException 20411730Sar4jc@virginia.edu 20511730Sar4jc@virginia.edu return 20611730Sar4jc@virginia.edu 20711730Sar4jc@virginia.edu if command == 'samples': 20811730Sar4jc@virginia.edu if len(args): 20911730Sar4jc@virginia.edu raise CommandException 21011730Sar4jc@virginia.edu 21111730Sar4jc@virginia.edu info.source.listTicks(runs) 21211730Sar4jc@virginia.edu return 21311730Sar4jc@virginia.edu 21411730Sar4jc@virginia.edu if len(args): 21511730Sar4jc@virginia.edu raise CommandException 21611730Sar4jc@virginia.edu 21711730Sar4jc@virginia.edu if command == 'usertime': 21811730Sar4jc@virginia.edu import copy 21911730Sar4jc@virginia.edu kernel = copy.copy(system.full_cpu.numCycles) 22011730Sar4jc@virginia.edu kernel.bins = 'kernel' 22111730Sar4jc@virginia.edu 22211730Sar4jc@virginia.edu user = copy.copy(system.full_cpu.numCycles) 22311730Sar4jc@virginia.edu user.bins = 'user' 22411730Sar4jc@virginia.edu 22511730Sar4jc@virginia.edu if graph: 22611730Sar4jc@virginia.edu graphdata(runs, 'usertime', 'User Fraction', 22711730Sar4jc@virginia.edu user / system.full_cpu.numCycles) 22811730Sar4jc@virginia.edu else: 22911730Sar4jc@virginia.edu printdata(runs, user / system.full_cpu.numCycles) 23011730Sar4jc@virginia.edu return 23111730Sar4jc@virginia.edu 23211730Sar4jc@virginia.edu if command == 'ticks': 23311730Sar4jc@virginia.edu if binned: 23411730Sar4jc@virginia.edu print 'kernel ticks' 23511730Sar4jc@virginia.edu system.full_cpu.numCycles.bins = 'kernel' 23611730Sar4jc@virginia.edu printdata(runs, system.full_cpu.numCycles) 23711730Sar4jc@virginia.edu 23811730Sar4jc@virginia.edu print 'idle ticks' 23911730Sar4jc@virginia.edu system.full_cpu.numCycles.bins = 'idle' 24011730Sar4jc@virginia.edu printdata(runs, system.full_cpu.numCycles) 24111730Sar4jc@virginia.edu 24211730Sar4jc@virginia.edu print 'user ticks' 24311730Sar4jc@virginia.edu system.full_cpu.numCycles.bins = 'user' 24411730Sar4jc@virginia.edu printdata(runs, system.full_cpu.numCycles) 24511730Sar4jc@virginia.edu 24611730Sar4jc@virginia.edu print 'total ticks' 24711730Sar4jc@virginia.edu 24811730Sar4jc@virginia.edu system.full_cpu.numCycles.bins = None 24911730Sar4jc@virginia.edu printdata(runs, system.full_cpu.numCycles) 25011730Sar4jc@virginia.edu return 25111730Sar4jc@virginia.edu 25211730Sar4jc@virginia.edu if command == 'packets': 25311730Sar4jc@virginia.edu packets = system.tsunami.nsgige.rxPackets 25411730Sar4jc@virginia.edu if graph: 25511730Sar4jc@virginia.edu graphdata(runs, 'packets', 'Packets', packets) 25611730Sar4jc@virginia.edu else: 25711730Sar4jc@virginia.edu printdata(runs, packets) 25811730Sar4jc@virginia.edu return 25911730Sar4jc@virginia.edu 26011730Sar4jc@virginia.edu if command == 'ppt' or command == 'tpp': 26111730Sar4jc@virginia.edu ppt = system.tsunami.nsgige.rxPackets / sim_ticks 26211730Sar4jc@virginia.edu printdata(runs, ppt, command == 'tpp') 26311730Sar4jc@virginia.edu return 26411730Sar4jc@virginia.edu 26511730Sar4jc@virginia.edu if command == 'pps': 26611730Sar4jc@virginia.edu pps = system.tsunami.nsgige.rxPackets / sim_seconds 26711730Sar4jc@virginia.edu if graph: 26811730Sar4jc@virginia.edu graphdata(runs, 'pps', 'Packets/s', pps) 26911730Sar4jc@virginia.edu else: 27011730Sar4jc@virginia.edu printdata(runs, pps) 27111730Sar4jc@virginia.edu return 27211730Sar4jc@virginia.edu 27311730Sar4jc@virginia.edu if command == 'bpt' or command == 'tpb': 27411730Sar4jc@virginia.edu bytes = system.tsunami.nsgige.rxBytes + system.tsunami.nsgige.txBytes 27511730Sar4jc@virginia.edu bpt = bytes / sim_ticks * 8 27611730Sar4jc@virginia.edu if graph: 27711730Sar4jc@virginia.edu graphdata(runs, 'bpt', 'bps / Hz', bpt) 27811730Sar4jc@virginia.edu else: 27911730Sar4jc@virginia.edu printdata(runs, bpt, command == 'tpb') 28011730Sar4jc@virginia.edu return 28111730Sar4jc@virginia.edu 28211730Sar4jc@virginia.edu if command == 'bptb' or command == 'tpbb': 28311730Sar4jc@virginia.edu bytes = system.tsunami.nsgige.rxBytes + system.tsunami.nsgige.txBytes 28411730Sar4jc@virginia.edu 28511730Sar4jc@virginia.edu print 'kernel stats' 28611730Sar4jc@virginia.edu bytes.bins = 'kernel' 28711730Sar4jc@virginia.edu printdata(runs, bytes / ticks) 28811730Sar4jc@virginia.edu 28911730Sar4jc@virginia.edu print 'idle stats' 29011730Sar4jc@virginia.edu bytes.bins = 'idle' 29111730Sar4jc@virginia.edu printdata(runs, bytes / ticks) 29211730Sar4jc@virginia.edu 29311730Sar4jc@virginia.edu print 'user stats' 29411730Sar4jc@virginia.edu bytes.bins = 'user' 29511730Sar4jc@virginia.edu printdata(runs, bytes / ticks) 29611730Sar4jc@virginia.edu 29711730Sar4jc@virginia.edu return 29811730Sar4jc@virginia.edu 29911730Sar4jc@virginia.edu if command == 'bytes': 30011730Sar4jc@virginia.edu stat = system.tsunami.nsgige.rxBytes + system.tsunami.nsgige.txBytes 30111730Sar4jc@virginia.edu 30211730Sar4jc@virginia.edu if binned: 30311730Sar4jc@virginia.edu print '%s kernel stats' % stat.name 30411730Sar4jc@virginia.edu stat.bins = 'kernel' 30511730Sar4jc@virginia.edu printdata(runs, stat) 30611730Sar4jc@virginia.edu 30711730Sar4jc@virginia.edu print '%s idle stats' % stat.name 30811730Sar4jc@virginia.edu stat.bins = 'idle' 30911730Sar4jc@virginia.edu printdata(runs, stat) 31011730Sar4jc@virginia.edu 31111730Sar4jc@virginia.edu print '%s user stats' % stat.name 31211730Sar4jc@virginia.edu stat.bins = 'user' 31311730Sar4jc@virginia.edu printdata(runs, stat) 31411730Sar4jc@virginia.edu 31511730Sar4jc@virginia.edu print '%s total stats' % stat.name 31611730Sar4jc@virginia.edu stat.bins = None 31711730Sar4jc@virginia.edu 31811730Sar4jc@virginia.edu printdata(runs, stat) 31911730Sar4jc@virginia.edu return 32011730Sar4jc@virginia.edu 32111730Sar4jc@virginia.edu if command == 'rxbps': 32211730Sar4jc@virginia.edu gbps = system.tsunami.nsgige.rxBandwidth / 1e9 32311730Sar4jc@virginia.edu if graph: 32411730Sar4jc@virginia.edu graphdata(runs, 'rxbps', 'Bandwidth (Gbps)', gbps) 32511730Sar4jc@virginia.edu else: 32611730Sar4jc@virginia.edu printdata(runs, gbps) 32711730Sar4jc@virginia.edu return 32811730Sar4jc@virginia.edu 32911730Sar4jc@virginia.edu if command == 'txbps': 33011730Sar4jc@virginia.edu gbps = system.tsunami.nsgige.txBandwidth / 1e9 33111730Sar4jc@virginia.edu if graph: 33211730Sar4jc@virginia.edu graphdata(runs, 'txbps', 'Bandwidth (Gbps)', gbps) 33311730Sar4jc@virginia.edu else: 33411730Sar4jc@virginia.edu printdata(runs, gbps) 33511730Sar4jc@virginia.edu return 33611730Sar4jc@virginia.edu 33711730Sar4jc@virginia.edu if command == 'bps': 33811730Sar4jc@virginia.edu rxbps = system.tsunami.nsgige.rxBandwidth 33911730Sar4jc@virginia.edu txbps = system.tsunami.nsgige.txBandwidth 34011730Sar4jc@virginia.edu gbps = (rxbps + txbps) / 1e9 34111730Sar4jc@virginia.edu if graph: 34211730Sar4jc@virginia.edu graphdata(runs, 'bps', 'Bandwidth (Gbps)', gbps) 34311730Sar4jc@virginia.edu else: 34411730Sar4jc@virginia.edu printdata(runs, gbps) 34511730Sar4jc@virginia.edu return 34611730Sar4jc@virginia.edu 34711730Sar4jc@virginia.edu if command == 'misses': 34811730Sar4jc@virginia.edu stat = system.L3.overall_mshr_misses 34911730Sar4jc@virginia.edu if binned: 35011730Sar4jc@virginia.edu print '%s kernel stats' % stat.name 35111730Sar4jc@virginia.edu stat.bins = 'kernel' 35211730Sar4jc@virginia.edu printdata(runs, stat) 35311730Sar4jc@virginia.edu 35411730Sar4jc@virginia.edu print '%s idle stats' % stat.name 35511730Sar4jc@virginia.edu stat.bins = 'idle' 35611730Sar4jc@virginia.edu printdata(runs, stat) 35711730Sar4jc@virginia.edu 35811730Sar4jc@virginia.edu print '%s user stats' % stat.name 35911730Sar4jc@virginia.edu stat.bins = 'user' 36011730Sar4jc@virginia.edu printdata(runs, stat) 36111730Sar4jc@virginia.edu 36211730Sar4jc@virginia.edu print '%s total stats' % stat.name 36311730Sar4jc@virginia.edu 36411730Sar4jc@virginia.edu stat.bins = None 36511730Sar4jc@virginia.edu if graph: 36611730Sar4jc@virginia.edu graphdata(runs, 'misses', 'Overall MSHR Misses', stat) 36711730Sar4jc@virginia.edu else: 36811730Sar4jc@virginia.edu printdata(runs, stat) 36911730Sar4jc@virginia.edu return 37011730Sar4jc@virginia.edu 37111730Sar4jc@virginia.edu if command == 'mpkb': 37211730Sar4jc@virginia.edu misses = system.L3.overall_mshr_misses 37311730Sar4jc@virginia.edu rxbytes = system.tsunami.nsgige.rxBytes 37411730Sar4jc@virginia.edu txbytes = system.tsunami.nsgige.txBytes 37511730Sar4jc@virginia.edu 37611730Sar4jc@virginia.edu if binned: 37711730Sar4jc@virginia.edu print 'mpkb kernel stats' 37811730Sar4jc@virginia.edu misses.bins = 'kernel' 37911730Sar4jc@virginia.edu mpkb = misses / ((rxbytes + txbytes) / 1024) 38011730Sar4jc@virginia.edu printdata(runs, mpkb) 38111730Sar4jc@virginia.edu 38211730Sar4jc@virginia.edu print 'mpkb idle stats' 38311730Sar4jc@virginia.edu misses.bins = 'idle' 38411730Sar4jc@virginia.edu mpkb = misses / ((rxbytes + txbytes) / 1024) 38511730Sar4jc@virginia.edu printdata(runs, mpkb) 38611730Sar4jc@virginia.edu 38711730Sar4jc@virginia.edu print 'mpkb user stats' 38811730Sar4jc@virginia.edu misses.bins = 'user' 38911730Sar4jc@virginia.edu mpkb = misses / ((rxbytes + txbytes) / 1024) 39011730Sar4jc@virginia.edu printdata(runs, mpkb) 39111730Sar4jc@virginia.edu 39211730Sar4jc@virginia.edu print 'mpkb total stats' 39311730Sar4jc@virginia.edu 39411730Sar4jc@virginia.edu mpkb = misses / ((rxbytes + txbytes) / 1024) 39511730Sar4jc@virginia.edu misses.bins = None 39611730Sar4jc@virginia.edu if graph: 39711730Sar4jc@virginia.edu graphdata(runs, 'mpkb', 'Misses / KB', mpkb) 39811730Sar4jc@virginia.edu else: 39911730Sar4jc@virginia.edu printdata(runs, mpkb) 40011730Sar4jc@virginia.edu return 40111730Sar4jc@virginia.edu 40211730Sar4jc@virginia.edu if command == 'execute': 40311730Sar4jc@virginia.edu printdata(runs, system.full_cpu.ISSUE__count) 40411730Sar4jc@virginia.edu return 40511730Sar4jc@virginia.edu 40611730Sar4jc@virginia.edu if command == 'commit': 40711730Sar4jc@virginia.edu printdata(runs, system.full_cpu.COM__count) 40811730Sar4jc@virginia.edu return 40911730Sar4jc@virginia.edu 41011730Sar4jc@virginia.edu if command == 'fetch': 41111730Sar4jc@virginia.edu printdata(runs, system.full_cpu.FETCH__count) 41211730Sar4jc@virginia.edu return 41311730Sar4jc@virginia.edu 41411730Sar4jc@virginia.edu if command == 'rxbpp': 41511730Sar4jc@virginia.edu bpp = system.tsunami.nsgige.rxBytes / system.tsunami.nsgige.rxPackets 41611730Sar4jc@virginia.edu printdata(run, 8 * bpp) 41711730Sar4jc@virginia.edu return 41811730Sar4jc@virginia.edu 41911730Sar4jc@virginia.edu if command == 'txbpp': 42011730Sar4jc@virginia.edu bpp = system.tsunami.nsgige.txBytes / system.tsunami.nsgige.txPackets 42111730Sar4jc@virginia.edu printdata(run, 8 * bpp) 42211730Sar4jc@virginia.edu return 42311730Sar4jc@virginia.edu 42411730Sar4jc@virginia.edu raise CommandException 42511730Sar4jc@virginia.edu 42611730Sar4jc@virginia.edu 42711730Sar4jc@virginia.edugraph = False 42811730Sar4jc@virginia.edubinned = False 42911730Sar4jc@virginia.edu 43011730Sar4jc@virginia.educlass Options: pass 43111730Sar4jc@virginia.edu 43211730Sar4jc@virginia.eduif __name__ == '__main__': 43311730Sar4jc@virginia.edu import getpass 43411730Sar4jc@virginia.edu 43511730Sar4jc@virginia.edu options = Options() 43611730Sar4jc@virginia.edu options.host = 'zizzer.pool' 43711730Sar4jc@virginia.edu options.db = None 43811730Sar4jc@virginia.edu options.passwd = '' 43911730Sar4jc@virginia.edu options.user = getpass.getuser() 44011730Sar4jc@virginia.edu options.runs = None 44111730Sar4jc@virginia.edu options.system = 'client' 44211730Sar4jc@virginia.edu options.get = None 44311730Sar4jc@virginia.edu 44411730Sar4jc@virginia.edu opts, args = getopts(sys.argv[1:], '-BEFGd:g:h:pr:s:u:') 44511730Sar4jc@virginia.edu for o,a in opts: 44611730Sar4jc@virginia.edu if o == '-B': 44711730Sar4jc@virginia.edu options.binned = True 44811730Sar4jc@virginia.edu if o == '-E': 44911730Sar4jc@virginia.edu printval.mode = 'E' 45011730Sar4jc@virginia.edu if o == '-F': 45111730Sar4jc@virginia.edu printval.mode = 'F' 45211730Sar4jc@virginia.edu if o == '-G': 45311730Sar4jc@virginia.edu options.graph = True; 45411730Sar4jc@virginia.edu if o == '-d': 45511730Sar4jc@virginia.edu options.db = a 45611730Sar4jc@virginia.edu if o == '-g': 45711730Sar4jc@virginia.edu options.get = a 45811730Sar4jc@virginia.edu if o == '-h': 45911730Sar4jc@virginia.edu options.host = a 46011730Sar4jc@virginia.edu if o == '-p': 46111730Sar4jc@virginia.edu options.passwd = getpass.getpass() 46211730Sar4jc@virginia.edu if o == '-r': 46311730Sar4jc@virginia.edu options.runs = a 46411730Sar4jc@virginia.edu if o == '-u': 46511730Sar4jc@virginia.edu options.user = a 46611730Sar4jc@virginia.edu if o == '-s': 46711730Sar4jc@virginia.edu options.system = a 46811730Sar4jc@virginia.edu 46911730Sar4jc@virginia.edu if len(args) == 0: 47011730Sar4jc@virginia.edu usage() 47111730Sar4jc@virginia.edu 47211730Sar4jc@virginia.edu command = args[0] 47311730Sar4jc@virginia.edu args = args[1:] 47411730Sar4jc@virginia.edu 47511730Sar4jc@virginia.edu try: 47611730Sar4jc@virginia.edu commands(options, command, args) 47711730Sar4jc@virginia.edu except CommandException: 47811730Sar4jc@virginia.edu usage() 47911730Sar4jc@virginia.edu