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>= (U-> U-> U-> U-> U-> U-> U-> U-> U-> U->) 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>= (U-> U-> U-> U-> U->) newcurve marktype circle fill 1 linetype solid
<Concurrent Curve>= (U-> U-> U-> U-> U->) newcurve marktype diamond fill 0 linetype solid
<Low Latency Curve>= (U-> U-> U-> U-> U->) newcurve marktype box fill 1 linetype solid
<Low Latency Large Curve>= (U-> U-> U-> U-> U->) newcurve marktype box fill 0 linetype solid
Finally, this chunk is for the split legends of graphs 1-4.
<Legend>= (U-> U-> U-> U->) 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
<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>= (<-U) <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>= (<-U) <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 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>= (<-U) <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>= (<-U) <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>= 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 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>= (<-U) <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>= (<-U) <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>= 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 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>= (U-> U-> U->) newcurve marktype circle fill 0 linetype solid
<Trs>= (U-> U-> U->) newcurve marktype triangle fill 0 linetype none
<Pattern>= (U-> U-> U->) newcurve marktype diamond fill 1 linetype none
<Bubble>= (U-> U-> U->) newcurve marktype cross fill 1 linetype none
<Matrix>= (U-> U-> U->) newcurve marktype box fill 1 linetype none
<9n10 Legend>= (U-> U->) 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>= (<-U) <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>= (<-U) <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>