summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristopher Kenna <cjk@cs.unc.edu>2011-10-11 21:55:51 -0400
committerChristopher Kenna <cjk@cs.unc.edu>2011-10-11 21:55:51 -0400
commit6e9f8b2978245139f75ebc9b52999efe4ec6fe3e (patch)
tree911867a1f247faae67bc8ca48f470bbcdebf7e72
parentdf393b378983cf925ab9145d6eb3e773a8aee50c (diff)
Splitting script.
-rwxr-xr-xsplit4
-rwxr-xr-xsplit_schedulers_overheads.py59
2 files changed, 61 insertions, 2 deletions
diff --git a/split b/split
index dc5c15c..123ea5c 100755
--- a/split
+++ b/split
@@ -2,8 +2,8 @@
2 2
3SPLITTER=ft2csv 3SPLITTER=ft2csv
4 4
5EVENTS="SCHED SCHED2 TICK CXS RELEASE RELEASE_LATENCY" 5EVENTS="SCHED SCHED2 RELEASE LVLA_RELEASE"
6BE_EVENTS="SEND_RESCHED" 6BE_EVENTS=""
7 7
8OPTS="-r" 8OPTS="-r"
9EXT=bin 9EXT=bin
diff --git a/split_schedulers_overheads.py b/split_schedulers_overheads.py
new file mode 100755
index 0000000..d478f80
--- /dev/null
+++ b/split_schedulers_overheads.py
@@ -0,0 +1,59 @@
1#!/usr/bin/env python
2
3import sys
4
5from operator import itemgetter
6
7COLS = {'scheduler': 0, 'overhead_type': 1, 'ts_size': 2}
8
9
10def load_csv_as_text(fname):
11 """Loads a CSV file but does not include comments."""
12 a = []
13 with open(fname, 'r') as f:
14 for line in f:
15 if line[0] != '#':
16 a.append(line.split(','))
17 return a
18
19def uniques_in_col(data, col):
20 """Get the unique items in a column."""
21 s = set()
22 for row in data:
23 s.add(row[col])
24 return s
25
26def write_file(data, scheduler, o_type):
27 """Pick out the specified scheduler and overhead type from data and write a
28 file.
29
30 """
31
32 sched_col = COLS['scheduler']
33 overhead_col = COLS['overhead_type']
34 sched_nice = scheduler.strip()
35 overhead_nice = o_type.strip()
36 to_write = []
37
38 for row in data:
39 if row[sched_col] == scheduler and row[overhead_col] == o_type:
40 to_write.append(row)
41 if len(to_write) < 1:
42 print >>sys.stderr, "No rows? {0}, {1}".format(sched_nice, overhead_nice)
43 else:
44 f = open('scheduler={0}_overhead={1}.csv'.format(sched_nice, overhead_nice), 'w')
45 for row in sorted(to_write, key=lambda r: int(r[COLS['ts_size']])):
46 f.write(','.join(row))
47 f.close()
48
49def main():
50 data = load_csv_as_text(sys.argv[1])
51 schedulers = uniques_in_col(data, COLS['scheduler'])
52 overhead_types = uniques_in_col(data, COLS['overhead_type'])
53
54 for scheduler in schedulers:
55 for overhead_type in overhead_types:
56 write_file(data, scheduler, overhead_type)
57
58if __name__ == '__main__':
59 main()