From b0a059107c1a94be6b262d0d21b95411059e19b6 Mon Sep 17 00:00:00 2001 From: Christopher Kenna Date: Tue, 11 Oct 2011 23:35:52 -0400 Subject: add RTAS12 plotting script --- plot_rtas12.py | 85 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100755 plot_rtas12.py (limited to 'plot_rtas12.py') diff --git a/plot_rtas12.py b/plot_rtas12.py new file mode 100755 index 0000000..abfa8b2 --- /dev/null +++ b/plot_rtas12.py @@ -0,0 +1,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() -- cgit v1.2.2