summaryrefslogtreecommitdiff
path: root/web/noweb/examples/graphs.nw
blob: a5f7b8cdc32c17598d7e84fc3ce74260fe1f5288 (plain)
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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
This is a noweb file for doing all the graphs in the paper.  It sets 
up generic chunks for setting up the axis sizes, etc, and gets all of 
the graph's data from data.nw.  

@ This first chunk is to be used by all graphs.  It sets up the axis
sizes, as well as the font sizes for labels.
<<Standard Defaults>>=
  yaxis size 1.9  hash_labels fontsize 7 label fontsize 8 draw
  xaxis size 2.14 hash_labels fontsize 7 label fontsize 8 draw
  title fontsize 10
@ 
The following chunks define the curves for the four different 
types of checkpointing algorithms.  
<<Sequential Curve>>=
  newcurve marktype circle  fill 1 linetype solid
<<Concurrent Curve>>=
  newcurve marktype diamond fill 0 linetype solid
<<Low Latency Curve>>=
  newcurve marktype box     fill 1 linetype solid
<<Low Latency Large Curve>>=
  newcurve marktype box     fill 0 linetype solid
@ 
Finally, this chunk is for the split legends of graphs 1-4.
<<Legend>>=
newgraph
  inherit_axes
  xaxis min 0 max 10 nodraw
  yaxis min 0 max 10 nodraw
  <<Sequential Curve>> label fontsize 7 : Sequential
  <<Concurrent Curve>> label fontsize 7 : Concurrent
  legend x 0 y 11.5
newgraph
  inherit_axes
  <<Low Latency Curve>>       label fontsize 7 : Low Latency, Conc.
  <<Low Latency Large Curve>> label fontsize 7 : Low Lat., Conc., Large
  legend x 4.7 y 11.5
@ 
----  THE GRAPHS ----
@ 
GRAPHS 1 \& 2
<<Graphs 1n2>>=
Y 3
newgraph              x_translate -1.37 
  <<Graph 1>>
newgraph inherit_axes x_translate  1.7  
  <<Graph 2>>
@ 
Graph \#1: Checkpoint time.  This is the wall-clock time to take one
checkpoint of a merge-sort program.
<<Graph 1>>=
  <<Standard Defaults>>
  title : Graph 1: Checkpoint Time.
  xaxis min 0 max 10 hash 2  mhash 1 label : Heap Size (MBytes)
  yaxis min 0 max 70 hash 10 mhash 1 label : Time (sec)
  <<Sequential Curve>>
    pts shell : notangle -R"Ckp Time" data.nw | head -6 | awk '{print $1" "$2}'
  <<Concurrent Curve>>
    pts shell : notangle -R"Ckp Time" data.nw | head -6 | awk '{print $1" "$3}'
  <<Low Latency Curve>>
    pts shell : notangle -R"Ckp Time" data.nw | head -6 | awk '{print $1" "$4}'
  <<Low Latency Large Curve>>
    pts shell : notangle -R"Ckp Time" data.nw | head -6 | awk '{print $1" "$5}'
  <<Legend>>

@ 
Graph \#2: Checkpoint overhead.  This is the extra time that it took
the program to complete after taking one checkpoint.
<<Graph 2>>=
  <<Standard Defaults>>
  title : Graph 2: Checkpoint Overhead.
  xaxis min 0 max 10 hash 2  mhash 1 label : Heap Size (MBytes)
  yaxis min 0 max 35 hash 10 mhash 1 label : Time (sec)
  <<Sequential Curve>>
    pts shell : notangle -R"Overhead" data.nw | awk '{print $1" "$2}'
  <<Concurrent Curve>>
    pts shell : notangle -R"Overhead" data.nw | awk '{print $1" "$3}'
  <<Low Latency Curve>>
    pts shell : notangle -R"Overhead" data.nw | awk '{print $1" "$4}'
  <<Low Latency Large Curve>>
    pts shell : notangle -R"Overhead" data.nw | awk '{print $1" "$5}'
  <<Legend>>
@ 
GRAPHS 3 \& 4
<<Graphs 3n4>>=
  Y 3
  newgraph              x_translate -1.37 
    <<Graph 3>>
  newgraph inherit_axes x_translate  1.7  
    <<Graph 4>>
@ 
Graph \#3: Checkpoint Overhead Percentage.  This is the percentage
of the checkpointing time which is overhead incurred on the target
program
<<Graph 3>>=
  <<Standard Defaults>>
  title : Graph 3: Checkpoint Overhead Percentage
  xaxis min 0 max 10 hash 2  mhash 1  label : Heap Size (MBytes)
  yaxis min 0 max 100 hash 10 mhash 1 label : % Overhead
  <<Sequential Curve>>
    pts shell : notangle -R"Ckp %age" data.nw | awk '{print $1" "$2}'
  <<Concurrent Curve>>
    pts shell : notangle -R"Ckp %age" data.nw | awk '{print $1" "$3}'
  <<Low Latency Curve>>
    pts shell : notangle -R"Ckp %age" data.nw | awk '{print $1" "$4}'
  <<Low Latency Large Curve>>
    pts shell : notangle -R"Ckp %age" data.nw | awk '{print $1" "$5}'
  <<Legend>>
@ 
Graph \#4:  This displays what happens when the heaps get big
<<Graph 4>>=
  <<Standard Defaults>>
  title : Graph 4: Checkpoint Time for Large Heaps.
  xaxis min 0 max 13  hash 2   mhash 1 label : Heap Size (MBytes)
  yaxis min 0 max 700 hash 100 mhash 1 label : Time (sec)
  <<Sequential Curve>>
    pts shell : notangle -R"Ckp Time" data.nw | awk '{print $1" "$2}'
  <<Concurrent Curve>>
    pts shell : notangle -R"Ckp Time" data.nw | awk '{print $1" "$3}'
  <<Low Latency Curve>>
    pts shell : notangle -R"Ckp Time" data.nw | awk '{print $1" "$4}'
  <<Low Latency Large Curve>>
    pts shell : notangle -R"Ckp Time" data.nw | awk '{print $1" "$5}'
  <<Legend>>
