diff options
author | Christopher Kenna <cjk@cs.unc.edu> | 2011-10-11 21:55:51 -0400 |
---|---|---|
committer | Christopher Kenna <cjk@cs.unc.edu> | 2011-10-11 21:55:51 -0400 |
commit | 6e9f8b2978245139f75ebc9b52999efe4ec6fe3e (patch) | |
tree | 911867a1f247faae67bc8ca48f470bbcdebf7e72 | |
parent | df393b378983cf925ab9145d6eb3e773a8aee50c (diff) |
Splitting script.
-rwxr-xr-x | split | 4 | ||||
-rwxr-xr-x | split_schedulers_overheads.py | 59 |
2 files changed, 61 insertions, 2 deletions
@@ -2,8 +2,8 @@ | |||
2 | 2 | ||
3 | SPLITTER=ft2csv | 3 | SPLITTER=ft2csv |
4 | 4 | ||
5 | EVENTS="SCHED SCHED2 TICK CXS RELEASE RELEASE_LATENCY" | 5 | EVENTS="SCHED SCHED2 RELEASE LVLA_RELEASE" |
6 | BE_EVENTS="SEND_RESCHED" | 6 | BE_EVENTS="" |
7 | 7 | ||
8 | OPTS="-r" | 8 | OPTS="-r" |
9 | EXT=bin | 9 | EXT=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 | |||
3 | import sys | ||
4 | |||
5 | from operator import itemgetter | ||
6 | |||
7 | COLS = {'scheduler': 0, 'overhead_type': 1, 'ts_size': 2} | ||
8 | |||
9 | |||
10 | def 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 | |||
19 | def 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 | |||
26 | def 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 | |||
49 | def 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 | |||
58 | if __name__ == '__main__': | ||
59 | main() | ||