1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
#!/usr/bin/env python
import sqlite3
from numpy import array, mean
from optparse import OptionParser
SQLITE_DB_GLOBAL_PATH = "/root/db_results/"
modes_prepares_statement = "select distinct(id) from workload_specs;"
metric_prepared_statement = """SELECT label as workload, metric, value, units, wsr.spec_id
FROM metrics AS m INNER JOIN (
SELECT ws.OID as spec_oid, ws.id as spec_id, uuid, label
FROM workload_specs AS ws INNER JOIN runs AS r ON ws.run_oid = r.OID
) AS wsr ON wsr.spec_oid = m.spec_oid
WHERE metric = ? AND spec_id = ?;"""
metrics_common = ['execution_time', 'arm,vexpress-energy A7 Jcore', 'arm,vexpress-energy A15 Jcore']
metrics_bbench = ['Performance']
if __name__ == '__main__':
usage = "usage: %prog [OPTIONS]"
parser = OptionParser(usage=usage)
parser.add_option("-n", "--job-name", dest="job_name",
help="Job name to be used as db name in agenda file")
(options, args) = parser.parse_args()
if not options.job_name:
parser.error("Job name missing")
conn = sqlite3.connect(SQLITE_DB_GLOBAL_PATH + options.job_name + ".db")
modes_cursor = conn.cursor()
for mode_row in modes_cursor.execute(modes_prepares_statement):
if 'bbench' in mode_row[0]:
metrics_common = metrics_common + metrics_bbench
for metric in metrics_common:
params = (metric, mode_row[0])
metric_values = []
metric_cursor = conn.cursor()
units = ""
for metric_row in metric_cursor.execute(metric_prepared_statement, params):
metric_values.append(float(metric_row[2]))
units = metric_row[3]
print "%s_%s Measurement:%s Units:%s Result:pass" % (
mode_row[0],
metric.replace(" ", "_").replace(",", "_"),
mean(array(metric_values)),
units)
metric_cursor.close()
modes_cursor.close()
conn.close()
|