@ 
Graph \#5: Latency Data
<<Graph 5>>=
  Y 3
  newgraph
  <<Standard Defaults>>
  title : Graph 5: Latency Data.
  xaxis min 0 max 13  hash 2   mhash 1 label : Heap Size (MBytes)
  yaxis min 0 max .351 hash .1 mhash 1 label : Time(sec)
  newcurve marktype circle fill 1 linetype solid
    pts shell : notangle -R"Latency" data.nw | awk '{print $1" "$2}'
    label : Initial Stop Time
  newcurve marktype circle fill 0 linetype solid
    pts shell : notangle -R"Latency" data.nw | awk '{print $1" "$3}'
    label : Maximum Trap Time
  legend right
@ 
GRAPHS 6 \& 7
<<Graphs 6n7>>=
  Y 3
  newgraph              x_translate -1.37 
    <<Graph 6>>
  newgraph inherit_axes x_translate  1.7  
    <<Graph 7>>
@ 
Graph \#6: Number of traps vs Segment Size
<<Graph 6>>=
  <<Standard Defaults>>
  title : Graph 6: Number of Traps vs. Segment Size.
  xaxis min 0 max 128  hash 32  mhash 1 label : Segment Size (KBytes)
  yaxis min 0 max 1000 hash 200 mhash 1 label : Number of Traps
  newcurve marktype circle fill 1 linetype solid
    pts shell : notangle -R"Num Traps" data.nw
@ 
Graph \#7: Number of traps vs Segment Size
<<Graph 7>>=
  <<Standard Defaults>>
  title : Graph 7: Maximum Trap Time vs. Segment Size.
  xaxis min 0 max 128 hash 32 mhash 1 label : Segment Size (KBytes)
  yaxis min 0 max 1.4 hash .2 mhash 1 label : Maximum Trap Time (Sec)
  newcurve marktype circle fill 1 linetype solid
    pts shell : notangle -R"Trap Time" data.nw
@ 
Graph \#8: Frequency of Traps
<<Graph 8>>=
  Y 3
  newgraph
  <<Standard Defaults>>
  title : Graph \#8: Frequency of Traps.
  xaxis min 0 max 2.6001 hash .5 mhash 4 
    label : Starting Time of 0.1 second interval (sec)
  yaxis min 0 max 10 hash 1 mhash 0
    label : Traps per 0.1 second Interval
  newcurve marktype circle fill 0 pts 
  shell : notangle -R"Freq" data.nw 
  newstring hjr vjc fontsize 7 x 2.6 y 10 : Average Trap Time = 0.015 seconds 
@ 
GRAPHS 9 \& 10
<<Graphs 9n10>>=
  Y 3
  newgraph              x_translate -1.37 
    <<Graph 9>>
  newgraph inherit_axes x_translate  1.7  
    <<Graph 10>>
@ 
Graph 9 \& 10 have bizarre legends as well:
<<Merge>>=
  newcurve marktype circle   fill 0 linetype solid
<<Trs>>=
  newcurve marktype triangle fill 0 linetype none
<<Pattern>>=
  newcurve marktype diamond  fill 1 linetype none
<<Bubble>>=
  newcurve marktype cross    fill 1 linetype none
<<Matrix>>=
  newcurve marktype box      fill 1 linetype none
<<9n10 Legend>>=
  newgraph inherit_axes
    xaxis min 0 max 10 nodraw
    yaxis min 0 max 10 nodraw
    <<Merge>> 
      label fontsize 7 : Merge Sort
    <<Trs>> 
      label fontsize 7 : Travelling Salesman
    <<Pattern>> 
      label fontsize 7 : Pattern Match
    legend x 0 y 12
  newgraph inherit_axes
    <<Bubble>>
      label fontsize 7 : Bubble Sort
    <<Matrix>>
      label fontsize 7 : Matrix Multiplication
    legend x 5.6 y 12
@ 
Graph \#9: 
<<Graph 9>>=
  <<Standard Defaults>>
  title : Graph 9: Checkpoint Time of Other Benchmarks.
  xaxis min 0 max 10 hash 2  mhash 1 label : Heap Size (MBytes)
  yaxis min 0 max 40 hash 10 mhash 1 label : Time (sec)
  <<Merge>>
    pts shell : notangle -R"Ckp Time" data.nw | head -6 | awk '{print $1" "$4}'
  <<Trs>>     pts  .064  2.359
  <<Pattern>> pts 1.233  6.374
  <<Bubble>>  pts  .513  3.91
  <<Matrix>>  pts 3.000 14.71
  <<9n10 Legend>>
@ 
Graph \#10: 
<<Graph 10>>=
  <<Standard Defaults>>
  title : Graph 10: Checkpoint Overhead of Other Benchmarks.
  xaxis min 0 max 10 hash 2  mhash 1 label : Heap Size (MBytes)
  yaxis min 0 max 5  hash 1  mhash 1 label : Time (sec)
  <<Merge>>
    pts shell : notangle -R"Overhead" data.nw | awk '{print $1" "$4}'
  <<Trs>>     pts  .064  0.17
  <<Pattern>> pts 1.233  0.07
  <<Bubble>>  pts  .513  0.07
  <<Matrix>>  pts 3.000  0.75
  <<9n10 Legend>>