From 3754940bf865349a583fce2ad48acd9e31c8f3bb Mon Sep 17 00:00:00 2001 From: "Bjoern B. Brandenburg" Date: Mon, 24 Jan 2011 12:47:11 -0500 Subject: abuse --wide in semi-part wsched plots Shift to the large WSS range if --wide is provided. --- plot.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/plot.py b/plot.py index 5f0df59..353ae75 100755 --- a/plot.py +++ b/plot.py @@ -594,11 +594,18 @@ class SchedPlotter(defapp.App): xcol = 1 p.xlabel = "working set size (WSS)" p.ylabel = "weighted schedulability" - p.xticks = (0, 64) - p.xrange = (-1, 1025) - if self.options.alternate: + if self.options.wide: + # tail plot WSS > 1024 + p.xticks = (0, 256) + p.xrange = (1023, 3073) + elif self.options.alternate: + # NPS-F comparison p.xrange = (-1, 257) p.xticks = (0, 32) + else: + # regular plot + p.xticks = (0, 64) + p.xrange = (-1, 1025) else: self.err("What kind of semipart experiment is this?") return -- cgit v1.2.2 From 3dec38c73bceeb13f0ee6e19a04983c7c43d8106 Mon Sep 17 00:00:00 2001 From: "Bjoern B. Brandenburg" Date: Sun, 10 Apr 2011 13:20:04 -0400 Subject: Allow override of standard split tag. To provide more meaningful file names. --- wsched.py | 1 + 1 file changed, 1 insertion(+) diff --git a/wsched.py b/wsched.py index 8214bf0..4aa2f74 100755 --- a/wsched.py +++ b/wsched.py @@ -83,6 +83,7 @@ options = [ o(None, '--no-comments', action='store_true', dest='no_comments'), o('-w', '--col-width', action='store', type='int', dest='colwidth'), o(None, '--split', action='store_true', dest='want_split'), + o('-f', '--key-format', action='store', dest='key_fmt'), ] defaults = { -- cgit v1.2.2 From d7d9c89f404468dd9fe9c6eae70496fe60367ff2 Mon Sep 17 00:00:00 2001 From: "Bjoern B. Brandenburg" Date: Sun, 10 Apr 2011 13:20:31 -0400 Subject: Add support for EMSOFT'11 experiment plotting. --- plot.py | 90 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) diff --git a/plot.py b/plot.py index 353ae75..c618b1c 100755 --- a/plot.py +++ b/plot.py @@ -673,6 +673,95 @@ class SchedPlotter(defapp.App): p.gnuplot_exec() + def plot_mpcp_omlp(self, tmpfile, name, conf): + curves = [ + ('MPCP (virtual spinning)', 5), + ('MPCP (suspension-based)', 4), + ('OMLP (mutex, c=1)', 6), + ] + + p = self.make_plot(name) + + if 'ucap' in conf and 'pacc' in conf: + xcol = 1 + p.xlabel = 'resource probability' + p.xrange = (0, 1) + tinfo = ' utilization=%s request-probability=%s' % \ + (conf['ucap'], conf['pacc']) + elif 'ucap' in conf and 'pres' in conf: + xcol = 2 + p.xlabel = 'request probability' + p.xrange = (0, 0.8) + tinfo = ' utilization=%s resource-probability=%s' % \ + (conf['ucap'], conf['pres']) + else: + xcol = 3 + p.xlabel = 'per-processor utilization (prior to blocking accounting)' + p.xrange = (0.2, 1) + tinfo = ' request-probability=%s resource-probability=%s' % \ + (conf['pacc'], conf['pres']) + + pinfo = " m=%s" % conf['m'] + + p.title = scenario_heading(conf, True) + r'\n' + tinfo + pinfo + + p.ylabel = "ratio of schedulable task sets" + p.yrange = (-0.05, 1.05) + p.yticks = (0, 0.1) + p.xticks = (0, 0.1) + + p.curves += [curve(fname=tmpfile, xcol=xcol, ycol=idx, title=t) + for (t, idx) in curves] + + #### Styling. + + if not self.setup_png(p): + p.rounded_caps = True + p.font = 'Helvetica' + + if self.options.paper: + p.default_style = 'lines lw 2.5' + p.font_size = '5pt' + p.size = ('8.5cm', '5.25cm') + p.monochrome = False + p.dashed_lines = False + if not self.options.alternate: + p.key ='off' + p.size = ('9cm', '4.0cm') + p.yticks = (0, 0.1) + p.key = 'bottom left' + p.default_style = 'linespoints lw 3.5' + elif self.options.slides: + p.dashed_lines = False + p.monochrome = False + p.rounded_caps = True + p.default_style = 'lines lw 10' + p.key = 'below' + elif self.options.appendix: + # for the appendix + p.font_size = '8' + p.size = ('17cm', '9cm') + p.key = 'below' + p.monochrome = False + p.dashed_lines = False + p.default_style = 'linespoints lw 3.5' + else: + p.font_size = '10' + p.size = ('20cm', '10cm') + p.monochrome = False + p.dashed_lines = False + p.key = 'below' + p.default_style = 'linespoints lw 1' + + if self.options.smooth: + p.default_style += " smooth bezier" + + if self.options.save_script: + p.gnuplot_save(p.output + '.plot') + else: + p.gnuplot_exec() + + def plot_file(self, datafile): bname = basename(datafile) name, ext = splitext(bname) @@ -698,6 +787,7 @@ class SchedPlotter(defapp.App): 'rtss09' : self.plot_rtss09_split if self.options.split else self.plot_rtss09, 'ospert10' : self.plot_ospert10, 'eurosys11' : self.plot_semipart, + 'emsoft11-part' : self.plot_mpcp_omlp, } if self.options.experiment: -- cgit v1.2.2 From 68a8a52a44372869404ee0950ddb2c209b25a155 Mon Sep 17 00:00:00 2001 From: "Bjoern B. Brandenburg" Date: Sun, 10 Apr 2011 13:41:32 -0400 Subject: Use custom linestyles for ECRTS11 experiments. --- gnuplot.py | 4 ++++ plot.py | 32 +++++++++++++++++++++++--------- 2 files changed, 27 insertions(+), 9 deletions(-) diff --git a/gnuplot.py b/gnuplot.py index b0db2c9..ca1e2ff 100755 --- a/gnuplot.py +++ b/gnuplot.py @@ -123,6 +123,7 @@ class Plot(object): self.curves = [] self.default_style = None # for plotted curves + self.line_styles = [] def gnuplot_commands(self, cmd_buf=None): if cmd_buf: @@ -195,6 +196,9 @@ class Plot(object): if logscale: g("set logscale %s" % logscale) + for ls in self.line_styles: + g("set style line %d %s" % (ls[0], ls[1])) + plots = [c.gnuplot_cmd(self.default_style) for c in self.curves] if plots: g("plot " + ", ".join(plots)) diff --git a/plot.py b/plot.py index c618b1c..ba67ff2 100755 --- a/plot.py +++ b/plot.py @@ -541,12 +541,12 @@ class SchedPlotter(defapp.App): npsf_comp = [ ('NPS-F (idle, delta=1)', 9), - ('NPS-F (idle, delta=4)', 10), - ('NPS-F (load, delta=1)', 7), ('C-NPS-F (idle, delta=1)', 13), + ('NPS-F (idle, delta=4)', 10), ('C-NPS-F (idle, delta=4)', 14), - ('NPS-F (load, delta=4)', 8), + ('NPS-F (load, delta=1)', 7), ('C-NPS-F (load, delta=1)', 11), + ('NPS-F (load, delta=4)', 8), ('C-NPS-F (load, delta=4)', 12), ] @@ -611,17 +611,32 @@ class SchedPlotter(defapp.App): return p.curves += [curve(fname=tmpfile, xcol=xcol, ycol=idx, title=t) - for (t, idx) in titles] + for (i, (t, idx)) in enumerate(titles)] p.yrange = (-0.05, 1.05) p.yticks = (0, 0.1) #### Styling. + if not self.setup_png(p): p.rounded_caps = True p.font = 'Helvetica' + if self.options.paper or self.options.appendix: + for i, c in enumerate(p.curves): + c.style = "linespoints ls %d" % (i + 1) + + p.line_styles = [ + (1, "lw 2.5"), + (2, "lw 2.5"), + (3, "lw 2.5"), + (4, "lw 2.5"), + (5, 'lw 2.5 lc rgbcolor "#ff910d"'), + (6, "lw 2.5"), + (7, 'lw 2.5 lc rgbcolor "#000000"'), + (8, "lw 2.5"), + ] if self.options.paper: p.default_style = 'lines lw 2.5' @@ -630,11 +645,10 @@ class SchedPlotter(defapp.App): p.monochrome = False p.dashed_lines = False if not self.options.alternate: - p.key ='below' - p.size = ('14.5cm', '4cm') - p.yticks = (0, 0.2) - -# p.key = 'below' + p.key ='off' + p.size = ('8.5cm', '5.5cm') + p.yticks = (0, 0.1) + p.key = 'below' p.default_style = 'linespoints lw 2.5' elif self.options.slides: p.dashed_lines = False -- cgit v1.2.2