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