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. <>= 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. <>= newcurve marktype circle fill 1 linetype solid <>= newcurve marktype diamond fill 0 linetype solid <>= newcurve marktype box fill 1 linetype solid <>= newcurve marktype box fill 0 linetype solid @ Finally, this chunk is for the split legends of graphs 1-4. <>= newgraph inherit_axes xaxis min 0 max 10 nodraw yaxis min 0 max 10 nodraw <> label fontsize 7 : Sequential <> label fontsize 7 : Concurrent legend x 0 y 11.5 newgraph inherit_axes <> label fontsize 7 : Low Latency, Conc. <> label fontsize 7 : Low Lat., Conc., Large legend x 4.7 y 11.5 @ ---- THE GRAPHS ---- @ GRAPHS 1 \& 2 <>= Y 3 newgraph x_translate -1.37 <> newgraph inherit_axes x_translate 1.7 <> @ Graph \#1: Checkpoint time. This is the wall-clock time to take one checkpoint of a merge-sort program. <>= <> 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) <> pts shell : notangle -R"Ckp Time" data.nw | head -6 | awk '{print $1" "$2}' <> pts shell : notangle -R"Ckp Time" data.nw | head -6 | awk '{print $1" "$3}' <> pts shell : notangle -R"Ckp Time" data.nw | head -6 | awk '{print $1" "$4}' <> pts shell : notangle -R"Ckp Time" data.nw | head -6 | awk '{print $1" "$5}' <> @ Graph \#2: Checkpoint overhead. This is the extra time that it took the program to complete after taking one checkpoint. <>= <> 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) <> pts shell : notangle -R"Overhead" data.nw | awk '{print $1" "$2}' <> pts shell : notangle -R"Overhead" data.nw | awk '{print $1" "$3}' <> pts shell : notangle -R"Overhead" data.nw | awk '{print $1" "$4}' <> pts shell : notangle -R"Overhead" data.nw | awk '{print $1" "$5}' <> @ GRAPHS 3 \& 4 <>= Y 3 newgraph x_translate -1.37 <> newgraph inherit_axes x_translate 1.7 <> @ Graph \#3: Checkpoint Overhead Percentage. This is the percentage of the checkpointing time which is overhead incurred on the target program <>= <> 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 <> pts shell : notangle -R"Ckp %age" data.nw | awk '{print $1" "$2}' <> pts shell : notangle -R"Ckp %age" data.nw | awk '{print $1" "$3}' <> pts shell : notangle -R"Ckp %age" data.nw | awk '{print $1" "$4}' <> pts shell : notangle -R"Ckp %age" data.nw | awk '{print $1" "$5}' <> @ Graph \#4: This displays what happens when the heaps get big <>= <> 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) <> pts shell : notangle -R"Ckp Time" data.nw | awk '{print $1" "$2}' <> pts shell : notangle -R"Ckp Time" data.nw | awk '{print $1" "$3}' <> pts shell : notangle -R"Ckp Time" data.nw | awk '{print $1" "$4}' <> pts shell : notangle -R"Ckp Time" data.nw | awk '{print $1" "$5}' <> @ Graph \#5: Latency Data <>= Y 3 newgraph <> 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 <>= Y 3 newgraph x_translate -1.37 <> newgraph inherit_axes x_translate 1.7 <> @ Graph \#6: Number of traps vs Segment Size <>= <> 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 <>= <> 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 <>= Y 3 newgraph <> 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 <>= Y 3 newgraph x_translate -1.37 <> newgraph inherit_axes x_translate 1.7 <> @ Graph 9 \& 10 have bizarre legends as well: <>= newcurve marktype circle fill 0 linetype solid <>= newcurve marktype triangle fill 0 linetype none <>= newcurve marktype diamond fill 1 linetype none <>= newcurve marktype cross fill 1 linetype none <>= newcurve marktype box fill 1 linetype none <<9n10 Legend>>= newgraph inherit_axes xaxis min 0 max 10 nodraw yaxis min 0 max 10 nodraw <> label fontsize 7 : Merge Sort <> label fontsize 7 : Travelling Salesman <> label fontsize 7 : Pattern Match legend x 0 y 12 newgraph inherit_axes <> label fontsize 7 : Bubble Sort <> label fontsize 7 : Matrix Multiplication legend x 5.6 y 12 @ Graph \#9: <>= <> 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) <> pts shell : notangle -R"Ckp Time" data.nw | head -6 | awk '{print $1" "$4}' <> pts .064 2.359 <> pts 1.233 6.374 <> pts .513 3.91 <> pts 3.000 14.71 <<9n10 Legend>> @ Graph \#10: <>= <> 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) <> pts shell : notangle -R"Overhead" data.nw | awk '{print $1" "$4}' <> pts .064 0.17 <> pts 1.233 0.07 <> pts .513 0.07 <> pts 3.000 0.75 <<9n10 Legend>>