aboutsummaryrefslogtreecommitdiffstats
path: root/plot_rtas12.py
blob: abfa8b20727514211338b00970ffc775144f1432 (plain) (blame)
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
#!/usr/bin/env python

import sys

from os.path import basename
from os import listdir

from plot import decode, Plot
from gnuplot import curve

SCHEDULERS = ['MC', 'MC-MERGE', 'MC-MERGE-REDIR']
OVERHEADS = ['SCHED', 'RELEASE', 'LVLA-RELEASE']
COLS = {'plugin':       0,
        'overhead':     1,
        'n_tasks':      2,
        'samples':      3,
        'filtered':     4,
        'max':          5,
        'avg':          6,
        'min':          7,
        'med':          8,
        'std':          9,
        'var':          10,
        'iqr_max':      11,
        'iqr_min':      12}


def usage(msg):
    print >>sys.stderr, msg
    sys.exit(1)

def get_csv_files(directory):
    a = []
    for f in listdir(directory):
        bn = basename(f)
        if f.startswith('scheduler') and f.endswith('.csv'):
            a.append(f)
    return a

def gnuplot_col(col_name):
    # gnuplot is 1-indexed
    return 1 + COLS[col_name]

def plot_release(data_dir):
    p = Plot()
    p.output = '{0}/overhead=RELEASE.pdf'.format(data_dir)
    p.format = 'pdf'
    p.key = 'top left'

    for rel_type in ['RELEASE', 'LVLA-RELEASE']:
        for sched in SCHEDULERS:
            fname = '{0}/scheduler={1}_overhead={2}.csv'.format(data_dir, sched, rel_type)
            p.curves += [curve(fname=fname, xcol=gnuplot_col('n_tasks'),
                ycol=gnuplot_col('avg'), title='{0} {1}'.format(sched, rel_type))]
    p.xlabel = 'number of tasks'
    p.ylabel = 'overhead (microseconds)'
    p.title = 'release overheads'
    p.gnuplot_exec()

def plot_sched(data_dir):
    p = Plot()
    p.output = '{0}/overhead=SCHED.pdf'.format(data_dir)
    p.format = 'pdf'
    p.key = 'top left'

    for sched in SCHEDULERS:
        fname = '{0}/scheduler={1}_overhead=SCHED.csv'.format(data_dir, sched)
        p.curves += [curve(fname=fname, xcol=gnuplot_col('n_tasks'),
            ycol=gnuplot_col('avg'), title='{0}'.format(sched))]
    p.xlabel = 'number of tasks'
    p.ylabel = 'overhead (microseconds)'
    p.title = 'scheduling overheads'
    p.gnuplot_exec()


def main():
    if len(sys.argv) < 2:
        usage('missing args')

    data_dir = sys.argv[1]
    plot_sched(data_dir)
    plot_release(data_dir)
    
if __name__ == '__main__':
    main()