aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBjoern B. Brandenburg <bbb@cs.unc.edu>2009-06-01 11:58:39 -0400
committerBjoern B. Brandenburg <bbb@cs.unc.edu>2009-06-01 11:58:39 -0400
commitfbfac3ea825a863400f7196750f016b6a6a0d48d (patch)
treee6f18032dc6df24fd5a1c0a615766150fe2319ee
parentf4035ea8d53c1642eb6985733457ac5051e64c5b (diff)
appendix work
-rwxr-xr-xplot.py62
-rwxr-xr-xplot_ohead.py19
2 files changed, 60 insertions, 21 deletions
diff --git a/plot.py b/plot.py
index 83855e8..befd7ee 100755
--- a/plot.py
+++ b/plot.py
@@ -10,6 +10,7 @@ options = [
10 o('-f', '--format', action='store', dest='format', type='choice', 10 o('-f', '--format', action='store', dest='format', type='choice',
11 choices=FORMATS, help='output format'), 11 choices=FORMATS, help='output format'),
12 o(None, '--paper', action='store_true', dest='paper'), 12 o(None, '--paper', action='store_true', dest='paper'),
13 o(None, '--wide', action='store_true', dest='wide'),
13 o(None, '--split', action='store_true', dest='split'), 14 o(None, '--split', action='store_true', dest='split'),
14 ] 15 ]
15 16
@@ -24,6 +25,7 @@ defaults = {
24 'ylabel' : 'ratio of schedulable task sets', 25 'ylabel' : 'ratio of schedulable task sets',
25 'paper' : False, 26 'paper' : False,
26 'split' : False, 27 'split' : False,
28 'wide' : False,
27 } 29 }
28 30
29def decode(name): 31def decode(name):
@@ -98,6 +100,21 @@ class SchedPlotter(defapp.App):
98 format=self.options.format, 100 format=self.options.format,
99 fname=name, **xtra) 101 fname=name, **xtra)
100 102
103 def plot_wide(self, graphs, title, name, conf, **xtra):
104 tops = 'rounded size 16cm,6.5cm'
105 gnuplot(graphs, title=title,
106 xlabel=self.options.xlabel,
107 ylabel=self.options.ylabel +
108 (' [soft]' if 'soft' in conf else ' [hard]'),
109 xrange=self.options.xrange,
110 yrange=self.options.yrange,
111 xticks=self.options.xticks,
112 yticks=self.options.yticks,
113 format=self.options.format,
114 fname=name,
115 term_opts=tops,
116 **xtra)
117
101 def plot_paper(self, graphs, title, name, conf, **xtra): 118 def plot_paper(self, graphs, title, name, conf, **xtra):
102 tops = 'color solid font "Helvetica,10" linewidth 1.0 rounded size 16cm,8.5cm' 119 tops = 'color solid font "Helvetica,10" linewidth 1.0 rounded size 16cm,8.5cm'
103 gnuplot(graphs, title=title, 120 gnuplot(graphs, title=title,
@@ -179,54 +196,61 @@ class SchedPlotter(defapp.App):
179 def plot_rtss09(self, tmpfile, name, conf): 196 def plot_rtss09(self, tmpfile, name, conf):
180 title = scenario_heading(conf, want_period=True) 197 title = scenario_heading(conf, want_period=True)
181 graphs = [ 198 graphs = [
182 (tmpfile, 1, 2, 'ideal'), 199 (tmpfile, 1, 2, 'G-EDF'),
183 (tmpfile, 1, 3, 'SEm'), 200 (tmpfile, 1, 3, 'CEm'),
184 (tmpfile, 1, 4, 'SE1'), 201 (tmpfile, 1, 4, 'CE1'),
185 (tmpfile, 1, 5, 'FEm'), 202 (tmpfile, 1, 5, 'FEm'),
186 (tmpfile, 1, 6, 'FE1'), 203 (tmpfile, 1, 6, 'FE1'),
187 (tmpfile, 1, 7, 'HEm'), 204 (tmpfile, 1, 7, 'HEm'),
188 (tmpfile, 1, 8, 'SQm'), 205 (tmpfile, 1, 8, 'CQm'),
189 (tmpfile, 1, 9, 'SQ1'), 206 (tmpfile, 1, 9, 'CQ1'),
190 ] 207 ]
191 staggered = [ 208 staggered = [
192 (tmpfile, 1, 10, 'S-SQm'), 209 (tmpfile, 1, 10, 'S-CQm'),
193 (tmpfile, 1, 11, 'S-SQ1'), 210 (tmpfile, 1, 11, 'S-CQ1'),
194 ] 211 ]
195 if 'hard' in conf: 212 if 'hard' in conf:
196 graphs += staggered 213 graphs += staggered
197 if self.options.paper and self.options.format == 'pdf': 214 if self.options.paper and self.options.format == 'pdf':
198 self.plot_paper(graphs, title, name, conf) 215 self.plot_paper(graphs, title, name, conf)
216 elif self.options.wide and self.options.format == 'pdf':
217 self.plot_wide(graphs, title, name, conf)
199 else: 218 else:
200 self.plot(graphs, title, name, conf) 219 self.plot(graphs, title, name, conf)
201 220
202 def plot_rtss09_split(self, tmpfile, name, conf): 221 def plot_rtss09_split(self, tmpfile, name, conf):
203 title = scenario_heading(conf, want_period=True) 222 title = scenario_heading(conf, want_period=True)
204 ideal = (tmpfile, 1, 2, 'ideal') 223 ideal = (tmpfile, 1, 2, 'G-EDF')
205 224
206 subgraphs = [ 225 subgraphs = [
207# dedicated vs. non-dedicated 226# dedicated vs. non-dedicated
208 [(tmpfile, 1, 3, 'SEm'), (tmpfile, 1, 4, 'SE1')], 227 [(tmpfile, 1, 3, 'CEm'), (tmpfile, 1, 4, 'CE1')],
209 [(tmpfile, 1, 5, 'FEm'), (tmpfile, 1, 6, 'FE1')], 228 [(tmpfile, 1, 5, 'FEm'), (tmpfile, 1, 6, 'FE1')],
210 [(tmpfile, 1, 8, 'SQm'), (tmpfile, 1, 9, 'SQ1')], 229 [(tmpfile, 1, 8, 'CQm'), (tmpfile, 1, 9, 'CQ1')],
211 230
212# fine-grained vs. sequential 231# fine-grained vs. sequential
213 [(tmpfile, 1, 3, 'SEm'), (tmpfile, 1, 5, 'FEm')], 232 [(tmpfile, 1, 3, 'CEm'), (tmpfile, 1, 5, 'FEm')],
214 [(tmpfile, 1, 4, 'SE1'), (tmpfile, 1, 6, 'FE1')], 233 [(tmpfile, 1, 4, 'CE1'), (tmpfile, 1, 6, 'FE1')],
215 234
216# hierarchical vs. sequential 235# hierarchical vs. sequential
217 [(tmpfile, 1, 3, 'SEm'), (tmpfile, 1, 7, 'HEm')], 236 [(tmpfile, 1, 3, 'CEm'), (tmpfile, 1, 7, 'HEm')],
218 237
219# quantum vs. event 238# quantum vs. event
220 [(tmpfile, 1, 3, 'SEm'), (tmpfile, 1, 8, 'SQm')], 239 [(tmpfile, 1, 3, 'CEm'), (tmpfile, 1, 8, 'CQm')],
221 [(tmpfile, 1, 6, 'FE1'), (tmpfile, 1, 9, 'SQ1')], 240 [(tmpfile, 1, 6, 'FE1'), (tmpfile, 1, 9, 'CQ1')],
222 ] 241 ]
223 staggered = [ 242 staggered = [
224# dedicated vs. non-dedicated 243# dedicated vs. non-dedicated
225 [(tmpfile, 1, 10, 'S-SQm'), (tmpfile, 1, 11, 'S-SQ1')], 244 [(tmpfile, 1, 10, 'S-CQm'), (tmpfile, 1, 11, 'S-CQ1')],
226 245
227# staggered vs. non-staggered 246# staggered vs. non-staggered
228 [(tmpfile, 1, 8, 'SQm'), (tmpfile, 1, 10, 'S-SQm')], 247 [(tmpfile, 1, 8, 'CQm'), (tmpfile, 1, 10, 'S-CQm')],
229 [(tmpfile, 1, 9, 'SQ1'), (tmpfile, 1, 11, 'S-SQ1')], 248 [(tmpfile, 1, 9, 'CQ1'), (tmpfile, 1, 11, 'S-CQ1')],
249
250# quantum vs. event
251 [(tmpfile, 1, 3, 'CEm'), (tmpfile, 1, 10, 'S-CQm')],
252 [(tmpfile, 1, 6, 'FE1'), (tmpfile, 1, 11, 'S-CQ1')],
253
230 ] 254 ]
231 if 'hard' in conf: 255 if 'hard' in conf:
232 subgraphs += staggered 256 subgraphs += staggered
@@ -235,6 +259,8 @@ class SchedPlotter(defapp.App):
235 xname = name + '_' + '-vs-'.join([x[3] for x in g]) 259 xname = name + '_' + '-vs-'.join([x[3] for x in g])
236 if self.options.paper and self.options.format == 'pdf': 260 if self.options.paper and self.options.format == 'pdf':
237 self.plot_paper(graphs, title, xname, conf) 261 self.plot_paper(graphs, title, xname, conf)
262 elif self.options.wide and self.options.format == 'pdf':
263 self.plot_wide(graphs, title, xname, conf)
238 else: 264 else:
239 self.plot(graphs, title, xname, conf) 265 self.plot(graphs, title, xname, conf)
240 266
diff --git a/plot_ohead.py b/plot_ohead.py
index 9d4913c..81b39a7 100755
--- a/plot_ohead.py
+++ b/plot_ohead.py
@@ -25,6 +25,7 @@ options = [
25 choices=PLUGINS), 25 choices=PLUGINS),
26 o('-d', '--data', action='append', dest='data', type='choice', 26 o('-d', '--data', action='append', dest='data', type='choice',
27 choices=DATA), 27 choices=DATA),
28 o(None, '--prefix', action='store', dest='prefix'),
28 ] 29 ]
29 30
30defaults = { 31defaults = {
@@ -41,6 +42,7 @@ defaults = {
41 'plugins' : [], 42 'plugins' : [],
42 'master' : [], 43 'master' : [],
43 'data' : [], 44 'data' : [],
45 'prefix' : '',
44 } 46 }
45 47
46 48
@@ -53,10 +55,21 @@ ev_name = {
53 'CXS' : 'context-switching overhead', 55 'CXS' : 'context-switching overhead',
54} 56}
55 57
58plugin_name = {
59 'GSN-EDF NO_CPU' : 'CEm',
60 'GSN-EDF 3' : 'CE1',
61 'G-EDF NO_CPU' : 'FEm',
62 'G-EDF 3' : 'FE1',
63 'GHQ-EDF NO_CPU' : 'HEm',
64 'GQ-EDF NO_CPU' : 'CQm',
65 'GQ-EDF 3' : 'CQ1',
66}
67
56def graph(plugin, master, event, wc): 68def graph(plugin, master, event, wc):
69 name = "%s %s" % (plugin, master)
57 return ['%s.R-%s.%s.csv' % (plugin, master, event), 1, 3 if wc else 2, 70 return ['%s.R-%s.%s.csv' % (plugin, master, event), 1, 3 if wc else 2,
58 '%s %s %s %s' % (plugin, event, 'RM' if master != 'NO_CPU' else '', 71 '%s %s %s' % (plugin_name[name], ev_name[event],
59 'WC' if wc else 'AVG')] 72 '(worst-case)' if wc else '(average)')]
60 73
61class OheadPlotter(defapp.App): 74class OheadPlotter(defapp.App):
62 def __init__(self): 75 def __init__(self):
@@ -106,7 +119,7 @@ class OheadPlotter(defapp.App):
106 if (p != 'GHQ-EDF' or m == 'NO_CPU') and \ 119 if (p != 'GHQ-EDF' or m == 'NO_CPU') and \
107 (p != 'GQ-EDF' or e != 'SEND_RESCHED'): 120 (p != 'GQ-EDF' or e != 'SEND_RESCHED'):
108 gs += [graph(p, m, e, wc)] 121 gs += [graph(p, m, e, wc)]
109 fname = '%s_%s' % (e, d) 122 fname = '%s%s_%s' % (self.options.prefix, e, d)
110 title = '%s %s' % ('worst-case' if wc else 'average-case' , ev_name[e]) 123 title = '%s %s' % ('worst-case' if wc else 'average-case' , ev_name[e])
111 self.plot(gs, title=title, name=fname) 124 self.plot(gs, title=title, name=fname)
112 125