From: Ali Saidi Date: Fri, 14 Jan 2005 22:50:36 +0000 (-0500) Subject: added stats code to check stability X-Git-Tag: m5_1.0_tutorial~110^2~7 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=dfecc891509d318ffaefee95b6c6a1ec83b6f28d;p=gem5.git added stats code to check stability util/stats/db.py: added working listticks (for printing) and retticks(for using in python) code util/stats/stats.py: added stability function that checks if all samples are within 10% of mean. --HG-- extra : convert_revision : 7eb1714db75e456f248fe7cae73db1c57642947d --- diff --git a/util/stats/db.py b/util/stats/db.py index 495cdb5b5..ed5d10bc2 100644 --- a/util/stats/db.py +++ b/util/stats/db.py @@ -207,16 +207,43 @@ class Database(object): # Name: listTicks # Desc: Prints all samples for a given run - def listTicks(self, run=None): + def listTicks(self, runs=None): print "tick" print "----------------------------------------" - sql = 'select distinct dt_tick from data where dt_stat=1950' - #if run != None: - # sql += ' where dt_run=%d' % run + sql = 'select distinct dt_tick from data where dt_stat=1180 and (' + if runs != None: + first = True + for run in runs: + if first: + # sql += ' where' + first = False + else: + sql += ' or' + sql += ' dt_run=%s' % run.run + sql += ')' self.query(sql) for r in self.cursor.fetchall(): print r[0] + # Name: retTicks + # Desc: Prints all samples for a given run + def retTicks(self, runs=None): + sql = 'select distinct dt_tick from data where dt_stat=1180 and (' + if runs != None: + first = True + for run in runs: + if first: + first = False + else: + sql += ' or' + sql += ' dt_run=%s' % run.run + sql += ')' + self.query(sql) + ret = [] + for r in self.cursor.fetchall(): + ret.append(r[0]) + return ret + # Name: liststats # Desc: Prints all statistics that appear in the database, # the optional argument is a regular expression that can diff --git a/util/stats/stats.py b/util/stats/stats.py index b2b0ff8ad..7f3761a92 100755 --- a/util/stats/stats.py +++ b/util/stats/stats.py @@ -249,6 +249,37 @@ def commands(options, command, args): info.source.listRuns(user) return + if command == 'stability': + stats = info.source.getStat(args[0]) + info.source.get = "avg" + + #loop through all the stats selected + for stat in stats: + avg = float(stat) + + #loop through all the selected runs + for run in runs: + info.display_run = run.run; + #print run.name + #print avg + runTicks = info.source.retTicks([ run ]) + #throw away the first one, it's 0 + runTicks.pop(0) + + #loop through all the various ticks for each run + for tick in runTicks: + stat.ticks = str(tick) + val = float(stat) + if (val < (avg * .9)) or (val > (avg * 1.1)): + print '%s:%s is %f, which is more than 10%% of the'\ + 'mean %f' % (run.name, stat.name, stat, avg) + + + + + return + + if command == 'stats': if len(args) == 0: info.source.listStats()