diff options
Diffstat (limited to 'plot.py')
-rwxr-xr-x | plot.py | 40 |
1 files changed, 37 insertions, 3 deletions
@@ -67,6 +67,8 @@ def scenario_heading(conf, want_period=False): | |||
67 | dist = dist + 'in [0.1, 0.4]' | 67 | dist = dist + 'in [0.1, 0.4]' |
68 | elif 'heavy' in conf: | 68 | elif 'heavy' in conf: |
69 | dist = dist + 'in [0.5, 0.9]' | 69 | dist = dist + 'in [0.5, 0.9]' |
70 | elif 'mixed' in conf: | ||
71 | dist = dist + 'in [0.05, 0.95]' | ||
70 | elif conf['dist'] == 'bimo': | 72 | elif conf['dist'] == 'bimo': |
71 | dist = 'util. bimodially ' | 73 | dist = 'util. bimodially ' |
72 | if 'light' in conf: | 74 | if 'light' in conf: |
@@ -91,7 +93,7 @@ class SchedPlotter(defapp.App): | |||
91 | def plot(self, graphs, title, name, conf, **xtra): | 93 | def plot(self, graphs, title, name, conf, **xtra): |
92 | gnuplot(graphs, title=title, | 94 | gnuplot(graphs, title=title, |
93 | xlabel=self.options.xlabel, | 95 | xlabel=self.options.xlabel, |
94 | ylabel=self.options.ylabel + | 96 | ylabel=self.options.ylabel + |
95 | (' [soft]' if 'soft' in conf else ' [hard]'), | 97 | (' [soft]' if 'soft' in conf else ' [hard]'), |
96 | xrange=self.options.xrange, | 98 | xrange=self.options.xrange, |
97 | yrange=self.options.yrange, | 99 | yrange=self.options.yrange, |
@@ -104,7 +106,7 @@ class SchedPlotter(defapp.App): | |||
104 | tops = 'rounded size 16cm,6.5cm' | 106 | tops = 'rounded size 16cm,6.5cm' |
105 | gnuplot(graphs, title=title, | 107 | gnuplot(graphs, title=title, |
106 | xlabel=self.options.xlabel, | 108 | xlabel=self.options.xlabel, |
107 | ylabel=self.options.ylabel + | 109 | ylabel=self.options.ylabel + |
108 | (' [soft]' if 'soft' in conf else ' [hard]'), | 110 | (' [soft]' if 'soft' in conf else ' [hard]'), |
109 | xrange=self.options.xrange, | 111 | xrange=self.options.xrange, |
110 | yrange=self.options.yrange, | 112 | yrange=self.options.yrange, |
@@ -119,7 +121,7 @@ class SchedPlotter(defapp.App): | |||
119 | tops = 'color solid font "Helvetica,10" linewidth 1.0 rounded size 16cm,8.5cm' | 121 | tops = 'color solid font "Helvetica,10" linewidth 1.0 rounded size 16cm,8.5cm' |
120 | gnuplot(graphs, title=title, | 122 | gnuplot(graphs, title=title, |
121 | xlabel=self.options.xlabel, | 123 | xlabel=self.options.xlabel, |
122 | ylabel=self.options.ylabel + | 124 | ylabel=self.options.ylabel + |
123 | (' [soft]' if 'soft' in conf else ' [hard]'), | 125 | (' [soft]' if 'soft' in conf else ' [hard]'), |
124 | xrange=self.options.xrange, | 126 | xrange=self.options.xrange, |
125 | yrange=self.options.yrange, | 127 | yrange=self.options.yrange, |
@@ -264,6 +266,36 @@ class SchedPlotter(defapp.App): | |||
264 | else: | 266 | else: |
265 | self.plot(graphs, title, xname, conf) | 267 | self.plot(graphs, title, xname, conf) |
266 | 268 | ||
269 | def plot_ospert10(self, tmpfile, name, conf): | ||
270 | title = scenario_heading(conf, want_period=True) | ||
271 | # cumulative graphs | ||
272 | graphs = [ | ||
273 | (tmpfile, 1, 2, 'G-EDF'), | ||
274 | (tmpfile, 1, 4, 'C-EDF (L3)'), | ||
275 | (tmpfile, 1, 6, 'C-EDF (L2)'), | ||
276 | (tmpfile, 1, 8, 'P-EDF'), | ||
277 | ] | ||
278 | # weighted graphs | ||
279 | graphs_w = [ | ||
280 | (tmpfile, 1, 3, 'G-EDF'), | ||
281 | (tmpfile, 1, 5, 'C-EDF (L3)'), | ||
282 | (tmpfile, 1, 7, 'C-EDF (L2)'), | ||
283 | (tmpfile, 1, 9, 'P-EDF'), | ||
284 | ] | ||
285 | |||
286 | self.options.xrange = (-5, 1005) | ||
287 | self.options.xticks = (0, 50) | ||
288 | self.options.xlabel = "preemption/migration overhead (in us)" | ||
289 | for (tag, gs) in [('cumulative', graphs), ('weighted', graphs_w)]: | ||
290 | xname = name + '_' + tag | ||
291 | self.options.ylabel = tag + ' schedulability' | ||
292 | if self.options.paper and self.options.format == 'pdf': | ||
293 | self.plot_paper(gs, title, xname, conf) | ||
294 | elif self.options.wide and self.options.format == 'pdf': | ||
295 | self.plot_wide(gs, title, xname, conf) | ||
296 | else: | ||
297 | self.plot(gs, title, xname, conf) | ||
298 | |||
267 | def plot_file(self, datafile): | 299 | def plot_file(self, datafile): |
268 | bname = basename(datafile) | 300 | bname = basename(datafile) |
269 | name, ext = splitext(bname) | 301 | name, ext = splitext(bname) |
@@ -288,6 +320,8 @@ class SchedPlotter(defapp.App): | |||
288 | self.plot_rtss09_split(tmpfile.name, name, conf) | 320 | self.plot_rtss09_split(tmpfile.name, name, conf) |
289 | else: | 321 | else: |
290 | self.plot_rtss09(tmpfile.name, name, conf) | 322 | self.plot_rtss09(tmpfile.name, name, conf) |
323 | elif 'ospert10' in conf: | ||
324 | self.plot_ospert10(tmpfile.name, name, conf) | ||
291 | else: | 325 | else: |
292 | self.err("Skipped '%s'; unkown experiment type." | 326 | self.err("Skipped '%s'; unkown experiment type." |
293 | % bname) | 327 | % bname) |