diff --git a/analysis/getExponential.sh b/analysis/getExponential.sh old mode 100644 new mode 100755 diff --git a/analysis/getFileAverages.sh b/analysis/getFileAverages.sh old mode 100644 new mode 100755 diff --git a/benchmark/build.gradle b/benchmark/build.gradle index 3705a9b362cf00e5223460e20b6e8c48bf7c0c4d..b4d09c8364b94ba9de94f13a54405012a17ea52c 100644 --- a/benchmark/build.gradle +++ b/benchmark/build.gradle @@ -15,32 +15,31 @@ jar { } from sourceSets.main.output - - dependsOn configurations.runtimeClasspath - from { - configurations.runtimeClasspath.findAll { it.name.endsWith('jar') }.collect { zipTree(it) } - } + dependsOn configurations.runtimeClasspath + from { + configurations.runtimeClasspath.findAll { it.name.endsWith('jar') }.collect { zipTree(it) } + } - doLast { - copy { - from jar - into "../frameworks/SPASSmeter/" - rename('benchmark.jar', 'MooBench.jar') - } - copy { - from jar - into "../frameworks/OpenTelemetry/" - rename('benchmark.jar', 'MooBench.jar') - } - copy { - from jar - into "../frameworks/inspectIT/" - rename('benchmark.jar', 'MooBench.jar') - } - copy { - from jar - into "../frameworks/Kieker/" - rename('benchmark.jar', 'MooBench.jar') - } + doLast { + copy { + from jar + into "../frameworks/SPASSmeter/" + rename('benchmark.jar', 'MooBench.jar') } + copy { + from jar + into "../frameworks/OpenTelemetry/" + rename('benchmark.jar', 'MooBench.jar') + } + copy { + from jar + into "../frameworks/inspectIT/" + rename('benchmark.jar', 'MooBench.jar') + } + copy { + from jar + into "../frameworks/Kieker/" + rename('benchmark.jar', 'MooBench.jar') + } + } } diff --git a/bin/2012-msept/r-scripts/benchmark-manual-configurations.r b/bin/2012-msept/r-scripts/benchmark-manual-configurations.r deleted file mode 100644 index dece45e1de3b4b89381da9bfe5228d3245f86af0..0000000000000000000000000000000000000000 --- a/bin/2012-msept/r-scripts/benchmark-manual-configurations.r +++ /dev/null @@ -1,82 +0,0 @@ -#DO NOT REMOVE IN TRUNK - -rm(list=ls(all=TRUE)) -output_fn="tmp/results-several.pdf" - -configs.labels=c("Method Time (T)","Instrumentation (I)","Collecting (C)","Writing (W)") -configs.count=4 -experiments.labels=c("OER-CSV","OER-Binary","Events-CSV","Events-Binary") -experiments=length(experiments.labels) - -values <- array(dim=c(experiments,configs.count,5),dimnames=list(experiments.labels,configs.labels,c("mean","ci95%","25%","50%","75%"))) -#values["Events-CSV",,] <- c( -#c(500.7680,500.9227,502.4763,506.1838), -#c(000.0002,000.0068,000.0109,000.0409), -#c(500.7680,500.9120,502.3740,505.9730), -#c(500.7690,500.9140,502.3800,506.0850), -#c(500.7690,500.9170,502.4010,506.1970)) -values["Events-CSV",,] <- c( -c(500.7561,500.9033,502.4309,505.9522), -c(000.0003,000.0075,000.0137,000.0310), -c(500.7720,500.8850,502.3910,505.3180), -c(500.7730,500.8870,502.3980,505.4270), -c(500.7780,500.9040,502.4160,505.5410)) -values["Events-Binary",,] <- c( -c(500.7817,500.9832,502.5732,505.8009), -c(000.0002,000.0072,000.0128,000.0133), -c(500.7750,500.9660,502.5520,505.6150), -c(500.7750,500.9690,502.5570,505.7310), -c(500.7800,500.9720,502.5710,505.8600)) -values["OER-Binary",,] <- c( -c(500.7873,500.9471,501.9237,503.3244), -c(000.0023,000.0044,000.0182,000.0131), -c(500.7390,500.9220,501.8870,503.1810), -c(500.7450,500.9240,501.9020,503.2270), -c(500.7690,500.9300,501.9290,503.3200)) -values["OER-CSV",,] <- c( -c(500.5759,500.7973,501.7964,505.0034), -c(000.0003,000.0060,000.0160,000.0210), -c(500.5540,500.7710,501.7500,504.7860), -c(500.5550,500.7750,501.7570,504.8770), -c(500.5560,500.7930,501.7800,504.9550)) - -pdf(output_fn, width=8, height=5, paper="special") -plot.new() -plot.window(xlim=c(0.5,experiments+0.5),ylim=c(500,510)) -title(xlab="Experiment",ylab="Execution time (µs)") -legend.labels=c("Writing (W)","Instrumentation (I)","(mean values)","Collecting (C)","Method Time (T)") -legend("topleft",inset=c(0.05,0.05),legend=legend.labels,fill=TRUE,angle=c(45,45,0,135,135),density=c(30,10,0,20,5),title="Overhead (median with quartiles) of ...",ncol=2,cex=0.8) -for (ce in c(1:experiments)) { - #meanvalues - rect(ce-0.2,values[experiments.labels[ce],3,"mean"],ce+0.4,values[experiments.labels[ce],4,"mean"]) - rect(ce-0.2,values[experiments.labels[ce],2,"mean"],ce+0.4,values[experiments.labels[ce],3,"mean"]) - rect(ce-0.2,values[experiments.labels[ce],1,"mean"],ce+0.4,values[experiments.labels[ce],2,"mean"]) - rect(ce-0.2,0,ce+0.4,values[experiments.labels[ce],1,"mean"]) - for (cc in (1:configs.count)) { - lines(c(ce+0.41,ce+0.49),c(values[experiments.labels[ce],cc,"mean"]+values[experiments.labels[ce],cc,"ci95%"],values[experiments.labels[ce],cc,"mean"]+values[experiments.labels[ce],cc,"ci95%"]),col="black") - lines(c(ce+0.45,ce+0.45),c(values[experiments.labels[ce],cc,"mean"]+values[experiments.labels[ce],cc,"ci95%"],values[experiments.labels[ce],cc,"mean"]-values[experiments.labels[ce],cc,"ci95%"]),col="black") - lines(c(ce+0.41,ce+0.49),c(values[experiments.labels[ce],cc,"mean"]-values[experiments.labels[ce],cc,"ci95%"],values[experiments.labels[ce],cc,"mean"]-values[experiments.labels[ce],cc,"ci95%"]),col="black") - } - #median - rect(ce-0.3,values[experiments.labels[ce],3,"50%"],ce+0.3,values[experiments.labels[ce],4,"50%"],col="white",border="black") - rect(ce-0.3,values[experiments.labels[ce],3,"50%"],ce+0.3,values[experiments.labels[ce],4,"50%"],angle=45,density=30) - rect(ce-0.3,values[experiments.labels[ce],2,"50%"],ce+0.3,values[experiments.labels[ce],3,"50%"],col="white",border="black") - rect(ce-0.3,values[experiments.labels[ce],2,"50%"],ce+0.3,values[experiments.labels[ce],3,"50%"],angle=135,density=20) - rect(ce-0.3,values[experiments.labels[ce],1,"50%"],ce+0.3,values[experiments.labels[ce],2,"50%"],col="white",border="black") - rect(ce-0.3,values[experiments.labels[ce],1,"50%"],ce+0.3,values[experiments.labels[ce],2,"50%"],angle=45,density=10) - rect(ce-0.3,0,ce+0.3,values[experiments.labels[ce],1,"50%"],col="white",border="black") - rect(ce-0.3,0,ce+0.3,values[experiments.labels[ce],1,"50%"],angle=135,density=5) - for (cc in (1:configs.count)) { - lines(c(ce-0.39,ce-0.31),c(values[experiments.labels[ce],cc,"75%"],values[experiments.labels[ce],cc,"75%"]),col="black") - lines(c(ce-0.35,ce-0.35),c(values[experiments.labels[ce],cc,"25%"],values[experiments.labels[ce],cc,"75%"]),col="black") - lines(c(ce-0.39,ce-0.31),c(values[experiments.labels[ce],cc,"25%"],values[experiments.labels[ce],cc,"25%"]),col="black") - } - for (cc in (2:configs.count)) { - labeltext=formatC(values[experiments.labels[ce],cc,"50%"]-values[experiments.labels[ce],cc-1,"50%"],format="f",digits=2) - rect(ce-(strwidth(labeltext)*0.5),values[experiments.labels[ce],cc,"50%"]-strheight(labeltext),ce+(strwidth(labeltext)*0.5),values[experiments.labels[ce],cc,"50%"],col="white",border="black") - text(ce,values[experiments.labels[ce],cc,"50%"],labels=labeltext,cex=0.75,col="black",pos=1,offset=0.1) - } -} -axis(1, at=c(1:experiments), labels=experiments.labels,) -axis(2) -invisible(dev.off()) diff --git a/bin/2012-msept/r-scripts/benchmark-manual-hardware.r b/bin/2012-msept/r-scripts/benchmark-manual-hardware.r deleted file mode 100644 index d3a03b63b2de34bd723986c33ebcf000b8935764..0000000000000000000000000000000000000000 --- a/bin/2012-msept/r-scripts/benchmark-manual-hardware.r +++ /dev/null @@ -1,104 +0,0 @@ -#DO NOT REMOVE IN TRUNK - -rm(list=ls(all=TRUE)) -output_fn="tmp/results-several.pdf" - -configs.labels=c("Method Time (T)","Instrumentation (I)","Collecting (C)","Writing (W)") -configs.count=4 -experiments.labels=c("Intel-S","Intel-A","AMD-S","AMD-A","T2-S","T2-A","T2P-S","T2P-A") -experiments=length(experiments.labels) - -values <- array(dim=c(experiments,configs.count,5),dimnames=list(experiments.labels,configs.labels,c("mean","ci95%","25%","50%","75%"))) -values["Intel-S",,] <- c( -c(500.7626,500.8171,501.8406,509.6133), -c(000.0015,000.0014,000.0019,000.0230), -c(500.7000,500.7800,501.7740,508.9720), -c(500.7010,500.7890,501.7850,509.1350), -c(500.7060,500.7960,501.8080,509.3210)) -values["Intel-A",,] <- c( -c(500.7626,500.8171,501.8406,504.6068), -c(000.0015,000.0014,000.0019,000.0028), -c(500.7000,500.7800,501.7740,504.3580), -c(500.7010,500.7890,501.7850,504.4600), -c(500.7060,500.7960,501.8080,504.5880)) - -values["AMD-S",,] <- c( -c(500.5010,500.6115,501.4409,509.7723), -c(000.0009,000.0013,000.0051,000.0189), -c(500.4590,500.5420,501.2530,509.1290), -c(500.4930,500.5590,501.3050,509.2590), -c(500.4940,500.5920,501.3600,509.4120)) -values["AMD-A",,] <- c( -c(500.5010,500.6115,501.4409,507.4486), -c(000.0009,000.0013,000.0051,000.0228), -c(500.4590,500.5420,501.2530,505.1780), -c(500.4930,500.5590,501.3050,505.8570), -c(500.4940,500.5920,501.3600,509.2770)) - -values["T2-S",,] <- c( -c(501.1622,502.6744,505.2425,585.3089), -c(000.0008,000.0011,000.0067,000.0318), -c(501.0900,502.6270,505.1590,583.3990), -c(501.1800,502.6270,505.1600,583.9410), -c(500.4940,500.5920,501.3600,584.6650)) -values["T2-A",,] <- c( -c(501.1622,502.6744,505.2425,514.7573), -c(000.0008,000.0011,000.0067,000.0363), -c(501.0900,502.6270,505.1590,514.3850), -c(501.1800,502.6270,505.1600,514.5660), -c(500.4940,500.5920,501.3600,509.4120)) - -values["T2P-S",,] <- c( -c(501.1737,502.6732,505.3519,585.1670), -c(000.0007,000.0010,000.0196,000.0387), -c(501.1070,502.6440,505.1770,583.3270), -c(501.1970,502.6440,505.2670,583.7800), -c(501.1970,502.6450,505.2680,584.3230)) -values["T2P-A",,] <- c( -c(501.1737,502.6732,505.3519,519.1713), -c(000.0007,000.0010,000.0196,000.0521), -c(501.1070,502.6440,505.1770,518.7450), -c(501.1970,502.6440,505.2670,518.9260), -c(501.1970,502.6450,505.2680,519.1070)) - - -pdf(output_fn, width=8, height=5, paper="special") -plot.new() -plot.window(xlim=c(0.5,experiments+0.5),ylim=c(500,520)) -title(xlab="Experiment",ylab="Execution time (µs)") -legend.labels=c("Writing (W)","Instrumentation (I)","(mean values)","Collecting (C)","Method Time (T)") -legend("topleft",inset=c(0.05,0.05),legend=legend.labels,fill=TRUE,angle=c(45,45,0,135,135),density=c(30,10,0,20,5),title="Overhead (median with quartiles) of ...",ncol=2,cex=0.8) -for (ce in c(1:experiments)) { - #meanvalues - rect(ce-0.2,values[experiments.labels[ce],3,"mean"],ce+0.4,values[experiments.labels[ce],4,"mean"]) - rect(ce-0.2,values[experiments.labels[ce],2,"mean"],ce+0.4,values[experiments.labels[ce],3,"mean"]) - rect(ce-0.2,values[experiments.labels[ce],1,"mean"],ce+0.4,values[experiments.labels[ce],2,"mean"]) - rect(ce-0.2,0,ce+0.4,values[experiments.labels[ce],1,"mean"]) - for (cc in (1:configs.count)) { - lines(c(ce+0.41,ce+0.49),c(values[experiments.labels[ce],cc,"mean"]+values[experiments.labels[ce],cc,"ci95%"],values[experiments.labels[ce],cc,"mean"]+values[experiments.labels[ce],cc,"ci95%"]),col="black") - lines(c(ce+0.45,ce+0.45),c(values[experiments.labels[ce],cc,"mean"]+values[experiments.labels[ce],cc,"ci95%"],values[experiments.labels[ce],cc,"mean"]-values[experiments.labels[ce],cc,"ci95%"]),col="black") - lines(c(ce+0.41,ce+0.49),c(values[experiments.labels[ce],cc,"mean"]-values[experiments.labels[ce],cc,"ci95%"],values[experiments.labels[ce],cc,"mean"]-values[experiments.labels[ce],cc,"ci95%"]),col="black") - } - #median - rect(ce-0.3,values[experiments.labels[ce],3,"50%"],ce+0.3,values[experiments.labels[ce],4,"50%"],col="white",border="black") - rect(ce-0.3,values[experiments.labels[ce],3,"50%"],ce+0.3,values[experiments.labels[ce],4,"50%"],angle=45,density=30) - rect(ce-0.3,values[experiments.labels[ce],2,"50%"],ce+0.3,values[experiments.labels[ce],3,"50%"],col="white",border="black") - rect(ce-0.3,values[experiments.labels[ce],2,"50%"],ce+0.3,values[experiments.labels[ce],3,"50%"],angle=135,density=20) - rect(ce-0.3,values[experiments.labels[ce],1,"50%"],ce+0.3,values[experiments.labels[ce],2,"50%"],col="white",border="black") - rect(ce-0.3,values[experiments.labels[ce],1,"50%"],ce+0.3,values[experiments.labels[ce],2,"50%"],angle=45,density=10) - rect(ce-0.3,0,ce+0.3,values[experiments.labels[ce],1,"50%"],col="white",border="black") - rect(ce-0.3,0,ce+0.3,values[experiments.labels[ce],1,"50%"],angle=135,density=5) - for (cc in (1:configs.count)) { - lines(c(ce-0.39,ce-0.31),c(values[experiments.labels[ce],cc,"75%"],values[experiments.labels[ce],cc,"75%"]),col="black") - lines(c(ce-0.35,ce-0.35),c(values[experiments.labels[ce],cc,"25%"],values[experiments.labels[ce],cc,"75%"]),col="black") - lines(c(ce-0.39,ce-0.31),c(values[experiments.labels[ce],cc,"25%"],values[experiments.labels[ce],cc,"25%"]),col="black") - } - for (cc in (2:configs.count)) { - labeltext=formatC(values[experiments.labels[ce],cc,"50%"]-values[experiments.labels[ce],cc-1,"50%"],format="f",digits=1) - rect(ce-(strwidth(labeltext)*0.5),values[experiments.labels[ce],cc,"50%"]-strheight(labeltext),ce+(strwidth(labeltext)*0.5),values[experiments.labels[ce],cc,"50%"],col="white",border="black") - text(ce,values[experiments.labels[ce],cc,"50%"],labels=labeltext,cex=0.75,col="black",pos=1,offset=0.1) - } -} -axis(1, at=c(1:experiments), labels=experiments.labels,) -axis(2) -invisible(dev.off()) diff --git a/bin/2012-msept/r-scripts/benchmark-manual-linear.r b/bin/2012-msept/r-scripts/benchmark-manual-linear.r deleted file mode 100644 index 65bd6a5c88de3d534d9a85edfc99e065e4a9c96d..0000000000000000000000000000000000000000 --- a/bin/2012-msept/r-scripts/benchmark-manual-linear.r +++ /dev/null @@ -1,86 +0,0 @@ -#DO NOT REMOVE IN TRUNK - -rm(list=ls(all=TRUE)) -output_fn="tmp/results-linear.pdf" - -configs.labels=c("Method Time (T)","Instrumentation (I)","Collecting (C)","Writing (W)") -configs.count=4 -experiments.labels=c(1,2,4,8,16,32) -experiments=length(experiments.labels) - -values <- array(dim=c(experiments,configs.count,5),dimnames=list(experiments.labels,configs.labels,c("mean","ci95%","25%","50%","75%"))) -values[1,,] <- c( ## Recurion: 1 -c(500.9148,500.7178,502.4994,506.1791), -c(000.0053,000.0072,000.0116,000.0132), -c(500.7400,500.6940,502.4630,505.9500), -c(500.7720,500.6970,502.4700,506.1120), -c(500.7780,500.7010,502.4860,506.2810)) -values[2,,] <- c( ## Recurion: 2 -c(500.7466,500.9628,503.9345,509.7061), -c(000.0015,000.0106,000.0169,000.0289), -c(500.7110,500.9290,503.7250,506.9960), -c(500.7160,500.9350,503.7380,507.1100), -c(500.7730,500.9520,503.7610,507.2550)) -values[3,,] <- c( ## Recurion: 4 -c(500.5895,501.6030,506.6734,516.7760), -c(000.0006,000.0194,000.0212,000.0318), -c(500.5740,501.3870,506.6070,512.2710), -c(500.5780,501.4010,506.6300,512.8730), -c(500.5790,501.4180,506.6590,513.6340)) -values[4,,] <- c( ## Recurion: 8 -c(500.7533,502.1930,512.2916,525.5919), -c(000.0012,000.0212,000.0272,000.0330), -c(500.6800,501.8580,512.0390,521.6750), -c(500.6920,501.9060,512.0770,522.4610), -c(500.8120,501.9570,512.1300,523.4330)) -values[5,,] <- c( ## Recurion: 16 -c(500.7701,503.7855,522.9221,547.4414), -c(000.0010,000.0312,000.0381,000.0537), -c(500.7610,503.3290,522.7040,540.4120), -c(500.7620,503.4100,522.7600,542.8270), -c(500.7620,503.4660,522.8350,548.4320)) -values[6,,] <- c( ## Recurion: 32 -c(500.8480,505.9303,545.1048,594.3592), -c(000.0003,000.0438,000.0533,000.0574), -c(500.8330,505.7180,544.5120,585.2360), -c(500.8520,505.7610,544.5730,590.5410), -c(500.8530,505.8290,544.6690,598.3160)) -#values[7,,] <- c( ## Recurion: 64 -#c(500.8252,511.4201,589.9483,664.7972), -#c(000.0005,000.0604,000.0788,000.1128), -#c(500.8060,511.0150,589.2420,651.5450), -#c(500.8080,511.1540,589.3710,659.1720), -#c(500.8120,511.2450,589.5330,670.4540)) - -pdf(output_fn, width=8, height=5, paper="special") -plot.new() -plot.window(xlim=c(0.5,max(experiments.labels)+0.5),ylim=c(500,600)) -title(xlab="Experiment",ylab="Execution time (µs)") -legend.labels=c("Writing (W)","Instrumentation (I)","Collecting (C)","Method Time (T)") -legend("topleft",inset=c(0.05,0.05),legend=legend.labels,fill=TRUE,angle=c(45,45,135,135),density=c(30,10,20,5),title="Overhead (median with quartiles) of ...",ncol=2) -for (ce in experiments.labels) { - #median - rect(ce-0.4,values[(1:length(experiments.labels))[experiments.labels==ce],3,"50%"],ce+0.4,values[(1:length(experiments.labels))[experiments.labels==ce],4,"50%"],col="white",border="black") - rect(ce-0.4,values[(1:length(experiments.labels))[experiments.labels==ce],3,"50%"],ce+0.4,values[(1:length(experiments.labels))[experiments.labels==ce],4,"50%"],angle=45,density=30) - rect(ce-0.4,values[(1:length(experiments.labels))[experiments.labels==ce],2,"50%"],ce+0.4,values[(1:length(experiments.labels))[experiments.labels==ce],3,"50%"],col="white",border="black") - rect(ce-0.4,values[(1:length(experiments.labels))[experiments.labels==ce],2,"50%"],ce+0.4,values[(1:length(experiments.labels))[experiments.labels==ce],3,"50%"],angle=135,density=20) - rect(ce-0.4,values[(1:length(experiments.labels))[experiments.labels==ce],1,"50%"],ce+0.4,values[(1:length(experiments.labels))[experiments.labels==ce],2,"50%"],col="white",border="black") - rect(ce-0.4,values[(1:length(experiments.labels))[experiments.labels==ce],1,"50%"],ce+0.4,values[(1:length(experiments.labels))[experiments.labels==ce],2,"50%"],angle=45,density=10) - rect(ce-0.4,0,ce+0.4,values[(1:length(experiments.labels))[experiments.labels==ce],1,"50%"],col="white",border="black") - rect(ce-0.4,0,ce+0.4,values[(1:length(experiments.labels))[experiments.labels==ce],1,"50%"],angle=135,density=5) - for (cc in (1:configs.count)) { - lines(c(ce+1-0.3,ce+1+0.3),c(values[(1:length(experiments.labels))[experiments.labels==ce],cc,"75%"],values[(1:length(experiments.labels))[experiments.labels==ce],cc,"75%"]),col="black") - lines(c(ce+1,ce+1),c(values[(1:length(experiments.labels))[experiments.labels==ce],cc,"25%"],values[(1:length(experiments.labels))[experiments.labels==ce],cc,"75%"]),col="black") - lines(c(ce+1-0.3,ce+1+0.3),c(values[(1:length(experiments.labels))[experiments.labels==ce],cc,"25%"],values[(1:length(experiments.labels))[experiments.labels==ce],cc,"25%"]),col="black") - } -} -for (ce in experiments.labels) { #c(1,8,16,32,64) - for (cc in (2:configs.count)) { - labeltext=formatC(values[(1:length(experiments.labels))[experiments.labels==ce],cc,"50%"]-values[(1:length(experiments.labels))[experiments.labels==ce],cc-1,"50%"],format="f",digits=1) - #rect(ce-1-(strwidth(labeltext)*0.5),values[(1:length(experiments.labels))[experiments.labels==ce],cc,"50%"]-strheight(labeltext),1+ce+(strwidth(labeltext)*0.5),values[(1:length(experiments.labels))[experiments.labels==ce],cc,"50%"],col="white",border="black") - text(ce-0.5,values[(1:length(experiments.labels))[experiments.labels==ce],cc,"50%"],labels=labeltext,cex=0.75,col="black",pos=2,offset=0.1) - } -} -axis(1,at=experiments.labels,labels=experiments.labels,) -axis(2) -invisible(dev.off()) diff --git a/bin/2012-msept/r-scripts/benchmark-manual-singlethreaded.r b/bin/2012-msept/r-scripts/benchmark-manual-singlethreaded.r deleted file mode 100644 index 5b9f196883514ee17f0d49321094e6e2053ffdcd..0000000000000000000000000000000000000000 --- a/bin/2012-msept/r-scripts/benchmark-manual-singlethreaded.r +++ /dev/null @@ -1,94 +0,0 @@ -#DO NOT REMOVE IN TRUNK - -rm(list=ls(all=TRUE)) -output_fn="tmp/results-singelthreaded.pdf" - -configs.labels=c("Method Time (T)","Instrumentation (I)","Collecting (C)","Writing (W)") -configs.count=4 -experiments.labels=c("S1","S2","A1","A2","A3","A4","A5") -experiments=length(experiments.labels) - -values <- array(dim=c(experiments,configs.count,5),dimnames=list(experiments.labels,configs.labels,c("mean","ci95%","25%","50%","75%"))) -values["S1",,] <- c( ## SingleThread, 1-Core, SyncFS -c(500.7039,500.8062,501.8528,509.5831), -c(000.0001,000.0001,000.0133,000.0268), -c(500.7000,500.7900,501.7810,508.9520), -c(500.7010,500.7940,501.7900,509.1000), -c(500.7060,500.8040,501.8040,509.2740)) -values["S2",,] <- c( ## SingleThread, 2-Core (same core), SyncFS -c(500.7046,500.7976,501.8133,509.6133), -c(000.0001,000.0001,000.0007,000.0230), -c(500.7000,500.7890,501.7790,508.9720), -c(500.7010,500.7930,501.7880,509.1350), -c(500.7060,500.8010,501.8030,509.3210)) -values["A1",,] <- c( ## SingleThread, 1-Core, AsyncFS -c(500.7039,500.8062,501.8528,516.8180), -c(000.0001,000.0001,000.0133,000.0239), -c(500.7000,500.7900,501.7810,516.0790), -c(500.7010,500.7940,501.7900,516.2690), -c(500.7060,500.8040,501.8040,516.4950)) -values["A2",,] <- c( ## SingleThread, 2-Core (same core), AsyncFS -c(500.7046,500.7976,501.8133,504.5507), -c(000.0001,000.0001,000.0007,000.0045), -c(500.7000,500.7890,501.7790,504.4010), -c(500.7010,500.7930,501.7880,504.4970), -c(500.7060,500.8010,501.8030,504.6090)) -values["A3",,] <- c( ## SingleThread, 2-Core (same chip), AsyncFS -c(500.9020,500.9395,502.0425,503.6665), -c(000.0028,000.0026,000.0030,000.0048), -c(500.7000,500.7800,501.7790,502.9510), -c(500.7010,500.7870,501.7920,502.9880), -c(500.7060,500.7930,501.8090,503.0410)) -values["A4",,] <- c( ## SingleThread, 2-Core (2 chips), AsyncFS -c(500.7165,500.7509,501.8327,504.4420), -c(000.0005,000.0002,000.0008,000.0027), -c(500.7000,500.6440,501.7810,504.3080), -c(500.7010,500.7860,501.7960,504.3980), -c(500.7060,500.7910,501.8220,504.5140)) -values["A5",,] <- c( ## SingleThread, 16-Core (2 chips), AsyncFS -c(500.7626,500.8171,501.8406,504.6068), -c(000.0015,000.0014,000.0019,000.0028), -c(500.7000,500.7800,501.7740,504.3580), -c(500.7010,500.7890,501.7850,504.4600), -c(500.7060,500.7960,501.8080,504.5880)) - -pdf(output_fn, width=8, height=5, paper="special") -plot.new() -plot.window(xlim=c(0.5,experiments+0.5),ylim=c(500,517)) -title(xlab="Experiment",ylab="Execution time (µs)") -legend.labels=c("Writing (W)","Instrumentation (I) ","(mean values)","Collecting (C)","Method Time (T)") -legend("topright",inset=c(0.0,0.05),legend=legend.labels,fill=TRUE,angle=c(45,45,0,135,135),density=c(30,10,0,20,5),title="Overhead (median with quartiles) of ...",ncol=2) -for (ce in c(1:experiments)) { - #meanvalues - rect(ce-0.2,values[experiments.labels[ce],3,"mean"],ce+0.4,values[experiments.labels[ce],4,"mean"]) - rect(ce-0.2,values[experiments.labels[ce],2,"mean"],ce+0.4,values[experiments.labels[ce],3,"mean"]) - rect(ce-0.2,values[experiments.labels[ce],1,"mean"],ce+0.4,values[experiments.labels[ce],2,"mean"]) - rect(ce-0.2,0,ce+0.4,values[experiments.labels[ce],1,"mean"]) - for (cc in (1:configs.count)) { - lines(c(ce+0.41,ce+0.49),c(values[experiments.labels[ce],cc,"mean"]+values[experiments.labels[ce],cc,"ci95%"],values[experiments.labels[ce],cc,"mean"]+values[experiments.labels[ce],cc,"ci95%"]),col="black") - lines(c(ce+0.45,ce+0.45),c(values[experiments.labels[ce],cc,"mean"]+values[experiments.labels[ce],cc,"ci95%"],values[experiments.labels[ce],cc,"mean"]-values[experiments.labels[ce],cc,"ci95%"]),col="black") - lines(c(ce+0.41,ce+0.49),c(values[experiments.labels[ce],cc,"mean"]-values[experiments.labels[ce],cc,"ci95%"],values[experiments.labels[ce],cc,"mean"]-values[experiments.labels[ce],cc,"ci95%"]),col="black") - } - #median - rect(ce-0.3,values[experiments.labels[ce],3,"50%"],ce+0.3,values[experiments.labels[ce],4,"50%"],col="white",border="black") - rect(ce-0.3,values[experiments.labels[ce],3,"50%"],ce+0.3,values[experiments.labels[ce],4,"50%"],angle=45,density=30) - rect(ce-0.3,values[experiments.labels[ce],2,"50%"],ce+0.3,values[experiments.labels[ce],3,"50%"],col="white",border="black") - rect(ce-0.3,values[experiments.labels[ce],2,"50%"],ce+0.3,values[experiments.labels[ce],3,"50%"],angle=135,density=20) - rect(ce-0.3,values[experiments.labels[ce],1,"50%"],ce+0.3,values[experiments.labels[ce],2,"50%"],col="white",border="black") - rect(ce-0.3,values[experiments.labels[ce],1,"50%"],ce+0.3,values[experiments.labels[ce],2,"50%"],angle=45,density=10) - rect(ce-0.3,0,ce+0.3,values[experiments.labels[ce],1,"50%"],col="white",border="black") - rect(ce-0.3,0,ce+0.3,values[experiments.labels[ce],1,"50%"],angle=135,density=5) - for (cc in (1:configs.count)) { - lines(c(ce-0.39,ce-0.31),c(values[experiments.labels[ce],cc,"75%"],values[experiments.labels[ce],cc,"75%"]),col="black") - lines(c(ce-0.35,ce-0.35),c(values[experiments.labels[ce],cc,"25%"],values[experiments.labels[ce],cc,"75%"]),col="black") - lines(c(ce-0.39,ce-0.31),c(values[experiments.labels[ce],cc,"25%"],values[experiments.labels[ce],cc,"25%"]),col="black") - } - for (cc in (2:configs.count)) { - labeltext=formatC(values[experiments.labels[ce],cc,"50%"]-values[experiments.labels[ce],cc-1,"50%"],format="f",digits=1) - rect(ce-(strwidth(labeltext)*0.5),values[experiments.labels[ce],cc,"50%"]-strheight(labeltext),ce+(strwidth(labeltext)*0.5),values[experiments.labels[ce],cc,"50%"],col="white",border="black") - text(ce,values[experiments.labels[ce],cc,"50%"],labels=labeltext,cex=0.75,col="black",pos=1,offset=0.1) - } -} -axis(1, at=c(1:experiments), labels=experiments.labels,) -axis(2) -invisible(dev.off()) diff --git a/bin/2012-msept/r-scripts/benchmark-manual-threaded.r b/bin/2012-msept/r-scripts/benchmark-manual-threaded.r deleted file mode 100644 index ef127453f5426797db65113b765ef858e56885f5..0000000000000000000000000000000000000000 --- a/bin/2012-msept/r-scripts/benchmark-manual-threaded.r +++ /dev/null @@ -1,79 +0,0 @@ -#DO NOT REMOVE IN TRUNK -output_fn="tmp/results-threaded.pdf" - -configs.labels=c("Method Time (T)","Instrumentation (I)","Collecting (C)","Writing (W)") -configs.count=4 -experiments.labels=c("A1","A2","A3","A4","A5") -experiments=length(experiments.labels) -#meanvalues<-matrix(ncol=configs.count,nrow=experiments,byrow=TRUE,data=c( -# 500.7489,500.7764,501.7337,503.1575, -# 500.7836,501.0098,501.9279,503.4877, -# 500.7750,501.0741,502.1604,503.6037, -# 500.7604,501.0875,502.1860,517.7758, -# 620.6239,626.3150,626.0106,640.3472 -#)); - -values <- array(dim=c(experiments,configs.count,5),dimnames=list(experiments.labels,configs.labels,c("mean","ci95%","25%","50%","75%"))) -values["A1",,] <- c( ## Threads: 1 -c(500.7489,500.7764,501.7337,503.1575), -c(000.0005,000.0008,000.0015,000.0028), -c(500.6890,500.6450,501.6350,502.8700), -c(500.7220,500.7250,501.6670,502.9410), -c(500.8340,500.8480,501.7160,503.0360)) -values["A2",,] <- c( ## Threads: 2 -c(501.0485,500.9249,501.9057,503.3581), -c(000.0021,000.0014,000.0014,000.0016), -c(500.7790,500.7190,501.7410,503.2210), -c(500.8180,500.8730,501.7860,503.2870), -c(500.8190,500.8860,501.8280,503.3500)) -values["A3",,] <- c( ## Threads: 3 -c(500.7666,500.9818,502.1668,503.6246), -c(000.0008,000.0029,000.0050,000.0992), -c(500.6320,500.8690,502.0110,503.0900), -c(500.6470,500.9200,502.0430,503.2490), -c(500.7900,500.9370,502.0750,503.3300)) -values["A4",,] <- c( ## Threads: 4 -c(500.7412,500.9246,502.1236,515.9702), -c(000.0006,000.0023,000.0040,000.0248), -c(500.6440,500.8190,501.9420,503.2000), -c(500.6450,500.8810,502.0220,503.2910), -c(500.6630,500.9270,502.0670,503.4690)) -values["A5",,] <- c( ## Threads: 5 -c(623.6752,626.3103,626.4919,637.3185), -c(001.0527,001.0621,001.0663,001.0632), -c(500.6430,500.7990,501.9280,502.2600), -c(500.6440,500.8700,501.9980,503.1700), -c(500.6450,500.9150,502.0610,503.3190)) - -pdf(output_fn, width=8, height=5, paper="special") -plot.new() -plot.window(xlim=c(0.5,experiments+0.5),ylim=c(0,5)) -title(xlab="Experiment",ylab="Execution time (µs)") -legend.labels=c("Writing (W)","Collecting (C)","Instrumentation (I)") -legend("topleft",inset=c(0.05,0.05),legend=legend.labels,fill=TRUE,angle=c(45,135,45),density=c(30,20,10),title="Overhead (mean) of ...",ncol=1) -for (ce in 1:experiments) { - #meanvalues - rect(ce-0.3,values[experiments.labels[ce],3,"mean"]-values[experiments.labels[ce],1,"mean"],ce+0.5,values[experiments.labels[ce],4,"mean"]-values[experiments.labels[ce],1,"mean"],col="white",border="black") - rect(ce-0.3,values[experiments.labels[ce],2,"mean"]-values[experiments.labels[ce],1,"mean"],ce+0.5,values[experiments.labels[ce],3,"mean"]-values[experiments.labels[ce],1,"mean"],col="white",border="black") - rect(ce-0.3,0,ce+0.5,values[experiments.labels[ce],2,"mean"]-values[experiments.labels[ce],1,"mean"],col="white",border="black") - for (cc in (2:configs.count)) { - lines(c(ce+0.41,ce+0.49),c(values[experiments.labels[ce],cc,"mean"]-values[experiments.labels[ce],1,"mean"]+values[experiments.labels[ce],cc,"ci95%"],values[experiments.labels[ce],cc,"mean"]-values[experiments.labels[ce],1,"mean"]+values[experiments.labels[ce],cc,"ci95%"]),col="red") - lines(c(ce+0.45,ce+0.45),c(values[experiments.labels[ce],cc,"mean"]-values[experiments.labels[ce],1,"mean"]+values[experiments.labels[ce],cc,"ci95%"],values[experiments.labels[ce],cc,"mean"]-values[experiments.labels[ce],1,"mean"]-values[experiments.labels[ce],cc,"ci95%"]),col="red") - lines(c(ce+0.41,ce+0.49),c(values[experiments.labels[ce],cc,"mean"]-values[experiments.labels[ce],1,"mean"]-values[experiments.labels[ce],cc,"ci95%"],values[experiments.labels[ce],cc,"mean"]-values[experiments.labels[ce],1,"mean"]-values[experiments.labels[ce],cc,"ci95%"]),col="red") - } - #meanvalues - rect(ce-0.4,values[experiments.labels[ce],3,"50%"]-values[experiments.labels[ce],1,"50%"],ce+0.4,values[experiments.labels[ce],4,"50%"]-values[experiments.labels[ce],1,"50%"],col="white",border="black") - rect(ce-0.4,values[experiments.labels[ce],3,"50%"]-values[experiments.labels[ce],1,"50%"],ce+0.4,values[experiments.labels[ce],4,"50%"]-values[experiments.labels[ce],1,"50%"],angle=45,density=30) - rect(ce-0.4,values[experiments.labels[ce],2,"50%"]-values[experiments.labels[ce],1,"50%"],ce+0.4,values[experiments.labels[ce],3,"50%"]-values[experiments.labels[ce],1,"50%"],col="white",border="black") - rect(ce-0.4,values[experiments.labels[ce],2,"50%"]-values[experiments.labels[ce],1,"50%"],ce+0.4,values[experiments.labels[ce],3,"50%"]-values[experiments.labels[ce],1,"50%"],angle=135,density=20) - rect(ce-0.4,0,ce+0.4,values[experiments.labels[ce],2,"50%"]-values[experiments.labels[ce],1,"50%"],col="white",border="black") - rect(ce-0.4,0,ce+0.4,values[experiments.labels[ce],2,"50%"]-values[experiments.labels[ce],1,"50%"],angle=45,density=10) - for (cc in (2:configs.count)) { - lines(c(ce-0.39,ce-0.31),c(values[experiments.labels[ce],cc,"75%"]-values[experiments.labels[ce],1,"50%"],values[experiments.labels[ce],cc,"75%"]-values[experiments.labels[ce],1,"50%"]),col="red") - lines(c(ce-0.35,ce-0.35),c(values[experiments.labels[ce],cc,"25%"]-values[experiments.labels[ce],1,"50%"],values[experiments.labels[ce],cc,"75%"]-values[experiments.labels[ce],1,"50%"]),col="red") - lines(c(ce-0.39,ce-0.31),c(values[experiments.labels[ce],cc,"25%"]-values[experiments.labels[ce],1,"50%"],values[experiments.labels[ce],cc,"25%"]-values[experiments.labels[ce],1,"50%"]),col="red") - } -} -axis(1, at=c(1:experiments), labels=experiments.labels,) -axis(2) -invisible(dev.off()) diff --git a/bin/2012-msept/r-scripts/benchmark-recursive-jmx.r b/bin/2012-msept/r-scripts/benchmark-recursive-jmx.r deleted file mode 100644 index a9a4691cca137dafb9eca6e44680ce1f7325b8ba..0000000000000000000000000000000000000000 --- a/bin/2012-msept/r-scripts/benchmark-recursive-jmx.r +++ /dev/null @@ -1,55 +0,0 @@ -data_fn="tmp/" -folder_fn="results-benchmark-recursive" -results_fn=paste(data_fn,folder_fn,"/results.csv",sep="") -output_fn=paste(data_fn,folder_fn,"/results-bars.pdf",sep="") - -configs.loop=10 -configs.recursion=c(1,2,3,4,5,6,7,8,9,10) -configs.labels=c("Method Time + Instrumentation + Collecting Data (T + I + C)","Writing Data (W)") -configs.count=length(configs.labels) -results.count=2000000 -results.skip =1000000 - -## "[ recursion , config , loop ]" -meanvalues <- array(dim=c(length(configs.recursion),configs.count,configs.loop),dimnames=list(configs.recursion,configs.labels,c(1:configs.loop))) -medianvalues <- array(dim=c(length(configs.recursion),configs.count,configs.loop),dimnames=list(configs.recursion,configs.labels,c(1:configs.loop))) -for (cr in configs.recursion) { - for (cc in (1:configs.count)) { - for (cl in (1:configs.loop)) { - results_fn_temp=paste(results_fn, "-", cl, "-", cr, "-", cc, ".csv", sep="") - results=read.csv2(results_fn_temp,skip=results.skip,quote="",colClasses=c("NULL","integer"),comment.char="",col.names=c("thread_id","duration_nsec")) - meanvalues[(1:length(configs.recursion))[configs.recursion==cr],cc,cl] <- mean(results[["duration_nsec"]])/(1000) - medianvalues[(1:length(configs.recursion))[configs.recursion==cr],cc,cl] <- median(results[["duration_nsec"]])/(1000) - rm(results,results_fn_temp) - } - } -} - -pdf(output_fn, width=8, height=5, paper="special") -plot.new() -plot.window(xlim=c(min(configs.recursion)-0.5,max(configs.recursion)+0.5),ylim=c(500,max(meanvalues))) -axis(1,at=configs.recursion) -axis(2) -title(xlab="Recursion Depth (Number of Monitored Calls)",ylab="Execution Time (µs)") -legend("topleft",inset=c(0.02,0.00),legend=rev(configs.labels),fill=TRUE,angle=c(45,135),density=c(30,10),title="Overhead (median) of ...",ncol=1) -for (cr in (1:length(configs.recursion))) { - rect(cr-0.3,0,cr+0.5,mean(meanvalues[cr,1,])) - rect(cr-0.3,mean(meanvalues[cr,1,]),cr+0.5,mean(meanvalues[cr,2,])) - - rect(cr-0.4,0,cr+0.4,mean(medianvalues[cr,1,]),col="white",border="black") - rect(cr-0.4,mean(medianvalues[cr,1,]),cr+0.4,mean(medianvalues[cr,2,]),col="white",border="black") - rect(cr-0.4,0,cr+0.4,mean(medianvalues[cr,1,]),angle=135,density=10) - rect(cr-0.4,mean(medianvalues[cr,1,]),cr+0.4,mean(medianvalues[cr,2,]),angle=45,density=30) - labeltext=formatC(mean(medianvalues[cr,2,])-mean(medianvalues[cr,1,]),format="f",digits=1) - rect(cr-(strwidth(labeltext)*0.5),mean(medianvalues[cr,2,])-strheight(labeltext),cr+(strwidth(labeltext)*0.5),mean(medianvalues[cr,2,]),col="white",border="black") - text(cr,mean(medianvalues[cr,2,]),labels=labeltext,cex=0.75,col="black",pos=1,offset=0.1) -# labeltext=format(max(medianvalues[cr,2,])-mean(medianvalues[cr,1,]),digits=1,nsmall=1) -# rect(cr-(strwidth(labeltext)*0.5),mean(medianvalues[cr,2,])+0.5*strheight(labeltext),cr+(strwidth(labeltext)*0.5),mean(medianvalues[cr,2,])+1.5*strheight(labeltext),col="white",border="black") -# text(cr,mean(medianvalues[cr,2,])+1.5*strheight(labeltext),labels=labeltext,cex=0.75,col="black",pos=1,offset=0.1) -# labeltext=format(min(medianvalues[cr,2,])-mean(medianvalues[cr,1,]),digits=1,nsmall=1) -# rect(cr-(strwidth(labeltext)*0.5),mean(medianvalues[cr,2,])-2.5*strheight(labeltext),cr+(strwidth(labeltext)*0.5),mean(medianvalues[cr,2,])-1.5*strheight(labeltext),col="white",border="black") -# text(cr,mean(medianvalues[cr,2,])-1.5*strheight(labeltext),labels=labeltext,cex=0.75,col="black",pos=1,offset=0.1) -} -axis(1,at=configs.recursion) -axis(2) -invisible(dev.off()) diff --git a/bin/2012-msept/r-scripts/benchmark-recursive-onlyWriter.r b/bin/2012-msept/r-scripts/benchmark-recursive-onlyWriter.r deleted file mode 100644 index f50e3ba25e4fb8a2a9f93151a720758c81b34ee8..0000000000000000000000000000000000000000 --- a/bin/2012-msept/r-scripts/benchmark-recursive-onlyWriter.r +++ /dev/null @@ -1,64 +0,0 @@ -data_fn="tmp/" -folder_fn="results-S1" -results_fn=paste(data_fn,folder_fn,"/results.csv",sep="") -output_fn=paste(data_fn,folder_fn,"/results-bars.pdf",sep="") -outtxt_fn=paste(data_fn,folder_fn,"/results-text.txt",sep="") - -configs.loop=10 -configs.recursion=c(1) -configs.labels=c("Writing Data") -configs.count=length(configs.labels) -results.count=2000000 -results.skip =1000000 - -## "[ recursion , config , loop ]" -meanvalues <- array(dim=c(length(configs.recursion),configs.count,configs.loop,2),dimnames=list(configs.recursion,configs.labels,c(1:configs.loop),c("mean","ci95%"))) -medianvalues <- array(dim=c(length(configs.recursion),configs.count,configs.loop,3),dimnames=list(configs.recursion,configs.labels,c(1:configs.loop),c("md25%","md50%","md75%"))) -resultsBIG <- array(dim=c(length(configs.recursion),configs.count,configs.loop*(results.count-results.skip)),dimnames=list(configs.recursion,configs.labels,c(1:(configs.loop*(results.count-results.skip))))) -for (cr in configs.recursion) { - for (cc in (1:configs.count)) { - for (cl in (1:configs.loop)) { - results_fn_temp=paste(results_fn, "-", cl, "-", cr, "-", cc, ".csv", sep="") - results=read.csv2(results_fn_temp,nrows=(results.count-results.skip),skip=results.skip,quote="",colClasses=c("NULL","integer"),comment.char="",col.names=c("thread_id","duration_nsec"),header=FALSE) - resultsBIG[cr,cc,c(((cl-1)*(results.count-results.skip)+1):(cl*(results.count-results.skip)))] <- results[["duration_nsec"]]/(1000) - meanvalues[(1:length(configs.recursion))[configs.recursion==cr],cc,cl,"mean"] <- mean(results[["duration_nsec"]])/(1000) - meanvalues[(1:length(configs.recursion))[configs.recursion==cr],cc,cl,"ci95%"] <- qnorm(0.975)*sd(results[["duration_nsec"]])/1000/sqrt(length(results[["duration_nsec"]])) - medianvalues[(1:length(configs.recursion))[configs.recursion==cr],cc,cl,] <- quantile(results[["duration_nsec"]],probs=c(0.25,0.5,0.75))/1000 - rm(results,results_fn_temp) - } - } -} - -pdf(output_fn, width=8, height=5, paper="special") -plot.new() -plot.window(xlim=c(min(configs.recursion)-0.5,max(configs.recursion)+0.5),ylim=c(500,max(meanvalues[,,,"mean"]))) -axis(1,at=configs.recursion) -axis(2) -title(xlab="Recursion Depth (Number of Executions)",ylab="Execution Time (µs)") -for (cr in (1:length(configs.recursion))) { - cc=1 - printvalues = matrix(nrow=5,ncol=1,dimnames=list(c("mean","ci95%","md25%","md50%","md75%"),c(1:configs.count))) - printvalues["mean",cc] = mean(resultsBIG[cr,cc,]) #mean(meanvalues[cr,cc,,"mean"]) - printvalues["ci95%",cc] = qnorm(0.975) * sd(resultsBIG[cr,cc,]) / sqrt(length(resultsBIG[cr,cc,])) #mean(meanvalues[cr,cc,,"ci95%"]) - printvalues[c("md25%","md50%","md75%"),cc] = quantile(resultsBIG[cr,cc,],probs=c(0.25,0.5,0.75)) #mean(medianvalues[cr,cc,,"md25%"]) - #printvalues["md50%",cc]=mean(medianvalues[cr,cc,,"md50%"]) - #printvalues["md75%",cc]=mean(medianvalues[cr,cc,,"md75%"]) - #meanvalues - rect(cr-0.3,0,cr+0.5,printvalues["mean",1]) - lines(c(cr+0.41,cr+0.49),c(printvalues["mean",cc]+printvalues["ci95%",cc],printvalues["mean",cc]+printvalues["ci95%",cc]),col="red") - lines(c(cr+0.45,cr+0.45),c(printvalues["mean",cc]-printvalues["ci95%",cc],printvalues["mean",cc]+printvalues["ci95%",cc]),col="red") - lines(c(cr+0.41,cr+0.49),c(printvalues["mean",cc]-printvalues["ci95%",cc],printvalues["mean",cc]-printvalues["ci95%",cc]),col="red") - #median - rect(cr-0.4,0,cr+0.4,printvalues["md50%",1],col="white",border="black") - rect(cr-0.4,0,cr+0.4,printvalues["md50%",1],angle=135,density=5) - lines(c(cr-0.39,cr-0.31),c(printvalues["md75%",cc],printvalues["md75%",cc]),col="red") - lines(c(cr-0.35,cr-0.35),c(printvalues["md25%",cc],printvalues["md75%",cc]),col="red") - lines(c(cr-0.39,cr-0.31),c(printvalues["md25%",cc],printvalues["md25%",cc]),col="red") - labeltext=formatC(printvalues["md50%",cc]-printvalues["md50%",cc-1],format="f",digits=1) - rect(cr-(strwidth(labeltext)*0.5),printvalues["md50%",cc]-strheight(labeltext),cr+(strwidth(labeltext)*0.5),printvalues["md50%",cc],col="white",border="black") - text(cr,printvalues["md50%",cc],labels=labeltext,cex=0.75,col="black",pos=1,offset=0.1) - resultstext=formatC(printvalues,format="f",digits=4,width=8) - print(resultstext) - write.table(resultstext,file=outtxt_fn,append=TRUE,quote=FALSE,sep="\t",col.names=FALSE) -} -invisible(dev.off()) diff --git a/bin/2012-msept/r-scripts/benchmark-recursive.r b/bin/2012-msept/r-scripts/benchmark-recursive.r deleted file mode 100644 index 134c7bb9e0667831139ed6d2167b675b7d63f063..0000000000000000000000000000000000000000 --- a/bin/2012-msept/r-scripts/benchmark-recursive.r +++ /dev/null @@ -1,89 +0,0 @@ -rm(list=ls(all=TRUE)) - -data_fn="tmp/" -folder_fn="results-benchmark-recursive" -results_fn=paste(data_fn,folder_fn,"/results.csv",sep="") -output_fn=paste(data_fn,folder_fn,"/results-bars.pdf",sep="") -outtxt_fn=paste(data_fn,folder_fn,"/results-text.txt",sep="") - -configs.threads=1 -configs.loop=10 -configs.recursion=c(1) -#configs.recursion=c(1,2,3,4,5,6,7) -configs.labels=c("No Probe","Inactive Probe","Collecting Data","Writing Data") -configs.count=length(configs.labels) -results.count=2000000 -results.skip =1000000 - -## "[ recursion , config , loop ]" -meanvalues <- array(dim=c(length(configs.recursion),configs.count,configs.loop,2),dimnames=list(configs.recursion,configs.labels,c(1:configs.loop),c("mean","ci95%"))) -medianvalues <- array(dim=c(length(configs.recursion),configs.count,configs.loop,3),dimnames=list(configs.recursion,configs.labels,c(1:configs.loop),c("md25%","md50%","md75%"))) -resultsBIG <- array(dim=c(length(configs.recursion),configs.count,configs.threads*configs.loop*(results.count-results.skip)),dimnames=list(configs.recursion,configs.labels,c(1:(configs.threads*configs.loop*(results.count-results.skip))))) -for (cr in (1:length(configs.recursion))) { - for (cc in (1:configs.count)) { - for (cl in (1:configs.loop)) { - results_fn_temp=paste(results_fn, "-", cl, "-", cr, "-", cc, ".csv", sep="") - for (ct in (1:configs.threads)) { - results=read.csv2(results_fn_temp,nrows=(results.count-results.skip),skip=(ct-1)*results.count+results.skip,quote="",colClasses=c("NULL","integer"),comment.char="",col.names=c("thread_id","duration_nsec"),header=FALSE) - resultsBIG[cr,cc,c(((cl-1)*configs.threads*(results.count-results.skip)+1):(cl*configs.threads*(results.count-results.skip)))] <- results[["duration_nsec"]]/(1000) - meanvalues[cr,cc,cl,"mean"] <- mean(results[["duration_nsec"]])/(1000) - meanvalues[cr,cc,cl,"ci95%"] <- qnorm(0.975)*sd(results[["duration_nsec"]])/1000/sqrt(length(results[["duration_nsec"]])) - medianvalues[cr,cc,cl,] <- quantile(results[["duration_nsec"]],probs=c(0.25,0.5,0.75))/1000 - } - rm(results,results_fn_temp) - } - } -} - -pdf(output_fn, width=8, height=5, paper="special") -plot.new() -plot.window(xlim=c(min(configs.recursion)-0.5,max(configs.recursion)+0.5),ylim=c(500,max(meanvalues[,,,"mean"]))) -axis(1,at=configs.recursion) -axis(2) -title(xlab="Recursion Depth (Number of Executions)",ylab="Execution Time (µs)") -for (cr in configs.recursion) { - printvalues = matrix(nrow=5,ncol=4,dimnames=list(c("mean","ci95%","md25%","md50%","md75%"),c(1:configs.count))) - for (cc in (1:configs.count)) { - printvalues["mean",cc]=mean(resultsBIG[(1:length(configs.recursion))[configs.recursion==cr],cc,c(1:(results.count-results.skip))]) - printvalues["ci95%",cc]=qnorm(0.975)*sd(resultsBIG[(1:length(configs.recursion))[configs.recursion==cr],cc,c(1:(results.count-results.skip))])/sqrt(length(resultsBIG[(1:length(configs.recursion))[configs.recursion==cr],cc,c(1:(results.count-results.skip))])) - printvalues[c("md25%","md50%","md75%"),cc]=quantile(resultsBIG[(1:length(configs.recursion))[configs.recursion==cr],cc,c(1:(results.count-results.skip))],probs=c(0.25,0.5,0.75)) - #printvalues["mean",cc]=mean(meanvalues[cr,cc,,"mean"]) - #printvalues["ci95%",cc]=mean(meanvalues[cr,cc,,"ci95%"]) - #printvalues["md50%",cc]=mean(medianvalues[cr,cc,,"md25%"]) - #printvalues["md50%",cc]=mean(medianvalues[cr,cc,,"md50%"]) - #printvalues["md75%",cc]=mean(medianvalues[cr,cc,,"md75%"]) - } - #meanvalues - rect(cr-0.3,printvalues["mean",3],cr+0.5,printvalues["mean",4]) - rect(cr-0.3,printvalues["mean",2],cr+0.5,printvalues["mean",3]) - rect(cr-0.3,printvalues["mean",1],cr+0.5,printvalues["mean",2]) - rect(cr-0.3,0,cr+0.5,printvalues["mean",1]) - for (cc in (1:configs.count)) { - lines(c(cr+0.41,cr+0.49),c(printvalues["mean",cc]+printvalues["ci95%",cc],printvalues["mean",cc]+printvalues["ci95%",cc]),col="red") - lines(c(cr+0.45,cr+0.45),c(printvalues["mean",cc]-printvalues["ci95%",cc],printvalues["mean",cc]+printvalues["ci95%",cc]),col="red") - lines(c(cr+0.41,cr+0.49),c(printvalues["mean",cc]-printvalues["ci95%",cc],printvalues["mean",cc]-printvalues["ci95%",cc]),col="red") - } - #median - rect(cr-0.4,printvalues["md50%",3],cr+0.4,printvalues["md50%",4],col="white",border="black") - rect(cr-0.4,printvalues["md50%",3],cr+0.4,printvalues["md50%",4],angle=45,density=30) - rect(cr-0.4,printvalues["md50%",2],cr+0.4,printvalues["md50%",3],col="white",border="black") - rect(cr-0.4,printvalues["md50%",2],cr+0.4,printvalues["md50%",3],angle=135,density=20) - rect(cr-0.4,printvalues["md50%",1],cr+0.4,printvalues["md50%",2],col="white",border="black") - rect(cr-0.4,printvalues["md50%",1],cr+0.4,printvalues["md50%",2],angle=45,density=10) - rect(cr-0.4,0,cr+0.4,printvalues["md50%",1],col="white",border="black") - rect(cr-0.4,0,cr+0.4,printvalues["md50%",1],angle=135,density=5) - for (cc in (1:configs.count)) { - lines(c(cr-0.39,cr-0.31),c(printvalues["md75%",cc],printvalues["md75%",cc]),col="red") - lines(c(cr-0.35,cr-0.35),c(printvalues["md25%",cc],printvalues["md75%",cc]),col="red") - lines(c(cr-0.39,cr-0.31),c(printvalues["md25%",cc],printvalues["md25%",cc]),col="red") - } - for (cc in (2:configs.count)) { - labeltext=formatC(printvalues["md50%",cc]-printvalues["md50%",cc-1],format="f",digits=1) - rect(cr-(strwidth(labeltext)*0.5),printvalues["md50%",cc]-strheight(labeltext),cr+(strwidth(labeltext)*0.5),printvalues["md50%",cc],col="white",border="black") - text(cr,printvalues["md50%",cc],labels=labeltext,cex=0.75,col="black",pos=1,offset=0.1) - } - resultstext=formatC(printvalues,format="f",digits=4,width=8) - print(resultstext) - write.table(resultstext,file=outtxt_fn,append=TRUE,quote=FALSE,sep="\t",col.names=FALSE) -} -invisible(dev.off()) diff --git a/bin/2012-msept/r-scripts/time-series-average.r b/bin/2012-msept/r-scripts/time-series-average.r deleted file mode 100644 index c9685132614d8dc8836759eb218d0c1d315f0f66..0000000000000000000000000000000000000000 --- a/bin/2012-msept/r-scripts/time-series-average.r +++ /dev/null @@ -1,50 +0,0 @@ -rm(list=ls(all=TRUE)) - -data_fn="tmp/" -folder_fn="results-benchmark-recursive" -results_fn=paste(data_fn,folder_fn,"/results.csv",sep="") -output_fn=paste(data_fn,folder_fn,"/results-timeseries-avg.pdf",sep="") - -configs.loop=10 -configs.recursion=1 -configs.count=4 -configs.labels=c("No Probe","Deactivated Probe","Collecting Data","Writing Data") -configs.colors=c("black","red","blue","green") - -## We assume same amount of data in each category -results.count=2000000 -buckets.count=1000 -buckets.size=results.count/buckets.count - -pdf(output_fn, width=10, height=6.25, paper="special") -for (cr in (1:configs.recursion)) { - results.ts = matrix(nrow=configs.count,ncol=buckets.count,byrow=TRUE,dimnames=list(configs.labels,c(1:buckets.count))) - if (exists("results.temp")) rm(results.temp) - for (cc in (1:configs.count)) { - for (cl in (1:configs.loop)) { - results_fn_temp=paste(results_fn, "-", cl, "-", cr, "-", cc, ".csv", sep="") - results=read.csv2(results_fn_temp,quote="",colClasses=c("NULL","integer"),comment.char="",col.names=c("thread_id","duration_nsec"),nrows=results.count) - if (exists("results.temp")) { - results.temp = data.frame(results.temp,results["duration_nsec"]/(1000)) - } else { - results.temp = data.frame(results["duration_nsec"]/(1000)) - } - rm(results,results_fn_temp) - } - results = rowMeans(results.temp) - rm(results.temp) - for (ci in (1:buckets.count)) { - results.ts[cc,ci] <- mean(results[(((ci-1)*buckets.size)+1):(ci*buckets.size)]) - } - rm(results) - } - ts.plot( - ts(results.ts[1,],end=results.count,deltat=buckets.size), - ts(results.ts[2,],end=results.count,deltat=buckets.size), - ts(results.ts[3,],end=results.count,deltat=buckets.size), - ts(results.ts[4,],end=results.count,deltat=buckets.size), - gpars=list(ylim=c(500,510),col=configs.colors),xlab="Executions") - legend("topright",inset=c(0.01,0.01),legend=c(rev(configs.labels)),lty="solid",col=rev(configs.colors),bg="white",title="Mean execution time of ...",ncol=2) - title(main=paste("Recursion Depth: ", cr),ylab="Execution Time (µs)") -} -invisible(dev.off()) diff --git a/bin/2012-msept/r-scripts/time-series-jmx-average.r b/bin/2012-msept/r-scripts/time-series-jmx-average.r deleted file mode 100644 index 8ab1ba75b9b79e7a3f2b39c53d006b6a1a87579b..0000000000000000000000000000000000000000 --- a/bin/2012-msept/r-scripts/time-series-jmx-average.r +++ /dev/null @@ -1,50 +0,0 @@ -rm(list=ls(all=TRUE)) - -data_fn="tmp/" -folder_fn="results-benchmark-recursive" -results_fn=paste(data_fn,folder_fn,"/results.csv",sep="") -output_fn=paste(data_fn,folder_fn,"/results-timeseries-avg.pdf",sep="") - -configs.loop=10 -configs.recursion=10 -configs.count=2 -configs.labels=c("Collecting Data","Writing Data") -configs.colors=c("red","green") - -## We assume same amount of data in each category -results.count=2000000 -buckets.count=1000 -buckets.size=results.count/buckets.count - - - -pdf(output_fn, width=10, height=6.25, paper="special") -for (cr in (1:configs.recursion)) { - results.ts = matrix(nrow=configs.count,ncol=buckets.count,byrow=TRUE,dimnames=list(configs.labels,c(1:buckets.count))) - if (exists("results.temp")) rm(results.temp) - for (cc in (1:configs.count)) { - for (cl in (1:configs.loop)) { - results_fn_temp=paste(results_fn, "-", cl, "-", cr, "-", cc, ".csv", sep="") - results=read.csv2(results_fn_temp,quote="",colClasses=c("NULL","integer"),comment.char="",col.names=c("thread_id","duration_nsec")) - if (exists("results.temp")) { - results.temp = data.frame(results.temp,results["duration_nsec"]/(1000)) - } else { - results.temp = data.frame(results["duration_nsec"]/(1000)) - } - rm(results,results_fn_temp) - } - results = rowMeans(results.temp) - rm(results.temp) - for (ci in (1:buckets.count)) { - results.ts[cc,ci] <- mean(results[(((ci-1)*buckets.size)+1):(ci*buckets.size)]) - } - rm(results) - } - ts.plot( - ts(results.ts[1,],end=results.count,deltat=buckets.size), - ts(results.ts[2,],end=results.count,deltat=buckets.size), - gpars=list(ylim=c(500,520),col=configs.colors,xlab="Executions")) - legend("topright",inset=c(0.01,0.01),legend=c(rev(configs.labels)),lty="solid",col=rev(configs.colors),bg="white",title="Mean execution time of ...",ncol=2) - title(main=paste("Recursion Depth: ", cr, sep=""),ylab="Execution Time (µs)") -} -invisible(dev.off()) diff --git a/bin/2012-msept/r-scripts/time-series-jmx.r b/bin/2012-msept/r-scripts/time-series-jmx.r deleted file mode 100644 index 37e065531dbe17b0f37852c03a9f7274a77ee591..0000000000000000000000000000000000000000 --- a/bin/2012-msept/r-scripts/time-series-jmx.r +++ /dev/null @@ -1,44 +0,0 @@ -rm(list=ls(all=TRUE)) - -data_fn="tmp/" -folder_fn="results-benchmark-recursive" -results_fn=paste(data_fn,folder_fn,"/results.csv",sep="") -output_fn=paste(data_fn,folder_fn,"/results-timeseries.pdf",sep="") - -configs.loop=10 -configs.recursion=10 -configs.count=2 -configs.labels=c("Collecting Data","Writing Data") -configs.colors=c("red","green") - -## We assume same amount of data in each category -results.count=2000000 -buckets.count=1000 -buckets.size=results.count/buckets.count - - -results.ts = matrix(nrow=configs.count,ncol=buckets.count,byrow=TRUE,dimnames=list(configs.labels,c(1:buckets.count))) - -pdf(output_fn, width=10, height=6.25, paper="special") - -for (cr in (1:configs.recursion)) { - for (cl in (1:configs.loop)) { - for (cc in (1:configs.count)) { - results_fn_temp=paste(results_fn, "-", cl, "-", cr, "-", cc, ".csv", sep="") - results=read.csv2(results_fn_temp,quote="",colClasses=c("NULL","integer"),comment.char="",col.names=c("thread_id","duration_nsec")) - results["rt_musec"]=results["duration_nsec"]/(1000) - results$duration_nsec <- NULL - for (ci in (1:buckets.count)) { - results.ts[cc,ci] <- mean(results[(((ci-1)*buckets.size)+1):(ci*buckets.size),"rt_musec"]) - } - rm(results,results_fn_temp) - } - ts.plot( - ts(results.ts[1,],end=results.count,deltat=buckets.size), - ts(results.ts[2,],end=results.count,deltat=buckets.size), - gpars=list(ylim=c(500,520),col=configs.colors,xlab="Executions")) - legend("topright",inset=c(0.01,0.01),legend=c(rev(configs.labels)),lty="solid",col=rev(configs.colors),bg="white",title="Mean execution time of ...",ncol=2) - title(main=paste("Iteration: ", cl, " Recursion Depth: ", cr, sep=""),ylab="Execution Time (µs)") - } -} -invisible(dev.off()) diff --git a/bin/2012-msept/r-scripts/time-series.r b/bin/2012-msept/r-scripts/time-series.r deleted file mode 100644 index c26b5f2a7e88ea4883a4d46c9ee0d1b3340562cd..0000000000000000000000000000000000000000 --- a/bin/2012-msept/r-scripts/time-series.r +++ /dev/null @@ -1,45 +0,0 @@ -rm(list=ls(all=TRUE)) - -data_fn="tmp/" -folder_fn="results-benchmark-recursive" -results_fn=paste(data_fn,folder_fn,"/results.csv",sep="") -output_fn=paste(data_fn,folder_fn,"/results-timeseries.pdf",sep="") - -configs.loop=10 -configs.recursion=1 -configs.count=4 -configs.labels=c("No Probe","Deactivated Probe","Collecting Data","Writing Data") -configs.colors=c("black","red","blue","green") - -## We assume same amount of data in each category -results.count=2000000 -buckets.count=1000 -buckets.size=results.count/buckets.count - - -pdf(output_fn, width=10, height=6.25, paper="special") - -for (cr in (1:configs.recursion)) { - for (cl in (1:configs.loop)) { - results.ts = matrix(nrow=configs.count,ncol=buckets.count,byrow=TRUE,dimnames=list(configs.labels,c(1:buckets.count))) - for (cc in (1:configs.count)) { - results_fn_temp=paste(results_fn, "-", cl, "-", cr, "-", cc, ".csv", sep="") - results=read.csv2(results_fn_temp,quote="",colClasses=c("NULL","integer"),comment.char="",col.names=c("thread_id","duration_nsec"),nrows=results.count) - results["rt_musec"]=results["duration_nsec"]/(1000) - results$duration_nsec <- NULL - for (ci in (1:buckets.count)) { - results.ts[cc,ci] <- mean(results[(((ci-1)*buckets.size)+1):(ci*buckets.size),"rt_musec"]) - } - rm(results,results_fn_temp) - } - ts.plot( - ts(results.ts[1,],end=results.count,deltat=buckets.size), - ts(results.ts[2,],end=results.count,deltat=buckets.size), - ts(results.ts[3,],end=results.count,deltat=buckets.size), - ts(results.ts[4,],end=results.count,deltat=buckets.size), - gpars=list(ylim=c(500,510),col=configs.colors,xlab="Executions")) - legend("topright",inset=c(0.01,0.01),legend=c(rev(configs.labels)),lty="solid",col=rev(configs.colors),bg="white",title="Mean execution time of ...",ncol=2) - title(main=paste("Iteration: ", cl, " Recursion Depth: ", cr),ylab="Execution Time (µs)") - } -} -invisible(dev.off()) diff --git a/bin/2012-msept/run-benchmark-cycle-async.sh b/bin/2012-msept/run-benchmark-cycle-async.sh deleted file mode 100644 index ab6b636c1e060a5478bba954deeb923e52d1edf1..0000000000000000000000000000000000000000 --- a/bin/2012-msept/run-benchmark-cycle-async.sh +++ /dev/null @@ -1,154 +0,0 @@ -#!/bin/bash - -BIN_DIR=bin/ -BASE_DIR= - -# determine correct classpath separator -CPSEPCHAR=":" # default :, ; for windows -if [ ! -z "$(uname | grep -i WIN)" ]; then CPSEPCHAR=";"; fi -# echo "Classpath separator: '${CPSEPCHAR}'" - -RESULTS_DIR="${BASE_DIR}/tmp/results-benchmark-recursive/" -echo "Removing and recreating '${RESULTS_DIR}'" -(${SUDOCMD} rm -rf ${RESULTS_DIR}) && mkdir ${RESULTS_DIR} -mkdir ${RESULTS_DIR}/stat/ - -# Clear kieker.log and initialize logging -rm -f ${BASE_DIR}/kieker.log -touch ${BASE_DIR}/kieker.log - -RESULTSFN="${RESULTS_DIR}/results.csv" - -JAVA_ARGS="-server" -JAVA_ARGS="${JAVA_ARGS} -d64" -JAVA_ARGS="${JAVA_ARGS} -Xms1G -Xmx1G" -JAVA_ARGS="${JAVA_ARGS} -verbose:gc -XX:+PrintCompilation" -#JAVA_ARGS="${JAVA_ARGS} -XX:+PrintInlining" -#JAVA_ARGS="${JAVA_ARGS} -XX:+UnlockDiagnosticVMOptions -XX:+LogCompilation" -#JAVA_ARGS="${JAVA_ARGS} -Djava.compiler=NONE" -JAR="-jar MooBench.jar" - -JAVA_ARGS_NOINSTR="${JAVA_ARGS}" -JAVA_ARGS_LTW="${JAVA_ARGS} -javaagent:${BASE_DIR}/lib/kieker-1.9-SNAPSHOT_aspectj.jar -Dorg.aspectj.weaver.showWeaveInfo=false -Daj.weaving.verbose=false" -JAVA_ARGS_KIEKER_DEACTV="${JAVA_ARGS_LTW} -Dkieker.monitoring.adaptiveMonitoring.configFile=META-INF/kieker.monitoring.adaptiveMonitoring.disabled.conf -Dkieker.monitoring.writer=kieker.monitoring.writer.DummyWriter" -JAVA_ARGS_KIEKER_NOLOGGING="${JAVA_ARGS_LTW} -Dkieker.monitoring.writer=kieker.monitoring.writer.DummyWriter" -JAVA_ARGS_KIEKER_LOGGING="${JAVA_ARGS_LTW} -Dkieker.monitoring.writer=kieker.monitoring.writer.filesystem.AsyncFsWriter -Dkieker.monitoring.writer.filesystem.AsyncFsWriter.customStoragePath=${BASE_DIR}/tmp" - -## Write configuration -uname -a >${RESULTS_DIR}/configuration.txt -java ${JAVA_ARGS} -version 2>>${RESULTS_DIR}/configuration.txt -echo "JAVA_ARGS: ${JAVA_ARGS}" >>${RESULTS_DIR}/configuration.txt -echo "" >>${RESULTS_DIR}/configuration.txt -echo "Runtime: circa ${TIME} seconds" >>${RESULTS_DIR}/configuration.txt -echo "" >>${RESULTS_DIR}/configuration.txt -echo "SLEEP_TIME=${SLEEP_TIME}" >>${RESULTS_DIR}/configuration.txt -echo "NUM_LOOPS=${NUM_LOOPS}" >>${RESULTS_DIR}/configuration.txt -echo "TOTAL_CALLS=${TOTAL_CALLS}" >>${RESULTS_DIR}/configuration.txt -echo "METHOD_TIME=${METHOD_TIME}" >>${RESULTS_DIR}/configuration.txt -echo "THREADS=${THREADS}" >>${RESULTS_DIR}/configuration.txt -echo "RECURSION_DEPTH=${RECURSION_DEPTH}" >>${RESULTS_DIR}/configuration.txt -sync - -## Execute Benchmark - -for ((i=1;i<=${NUM_LOOPS};i+=1)); do - echo "## Starting iteration ${i}/${NUM_LOOPS}" - - for ((j=1;j<=${RECURSION_DEPTH};j+=1)); do - echo "# Starting recursion ${i}.${j}/${RECURSION_DEPTH}" - - # 1 No instrumentation - echo " # ${i}.1 No instrumentation" - mpstat 1 > ${RESULTS_DIR}/stat/mpstat-${i}-${j}-1.txt & - vmstat 1 > ${RESULTS_DIR}/stat/vmstat-${i}-${j}-1.txt & - iostat -xn 10 > ${RESULTS_DIR}/stat/iostat-${i}-${j}-1.txt & - ${BINDJAVA} java ${JAVA_ARGS_NOINSTR} ${JAR} \ - --output-filename ${RESULTSFN}-${i}-${j}-1.csv \ - --total-calls ${TOTAL_CALLS} \ - --method-time ${METHOD_TIME} \ - --total-threads ${THREADS} \ - --recursion-depth ${j} - kill %mpstat - kill %vmstat - kill %iostat - [ -f ${BASE_DIR}/hotspot.log ] && mv ${BASE_DIR}/hotspot.log ${RESULTS_DIR}/hotspot-${i}-${j}-1.log - sync - sleep ${SLEEP_TIME} - - # 2 Deactivated probe - echo " # ${i}.2 Deactivated probe" - mpstat 1 > ${RESULTS_DIR}/stat/mpstat-${i}-${j}-2.txt & - vmstat 1 > ${RESULTS_DIR}/stat/vmstat-${i}-${j}-2.txt & - iostat -xn 10 > ${RESULTS_DIR}/stat/iostat-${i}-${j}-2.txt & - ${BINDJAVA} java ${JAVA_ARGS_KIEKER_DEACTV} ${JAR} \ - --output-filename ${RESULTSFN}-${i}-${j}-2.csv \ - --total-calls ${TOTAL_CALLS} \ - --method-time ${METHOD_TIME} \ - --total-threads ${THREADS} \ - --recursion-depth ${j} - kill %mpstat - kill %vmstat - kill %iostat - [ -f ${BASE_DIR}/hotspot.log ] && mv ${BASE_DIR}/hotspot.log ${RESULTS_DIR}/hotspot-${i}-${j}-2.log - echo >>${BASE_DIR}/kieker.log - echo >>${BASE_DIR}/kieker.log - sync - sleep ${SLEEP_TIME} - - # 3 No logging - echo " # ${i}.3 No logging (null writer)" - mpstat 1 > ${RESULTS_DIR}/stat/mpstat-${i}-${j}-3.txt & - vmstat 1 > ${RESULTS_DIR}/stat/vmstat-${i}-${j}-3.txt & - iostat -xn 10 > ${RESULTS_DIR}/stat/iostat-${i}-${j}-3.txt & - ${BINDJAVA} java ${JAVA_ARGS_KIEKER_NOLOGGING} ${JAR} \ - --output-filename ${RESULTSFN}-${i}-${j}-3.csv \ - --total-calls ${TOTAL_CALLS} \ - --method-time ${METHOD_TIME} \ - --total-threads ${THREADS} \ - --recursion-depth ${j} - kill %mpstat - kill %vmstat - kill %iostat - [ -f ${BASE_DIR}/hotspot.log ] && mv ${BASE_DIR}/hotspot.log ${RESULTS_DIR}/hotspot-${i}-${j}-3.log - echo >>${BASE_DIR}/kieker.log - echo >>${BASE_DIR}/kieker.log - sync - sleep ${SLEEP_TIME} - - # 4 Logging - echo " # ${i}.4 Logging" - mpstat 1 > ${RESULTS_DIR}/stat/mpstat-${i}-${j}-4.txt & - vmstat 1 > ${RESULTS_DIR}/stat/vmstat-${i}-${j}-4.txt & - iostat -xn 10 > ${RESULTS_DIR}/stat/iostat-${i}-${j}-4.txt & - ${BINDJAVA} java ${JAVA_ARGS_KIEKER_LOGGING} ${JAR} \ - --output-filename ${RESULTSFN}-${i}-${j}-4.csv \ - --total-calls ${TOTAL_CALLS} \ - --method-time ${METHOD_TIME} \ - --total-threads ${THREADS} \ - --recursion-depth ${j} - kill %mpstat - kill %vmstat - kill %iostat - mkdir -p ${RESULTS_DIR}/kiekerlog/ - mv ${BASE_DIR}/tmp/kieker-* ${RESULTS_DIR}/kiekerlog/ - [ -f ${BASE_DIR}/hotspot.log ] && mv ${BASE_DIR}/hotspot.log ${RESULTS_DIR}/hotspot-${i}-${j}-4.log - echo >>${BASE_DIR}/kieker.log - echo >>${BASE_DIR}/kieker.log - sync - sleep ${SLEEP_TIME} - - done - -done -tar cf ${RESULTS_DIR}/kiekerlog.tar ${RESULTS_DIR}/kiekerlog -${SUDOCMD} rm -rf ${RESULTS_DIR}/kiekerlog/ -gzip -9 ${RESULTS_DIR}/kiekerlog.tar -tar cf ${RESULTS_DIR}/stat.tar ${RESULTS_DIR}/stat -rm -rf ${RESULTS_DIR}/stat/ -gzip -9 ${RESULTS_DIR}/stat.tar -mv ${BASE_DIR}/kieker.log ${RESULTS_DIR}/kieker.log -[ -f ${RESULTS_DIR}/hotspot-1-1-1.log ] && grep "<task " ${RESULTS_DIR}/hotspot-*.log >${RESULTS_DIR}/log.log -[ -f ${BASE_DIR}/nohup.out ] && cp ${BASE_DIR}/nohup.out ${RESULTS_DIR} -echo -n "" > ${BASE_DIR}/nohup.out -[ -f ${BASE_DIR}/errorlog.txt ] && mv ${BASE_DIR}/errorlog.txt ${RESULTS_DIR} -echo -n "" > ${BASE_DIR}/errorlog.txt diff --git a/bin/2012-msept/run-benchmark-cycle-sync.sh b/bin/2012-msept/run-benchmark-cycle-sync.sh deleted file mode 100644 index eab1e22f2772561d30768c20d5bb506fd276a0af..0000000000000000000000000000000000000000 --- a/bin/2012-msept/run-benchmark-cycle-sync.sh +++ /dev/null @@ -1,154 +0,0 @@ -#!/bin/bash - -BIN_DIR=bin/ -BASE_DIR= - -# determine correct classpath separator -CPSEPCHAR=":" # default :, ; for windows -if [ ! -z "$(uname | grep -i WIN)" ]; then CPSEPCHAR=";"; fi -# echo "Classpath separator: '${CPSEPCHAR}'" - -RESULTS_DIR="${BASE_DIR}/tmp/results-benchmark-recursive/" -echo "Removing and recreating '${RESULTS_DIR}'" -(${SUDOCMD} rm -rf ${RESULTS_DIR}) && mkdir ${RESULTS_DIR} -mkdir ${RESULTS_DIR}/stat/ - -# Clear kieker.log and initialize logging -rm -f ${BASE_DIR}/kieker.log -touch ${BASE_DIR}/kieker.log - -RESULTSFN="${RESULTS_DIR}/results.csv" - -JAVA_ARGS="-server" -JAVA_ARGS="${JAVA_ARGS} -d64" -JAVA_ARGS="${JAVA_ARGS} -Xms1G -Xmx1G" -JAVA_ARGS="${JAVA_ARGS} -verbose:gc -XX:+PrintCompilation" -#JAVA_ARGS="${JAVA_ARGS} -XX:+PrintInlining" -#JAVA_ARGS="${JAVA_ARGS} -XX:+UnlockDiagnosticVMOptions -XX:+LogCompilation" -#JAVA_ARGS="${JAVA_ARGS} -Djava.compiler=NONE" -JAR="-jar MooBench.jar" - -JAVA_ARGS_NOINSTR="${JAVA_ARGS}" -JAVA_ARGS_LTW="${JAVA_ARGS} -javaagent:${BASE_DIR}/lib/kieker-1.9-SNAPSHOT_aspectj.jar -Dorg.aspectj.weaver.showWeaveInfo=false -Daj.weaving.verbose=false" -JAVA_ARGS_KIEKER_DEACTV="${JAVA_ARGS_LTW} -Dkieker.monitoring.adaptiveMonitoring.configFile=META-INF/kieker.monitoring.adaptiveMonitoring.disabled.conf -Dkieker.monitoring.writer=kieker.monitoring.writer.DummyWriter" -JAVA_ARGS_KIEKER_NOLOGGING="${JAVA_ARGS_LTW} -Dkieker.monitoring.writer=kieker.monitoring.writer.DummyWriter" -JAVA_ARGS_KIEKER_LOGGING="${JAVA_ARGS_LTW} -Dkieker.monitoring.writer=kieker.monitoring.writer.filesystem.SyncFsWriter -Dkieker.monitoring.writer.filesystem.SyncFsWriter.customStoragePath=${BASE_DIR}/tmp" - -## Write configuration -uname -a >${RESULTS_DIR}/configuration.txt -java ${JAVA_ARGS} -version 2>>${RESULTS_DIR}/configuration.txt -echo "JAVA_ARGS: ${JAVA_ARGS}" >>${RESULTS_DIR}/configuration.txt -echo "" >>${RESULTS_DIR}/configuration.txt -echo "Runtime: circa ${TIME} seconds" >>${RESULTS_DIR}/configuration.txt -echo "" >>${RESULTS_DIR}/configuration.txt -echo "SLEEP_TIME=${SLEEP_TIME}" >>${RESULTS_DIR}/configuration.txt -echo "NUM_LOOPS=${NUM_LOOPS}" >>${RESULTS_DIR}/configuration.txt -echo "TOTAL_CALLS=${TOTAL_CALLS}" >>${RESULTS_DIR}/configuration.txt -echo "METHOD_TIME=${METHOD_TIME}" >>${RESULTS_DIR}/configuration.txt -echo "THREADS=${THREADS}" >>${RESULTS_DIR}/configuration.txt -echo "RECURSION_DEPTH=${RECURSION_DEPTH}" >>${RESULTS_DIR}/configuration.txt -sync - -## Execute Benchmark - -for ((i=1;i<=${NUM_LOOPS};i+=1)); do - echo "## Starting iteration ${i}/${NUM_LOOPS}" - - for ((j=1;j<=${RECURSION_DEPTH};j+=1)); do - echo "# Starting recursion ${i}.${j}/${RECURSION_DEPTH}" - -# # 1 No instrumentation -# echo " # ${i}.1 No instrumentation" -# mpstat 1 > ${RESULTS_DIR}/stat/mpstat-${i}-${j}-1.txt & -# vmstat 1 > ${RESULTS_DIR}/stat/vmstat-${i}-${j}-1.txt & -# iostat -xn 10 > ${RESULTS_DIR}/stat/iostat-${i}-${j}-1.txt & -# ${BINDJAVA} java ${JAVA_ARGS_NOINSTR} ${JAR} \ -# --output-filename ${RESULTSFN}-${i}-${j}-1.csv \ -# --total-calls ${TOTAL_CALLS} \ -# --method-time ${METHOD_TIME} \ -# --total-threads ${THREADS} \ -# --recursion-depth ${j} -# kill %mpstat -# kill %vmstat -# kill %iostat -# [ -f ${BASE_DIR}/hotspot.log ] && mv ${BASE_DIR}/hotspot.log ${RESULTS_DIR}/hotspot-${i}-${j}-1.log -# sync -# sleep ${SLEEP_TIME} -# -# # 2 Deactivated probe -# echo " # ${i}.2 Deactivated probe" -# mpstat 1 > ${RESULTS_DIR}/stat/mpstat-${i}-${j}-2.txt & -# vmstat 1 > ${RESULTS_DIR}/stat/vmstat-${i}-${j}-2.txt & -# iostat -xn 10 > ${RESULTS_DIR}/stat/iostat-${i}-${j}-2.txt & -# ${BINDJAVA} java ${JAVA_ARGS_KIEKER_DEACTV} ${JAR} \ -# --output-filename ${RESULTSFN}-${i}-${j}-2.csv \ -# --total-calls ${TOTAL_CALLS} \ -# --method-time ${METHOD_TIME} \ -# --total-threads ${THREADS} \ -# --recursion-depth ${j} -# kill %mpstat -# kill %vmstat -# kill %iostat -# [ -f ${BASE_DIR}/hotspot.log ] && mv ${BASE_DIR}/hotspot.log ${RESULTS_DIR}/hotspot-${i}-${j}-2.log -# echo >>${BASE_DIR}/kieker.log -# echo >>${BASE_DIR}/kieker.log -# sync -# sleep ${SLEEP_TIME} -# -# # 3 No logging -# echo " # ${i}.3 No logging (null writer)" -# mpstat 1 > ${RESULTS_DIR}/stat/mpstat-${i}-${j}-3.txt & -# vmstat 1 > ${RESULTS_DIR}/stat/vmstat-${i}-${j}-3.txt & -# iostat -xn 10 > ${RESULTS_DIR}/stat/iostat-${i}-${j}-3.txt & -# ${BINDJAVA} java ${JAVA_ARGS_KIEKER_NOLOGGING} ${JAR} \ -# --output-filename ${RESULTSFN}-${i}-${j}-3.csv \ -# --total-calls ${TOTAL_CALLS} \ -# --method-time ${METHOD_TIME} \ -# --total-threads ${THREADS} \ -# --recursion-depth ${j} -# kill %mpstat -# kill %vmstat -# kill %iostat -# [ -f ${BASE_DIR}/hotspot.log ] && mv ${BASE_DIR}/hotspot.log ${RESULTS_DIR}/hotspot-${i}-${j}-3.log -# echo >>${BASE_DIR}/kieker.log -# echo >>${BASE_DIR}/kieker.log -# sync -# sleep ${SLEEP_TIME} - - # 4 Logging - echo " # ${i}.4 Logging" - mpstat 1 > ${RESULTS_DIR}/stat/mpstat-${i}-${j}-4.txt & - vmstat 1 > ${RESULTS_DIR}/stat/vmstat-${i}-${j}-4.txt & - iostat -xn 10 > ${RESULTS_DIR}/stat/iostat-${i}-${j}-4.txt & - ${BINDJAVA} java ${JAVA_ARGS_KIEKER_LOGGING} ${JAR} \ - --output-filename ${RESULTSFN}-${i}-${j}-4.csv \ - --total-calls ${TOTAL_CALLS} \ - --method-time ${METHOD_TIME} \ - --total-threads ${THREADS} \ - --recursion-depth ${j} - kill %mpstat - kill %vmstat - kill %iostat - mkdir -p ${RESULTS_DIR}/kiekerlog/ - mv ${BASE_DIR}/tmp/kieker-* ${RESULTS_DIR}/kiekerlog/ - [ -f ${BASE_DIR}/hotspot.log ] && mv ${BASE_DIR}/hotspot.log ${RESULTS_DIR}/hotspot-${i}-${j}-4.log - echo >>${BASE_DIR}/kieker.log - echo >>${BASE_DIR}/kieker.log - sync - sleep ${SLEEP_TIME} - - done - -done -tar cf ${RESULTS_DIR}/kiekerlog.tar ${RESULTS_DIR}/kiekerlog -${SUDOCMD} rm -rf ${RESULTS_DIR}/kiekerlog/ -gzip -9 ${RESULTS_DIR}/kiekerlog.tar -tar cf ${RESULTS_DIR}/stat.tar ${RESULTS_DIR}/stat -rm -rf ${RESULTS_DIR}/stat/ -gzip -9 ${RESULTS_DIR}/stat.tar -mv ${BASE_DIR}/kieker.log ${RESULTS_DIR}/kieker.log -[ -f ${RESULTS_DIR}/hotspot-1-1-1.log ] && grep "<task " ${RESULTS_DIR}/hotspot-*.log >${RESULTS_DIR}/log.log -[ -f ${BASE_DIR}/nohup.out ] && cp ${BASE_DIR}/nohup.out ${RESULTS_DIR} -echo -n "" > ${BASE_DIR}/nohup.out -[ -f ${BASE_DIR}/errorlog.txt ] && mv ${BASE_DIR}/errorlog.txt ${RESULTS_DIR} -echo -n "" > ${BASE_DIR}/errorlog.txt diff --git a/bin/2012-msept/run-benchmark-recursive-jmx.sh b/bin/2012-msept/run-benchmark-recursive-jmx.sh deleted file mode 100644 index 0719adc5188dae9e8bf48d180515dfee97d61f3d..0000000000000000000000000000000000000000 --- a/bin/2012-msept/run-benchmark-recursive-jmx.sh +++ /dev/null @@ -1,125 +0,0 @@ -#!/bin/bash - -#SUDOCMD="pfexec" -SUDOCMD="" -#BINDJAVA="${SUDOCMD} psrset -e 1" -BINDJAVA="" - -BIN_DIR=bin/ -BASE_DIR= - -SLEEP_TIME=30 ## 30 -NUM_LOOPS=10 ## 10 -THREADS=1 ## 1 -RECURSION_DEPTH=10 ## 10 -TOTAL_CALLS=2000000 ## 2000000 -METHOD_TIME=500000 ## 500000 - -TIME=`expr ${METHOD_TIME} \* ${TOTAL_CALLS} / 1000000000 \* 2 \* ${RECURSION_DEPTH} \* ${NUM_LOOPS} + ${SLEEP_TIME} \* 2 \* ${NUM_LOOPS} \* ${RECURSION_DEPTH}` -echo "Experiment will take circa ${TIME} seconds." - -# determine correct classpath separator -CPSEPCHAR=":" # default :, ; for windows -if [ ! -z "$(uname | grep -i WIN)" ]; then CPSEPCHAR=";"; fi -# echo "Classpath separator: '${CPSEPCHAR}'" - -RESULTS_DIR="${BASE_DIR}/tmp/results-benchmark-recursive/" -echo "Removing and recreating '${RESULTS_DIR}'" -(${SUDOCMD} rm -rf ${RESULTS_DIR}) && mkdir ${RESULTS_DIR} -mkdir ${RESULTS_DIR}/stat/ - -# Clear kieker.log and initialize logging -rm -f ${BASE_DIR}/kieker.log -touch ${BASE_DIR}/kieker.log - -RESULTSFN="${RESULTS_DIR}/results.csv" - -JAVA_ARGS="-server" -JAVA_ARGS="${JAVA_ARGS} -d64" -JAVA_ARGS="${JAVA_ARGS} -Xms1G -Xmx1G" -JAVA_ARGS="${JAVA_ARGS} -verbose:gc -XX:+PrintCompilation" -#JAVA_ARGS="${JAVA_ARGS} -XX:+PrintInlining" -#JAVA_ARGS="${JAVA_ARGS} -XX:+UnlockDiagnosticVMOptions -XX:+LogCompilation" -#JAVA_ARGS="${JAVA_ARGS} -Djava.compiler=NONE" -JAR="-jar MooBench.jar" - -JAVA_ARGS_NOINSTR="${JAVA_ARGS}" -JAVA_ARGS_LTW="${JAVA_ARGS} -javaagent:${BASE_DIR}/lib/kieker-1.9-SNAPSHOT_aspectj.jar -Dorg.aspectj.weaver.showWeaveInfo=false -Daj.weaving.verbose=false" -JAVA_ARGS_KIEKER_DEACTV="${JAVA_ARGS_LTW} -Dkieker.monitoring.adaptiveMonitoring.configFile=META-INF/kieker.monitoring.adaptiveMonitoring.disabled.conf -Dkieker.monitoring.writer=kieker.monitoring.writer.DummyWriter" -JAVA_ARGS_KIEKER_NOLOGGING="${JAVA_ARGS_LTW} -Dkieker.monitoring.writer=kieker.monitoring.writer.DummyWriter" -JAVA_ARGS_KIEKER_LOGGING="${JAVA_ARGS_LTW} -Dkieker.monitoring.jmx=true -Dkieker.monitoring.jmx.remote=true -Dkieker.monitoring.writer=kieker.monitoring.writer.jmx.JMXWriter"" - -## Write configuration -uname -a >${RESULTS_DIR}/configuration.txt -java ${JAVA_ARGS} -version 2>>${RESULTS_DIR}/configuration.txt -echo "JAVA_ARGS: ${JAVA_ARGS}" >>${RESULTS_DIR}/configuration.txt -echo "" >>${RESULTS_DIR}/configuration.txt -echo "Runtime: circa ${TIME} seconds" >>${RESULTS_DIR}/configuration.txt -echo "" >>${RESULTS_DIR}/configuration.txt -echo "SLEEP_TIME=${SLEEP_TIME}" >>${RESULTS_DIR}/configuration.txt -echo "NUM_LOOPS=${NUM_LOOPS}" >>${RESULTS_DIR}/configuration.txt -echo "TOTAL_CALLS=${TOTAL_CALLS}" >>${RESULTS_DIR}/configuration.txt -echo "METHOD_TIME=${METHOD_TIME}" >>${RESULTS_DIR}/configuration.txt -echo "THREADS=${THREADS}" >>${RESULTS_DIR}/configuration.txt -echo "RECURSION_DEPTH=${RECURSION_DEPTH}" >>${RESULTS_DIR}/configuration.txt -sync - -## Execute Benchmark - -for ((i=1;i<=${NUM_LOOPS};i+=1)); do - echo "## Starting iteration ${i}/${NUM_LOOPS}" - - for ((j=1;j<=${RECURSION_DEPTH};j+=1)); do - echo "# Starting recursion ${i}.${j}/${RECURSION_DEPTH}" - - # 1 No logging - echo " # ${i}.1 No logging (null writer)" - mpstat 1 > ${RESULTS_DIR}/stat/mpstat-${i}-${j}-1.txt & - vmstat 1 > ${RESULTS_DIR}/stat/vmstat-${i}-${j}-1.txt & - iostat -xn 10 > ${RESULTS_DIR}/stat/iostat-${i}-${j}-1.txt & - ${BINDJAVA} java ${JAVA_ARGS_KIEKER_NOLOGGING} ${JAR} \ - --output-filename ${RESULTSFN}-${i}-${j}-1.csv \ - --total-calls ${TOTAL_CALLS} \ - --method-time ${METHOD_TIME} \ - --total-threads ${THREADS} \ - --recursion-depth ${j} - kill %mpstat - kill %vmstat - kill %iostat - [ -f ${BASE_DIR}/hotspot.log ] && mv ${BASE_DIR}/hotspot.log ${RESULTS_DIR}/hotspot-${i}-${j}-1.log - echo >>${BASE_DIR}/kieker.log - echo >>${BASE_DIR}/kieker.log - sync - sleep ${SLEEP_TIME} - - # 2 Logging - echo " # ${i}.2 Logging" - mpstat 1 > ${RESULTS_DIR}/stat/mpstat-${i}-${j}-2.txt & - vmstat 1 > ${RESULTS_DIR}/stat/vmstat-${i}-${j}-2.txt & - iostat -xn 10 > ${RESULTS_DIR}/stat/iostat-${i}-${j}-2.txt & - ${BINDJAVA} java ${JAVA_ARGS_KIEKER_LOGGING} ${JAR} \ - --output-filename ${RESULTSFN}-${i}-${j}-2.csv \ - --total-calls ${TOTAL_CALLS} \ - --method-time ${METHOD_TIME} \ - --total-threads ${THREADS} \ - --recursion-depth ${j} - kill %mpstat - kill %vmstat - kill %iostat - mkdir -p ${RESULTS_DIR}/kiekerlog/ - [ -f ${BASE_DIR}/hotspot.log ] && mv ${BASE_DIR}/hotspot.log ${RESULTS_DIR}/hotspot-${i}-${j}-2.log - echo >>${BASE_DIR}/kieker.log - echo >>${BASE_DIR}/kieker.log - sync - sleep ${SLEEP_TIME} - - done - -done -tar cf ${RESULTS_DIR}/stat.tar ${RESULTS_DIR}/stat -rm -rf ${RESULTS_DIR}/stat/ -gzip -9 ${RESULTS_DIR}/stat.tar -mv ${BASE_DIR}/kieker.log ${RESULTS_DIR}/kieker.log -[ -f ${RESULTS_DIR}/hotspot-1-1-1.log ] && grep "<task " ${RESULTS_DIR}/hotspot-*.log >${RESULTS_DIR}/log.log -[ -f ${BASE_DIR}/nohup.out ] && mv ${BASE_DIR}/nohup.out ${RESULTS_DIR} -[ -f ${BASE_DIR}/errorlog.txt ] && mv ${BASE_DIR}/errorlog.txt ${RESULTS_DIR} diff --git a/bin/2012-msept/run-benchmark-recursive-linear.sh b/bin/2012-msept/run-benchmark-recursive-linear.sh deleted file mode 100644 index 5bc62567fb760f751a84862972c89d014f952b40..0000000000000000000000000000000000000000 --- a/bin/2012-msept/run-benchmark-recursive-linear.sh +++ /dev/null @@ -1,171 +0,0 @@ -#!/bin/bash - -#SUDOCMD="pfexec" -SUDOCMD="" -#BINDJAVA="${SUDOCMD} psrset -e 1" -BINDJAVA="" - -BIN_DIR=bin/ -BASE_DIR= - -SLEEP_TIME=30 ## 30 -NUM_LOOPS=10 ## 10 -THREADS=1 ## 1 -RECURSION_DEPTH=10 ## 10 -TOTAL_CALLS=2000000 ## 2000000 -METHOD_TIME=500000 ## 500000 - -TIME=`expr ${METHOD_TIME} \* ${TOTAL_CALLS} / 1000000000 \* 4 \* ${RECURSION_DEPTH} \* ${NUM_LOOPS} + ${SLEEP_TIME} \* 4 \* ${NUM_LOOPS} \* ${RECURSION_DEPTH}` -echo "Experiment will take circa ${TIME} seconds." - -# determine correct classpath separator -CPSEPCHAR=":" # default :, ; for windows -if [ ! -z "$(uname | grep -i WIN)" ]; then CPSEPCHAR=";"; fi -# echo "Classpath separator: '${CPSEPCHAR}'" - -RESULTS_DIR="${BASE_DIR}/tmp/results-benchmark-recursive-linear/" -echo "Removing and recreating '${RESULTS_DIR}'" -(${SUDOCMD} rm -rf "${RESULTS_DIR}") && mkdir "${RESULTS_DIR}" -mkdir "${RESULTS_DIR}/stat" - -# Clear kieker.log and initialize logging -rm -f ${BASE_DIR}/kieker.log -touch ${BASE_DIR}/kieker.log - -RESULTSFN="${RESULTS_DIR}/results.csv" - -JAVA_ARGS="-server" -JAVA_ARGS="${JAVA_ARGS} -d64" -JAVA_ARGS="${JAVA_ARGS} -Xms1G -Xmx1G" -JAVA_ARGS="${JAVA_ARGS} -verbose:gc -XX:+PrintCompilation" -#JAVA_ARGS="${JAVA_ARGS} -XX:+PrintInlining" -#JAVA_ARGS="${JAVA_ARGS} -XX:+UnlockDiagnosticVMOptions -XX:+LogCompilation" -#JAVA_ARGS="${JAVA_ARGS} -Djava.compiler=NONE" -JAR="-jar MooBench.jar" - -JAVA_ARGS_NOINSTR="${JAVA_ARGS}" -JAVA_ARGS_LTW="${JAVA_ARGS} -javaagent:${BASE_DIR}/lib/kieker-1.9-SNAPSHOT_aspectj.jar -Dorg.aspectj.weaver.showWeaveInfo=false -Daj.weaving.verbose=false" -JAVA_ARGS_KIEKER_DEACTV="${JAVA_ARGS_LTW} -Dkieker.monitoring.adaptiveMonitoring.configFile=META-INF/kieker.monitoring.adaptiveMonitoring.disabled.conf -Dkieker.monitoring.writer=kieker.monitoring.writer.DummyWriter" -JAVA_ARGS_KIEKER_NOLOGGING="${JAVA_ARGS_LTW} -Dkieker.monitoring.writer=kieker.monitoring.writer.DummyWriter" -#JAVA_ARGS_KIEKER_LOGGING="${JAVA_ARGS_LTW} -Dkieker.monitoring.writer=kieker.monitoring.writer.filesystem.AsyncFsWriter -Dkieker.monitoring.writer.filesystem.AsyncFsWriter.customStoragePath=${BASE_DIR}/tmp" -JAVA_ARGS_KIEKER_LOGGING="${JAVA_ARGS_LTW} -Dkieker.monitoring.writer=kieker.monitoring.writer.filesystem.AsyncBinaryFsWriter -Dkieker.monitoring.writer.filesystem.AsyncBinaryFsWriter.customStoragePath=${BASE_DIR}/tmp" - -## Write configuration -uname -a >${RESULTS_DIR}/configuration.txt -java ${JAVA_ARGS} -version 2 >> ${RESULTS_DIR}/configuration.txt -echo "JAVA_ARGS: ${JAVA_ARGS}" >> ${RESULTS_DIR}/configuration.txt -echo "" >> ${RESULTS_DIR}/configuration.txt -echo "Runtime: circa ${TIME} seconds" >>${RESULTS_DIR}/configuration.txt -echo "" >>${RESULTS_DIR}/configuration.txt -echo "SLEEP_TIME=${SLEEP_TIME}" >>${RESULTS_DIR}/configuration.txt -echo "NUM_LOOPS=${NUM_LOOPS}" >>${RESULTS_DIR}/configuration.txt -echo "TOTAL_CALLS=${TOTAL_CALLS}" >>${RESULTS_DIR}/configuration.txt -echo "METHOD_TIME=${METHOD_TIME}" >>${RESULTS_DIR}/configuration.txt -echo "THREADS=${THREADS}" >>${RESULTS_DIR}/configuration.txt -echo "RECURSION_DEPTH=${RECURSION_DEPTH}" >>${RESULTS_DIR}/configuration.txt -sync - -## Execute Benchmark - -for ((i=1;i<=${NUM_LOOPS};i+=1)); do - echo "## Starting iteration ${i}/${NUM_LOOPS}" - - for ((j=1;j<=${RECURSION_DEPTH};j+=1)); do - RECDEPTH=$[2**($j-1)] - echo "# Starting recursion ${i}.${j}/${RECURSION_DEPTH}" - - # 1 No instrumentation - echo " # ${i}.1 No instrumentation" - mpstat 1 > ${RESULTS_DIR}/stat/mpstat-${i}-${j}-1.txt & - vmstat 1 > ${RESULTS_DIR}/stat/vmstat-${i}-${j}-1.txt & - iostat -xn 10 > ${RESULTS_DIR}/stat/iostat-${i}-${j}-1.txt & - ${BINDJAVA} java ${JAVA_ARGS_NOINSTR} ${JAR} \ - --output-filename ${RESULTSFN}-${i}-${j}-1.csv \ - --total-calls ${TOTAL_CALLS} \ - --method-time ${METHOD_TIME} \ - --total-threads ${THREADS} \ - --recursion-depth ${RECDEPTH} - kill %mpstat - kill %vmstat - kill %iostat - [ -f ${BASE_DIR}/hotspot.log ] && mv ${BASE_DIR}/hotspot.log ${RESULTS_DIR}/hotspot-${i}-${j}-1.log - sync - sleep ${SLEEP_TIME} - - # 2 Deactivated probe - echo " # ${i}.2 Deactivated probe" - mpstat 1 > ${RESULTS_DIR}/stat/mpstat-${i}-${j}-2.txt & - vmstat 1 > ${RESULTS_DIR}/stat/vmstat-${i}-${j}-2.txt & - iostat -xn 10 > ${RESULTS_DIR}/stat/iostat-${i}-${j}-2.txt & - ${BINDJAVA} java ${JAVA_ARGS_KIEKER_DEACTV} ${JAR} \ - --output-filename ${RESULTSFN}-${i}-${j}-2.csv \ - --total-calls ${TOTAL_CALLS} \ - --method-time ${METHOD_TIME} \ - --total-threads ${THREADS} \ - --recursion-depth ${RECDEPTH} - kill %mpstat - kill %vmstat - kill %iostat - [ -f ${BASE_DIR}/hotspot.log ] && mv ${BASE_DIR}/hotspot.log ${RESULTS_DIR}/hotspot-${i}-${j}-2.log - echo >>${BASE_DIR}/kieker.log - echo >>${BASE_DIR}/kieker.log - sync - sleep ${SLEEP_TIME} - - # 3 No logging - echo " # ${i}.3 No logging (null writer)" - mpstat 1 > ${RESULTS_DIR}/stat/mpstat-${i}-${j}-3.txt & - vmstat 1 > ${RESULTS_DIR}/stat/vmstat-${i}-${j}-3.txt & - iostat -xn 10 > ${RESULTS_DIR}/stat/iostat-${i}-${j}-3.txt & - ${BINDJAVA} java ${JAVA_ARGS_KIEKER_NOLOGGING} ${JAR} \ - --output-filename ${RESULTSFN}-${i}-${j}-3.csv \ - --total-calls ${TOTAL_CALLS} \ - --method-time ${METHOD_TIME} \ - --total-threads ${THREADS} \ - --recursion-depth ${RECDEPTH} - kill %mpstat - kill %vmstat - kill %iostat - [ -f ${BASE_DIR}/hotspot.log ] && mv ${BASE_DIR}/hotspot.log ${RESULTS_DIR}/hotspot-${i}-${j}-3.log - echo >>${BASE_DIR}/kieker.log - echo >>${BASE_DIR}/kieker.log - sync - sleep ${SLEEP_TIME} - - # 4 Logging - echo " # ${i}.4 Logging" - mpstat 1 > ${RESULTS_DIR}/stat/mpstat-${i}-${j}-4.txt & - vmstat 1 > ${RESULTS_DIR}/stat/vmstat-${i}-${j}-4.txt & - iostat -xn 10 > ${RESULTS_DIR}/stat/iostat-${i}-${j}-4.txt & - ${BINDJAVA} java ${JAVA_ARGS_KIEKER_LOGGING} ${JAR} \ - --output-filename ${RESULTSFN}-${i}-${j}-4.csv \ - --total-calls ${TOTAL_CALLS} \ - --method-time ${METHOD_TIME} \ - --total-threads ${THREADS} \ - --recursion-depth ${RECDEPTH} - kill %mpstat - kill %vmstat - kill %iostat - mkdir -p ${RESULTS_DIR}/kiekerlog/ - mv ${BASE_DIR}/tmp/kieker-* ${RESULTS_DIR}/kiekerlog/ - [ -f ${BASE_DIR}/hotspot.log ] && mv ${BASE_DIR}/hotspot.log ${RESULTS_DIR}/hotspot-${i}-${j}-4.log - echo >>${BASE_DIR}/kieker.log - echo >>${BASE_DIR}/kieker.log - sync - sleep ${SLEEP_TIME} - - done - -done -tar cf ${RESULTS_DIR}/kiekerlog.tar ${RESULTS_DIR}/kiekerlog -${SUDOCMD} rm -rf ${RESULTS_DIR}/kiekerlog/ -gzip -9 ${RESULTS_DIR}/kiekerlog.tar -tar cf ${RESULTS_DIR}/stat.tar ${RESULTS_DIR}/stat -rm -rf ${RESULTS_DIR}/stat/ -gzip -9 ${RESULTS_DIR}/stat.tar -mv ${BASE_DIR}/kieker.log ${RESULTS_DIR}/kieker.log -[ -f ${RESULTS_DIR}/hotspot-1-1-1.log ] && grep "<task " ${RESULTS_DIR}/hotspot-*.log >${RESULTS_DIR}/log.log -[ -f ${BASE_DIR}/nohup.out ] && mv ${BASE_DIR}/nohup.out ${RESULTS_DIR} -[ -f ${BASE_DIR}/errorlog.txt ] && mv ${BASE_DIR}/errorlog.txt ${RESULTS_DIR} - -# end diff --git a/bin/2012-msept/run-benchmark-recursive.sh b/bin/2012-msept/run-benchmark-recursive.sh deleted file mode 100644 index d35445da05d1882cd73690deba32dfb9ea335fc2..0000000000000000000000000000000000000000 --- a/bin/2012-msept/run-benchmark-recursive.sh +++ /dev/null @@ -1,168 +0,0 @@ -#!/bin/bash - -#SUDOCMD="pfexec" -SUDOCMD="" -#BINDJAVA="${SUDOCMD} psrset -e 1" -BINDJAVA="" - -BIN_DIR=bin/ -BASE_DIR= - -SLEEP_TIME=30 ## 30 -NUM_LOOPS=10 ## 10 -THREADS=1 ## 1 -RECURSION_DEPTH=10 ## 10 -TOTAL_CALLS=2000000 ## 2000000 -METHOD_TIME=500000 ## 500000 - -TIME=`expr ${METHOD_TIME} \* ${TOTAL_CALLS} / 1000000000 \* 4 \* ${RECURSION_DEPTH} \* ${NUM_LOOPS} + ${SLEEP_TIME} \* 4 \* ${NUM_LOOPS} \* ${RECURSION_DEPTH}` -echo "Experiment will take circa ${TIME} seconds." - -# determine correct classpath separator -CPSEPCHAR=":" # default :, ; for windows -if [ ! -z "$(uname | grep -i WIN)" ]; then CPSEPCHAR=";"; fi -# echo "Classpath separator: '${CPSEPCHAR}'" - -RESULTS_DIR="${BASE_DIR}/tmp/results-benchmark-recursive/" -echo "Removing and recreating '${RESULTS_DIR}'" -(${SUDOCMD} rm -rf ${RESULTS_DIR}) && mkdir ${RESULTS_DIR} -mkdir ${RESULTS_DIR}/stat/ - -# Clear kieker.log and initialize logging -rm -f ${BASE_DIR}/kieker.log -touch ${BASE_DIR}/kieker.log - -RESULTSFN="${RESULTS_DIR}/results.csv" - -JAVA_ARGS="-server" -JAVA_ARGS="${JAVA_ARGS} -d64" -JAVA_ARGS="${JAVA_ARGS} -Xms1G -Xmx1G" -JAVA_ARGS="${JAVA_ARGS} -verbose:gc -XX:+PrintCompilation" -#JAVA_ARGS="${JAVA_ARGS} -XX:+PrintInlining" -#JAVA_ARGS="${JAVA_ARGS} -XX:+UnlockDiagnosticVMOptions -XX:+LogCompilation" -#JAVA_ARGS="${JAVA_ARGS} -Djava.compiler=NONE" -JAR="-jar MooBench.jar" - -JAVA_ARGS_NOINSTR="${JAVA_ARGS}" -JAVA_ARGS_LTW="${JAVA_ARGS} -javaagent:${BASE_DIR}/lib/kieker-1.9-SNAPSHOT_aspectj.jar -Dorg.aspectj.weaver.showWeaveInfo=false -Daj.weaving.verbose=false" -JAVA_ARGS_KIEKER_DEACTV="${JAVA_ARGS_LTW} -Dkieker.monitoring.adaptiveMonitoring.configFile=META-INF/kieker.monitoring.adaptiveMonitoring.disabled.conf -Dkieker.monitoring.writer=kieker.monitoring.writer.DummyWriter" -JAVA_ARGS_KIEKER_NOLOGGING="${JAVA_ARGS_LTW} -Dkieker.monitoring.writer=kieker.monitoring.writer.DummyWriter" -#JAVA_ARGS_KIEKER_LOGGING="${JAVA_ARGS_LTW} -Dkieker.monitoring.writer=kieker.monitoring.writer.filesystem.AsyncFsWriter -Dkieker.monitoring.writer.filesystem.AsyncFsWriter.customStoragePath=${BASE_DIR}/tmp" -JAVA_ARGS_KIEKER_LOGGING="${JAVA_ARGS_LTW} -Dkieker.monitoring.writer=kieker.monitoring.writer.filesystem.AsyncBinaryFsWriter -Dkieker.monitoring.writer.filesystem.AsyncBinaryFsWriter.customStoragePath=${BASE_DIR}/tmp" - -## Write configuration -uname -a >${RESULTS_DIR}/configuration.txt -java ${JAVA_ARGS} -version 2>>${RESULTS_DIR}/configuration.txt -echo "JAVA_ARGS: ${JAVA_ARGS}" >>${RESULTS_DIR}/configuration.txt -echo "" >>${RESULTS_DIR}/configuration.txt -echo "Runtime: circa ${TIME} seconds" >>${RESULTS_DIR}/configuration.txt -echo "" >>${RESULTS_DIR}/configuration.txt -echo "SLEEP_TIME=${SLEEP_TIME}" >>${RESULTS_DIR}/configuration.txt -echo "NUM_LOOPS=${NUM_LOOPS}" >>${RESULTS_DIR}/configuration.txt -echo "TOTAL_CALLS=${TOTAL_CALLS}" >>${RESULTS_DIR}/configuration.txt -echo "METHOD_TIME=${METHOD_TIME}" >>${RESULTS_DIR}/configuration.txt -echo "THREADS=${THREADS}" >>${RESULTS_DIR}/configuration.txt -echo "RECURSION_DEPTH=${RECURSION_DEPTH}" >>${RESULTS_DIR}/configuration.txt -sync - -## Execute Benchmark - -for ((i=1;i<=${NUM_LOOPS};i+=1)); do - echo "## Starting iteration ${i}/${NUM_LOOPS}" - - for ((j=1;j<=${RECURSION_DEPTH};j+=1)); do - echo "# Starting recursion ${i}.${j}/${RECURSION_DEPTH}" - - # 1 No instrumentation - echo " # ${i}.1 No instrumentation" - mpstat 1 > ${RESULTS_DIR}/stat/mpstat-${i}-${j}-1.txt & - vmstat 1 > ${RESULTS_DIR}/stat/vmstat-${i}-${j}-1.txt & - iostat -xn 10 > ${RESULTS_DIR}/stat/iostat-${i}-${j}-1.txt & - ${BINDJAVA} java ${JAVA_ARGS_NOINSTR} ${JAR} \ - --output-filename ${RESULTSFN}-${i}-${j}-1.csv \ - --total-calls ${TOTAL_CALLS} \ - --method-time ${METHOD_TIME} \ - --total-threads ${THREADS} \ - --recursion-depth ${j} - kill %mpstat - kill %vmstat - kill %iostat - [ -f ${BASE_DIR}/hotspot.log ] && mv ${BASE_DIR}/hotspot.log ${RESULTS_DIR}/hotspot-${i}-${j}-1.log - sync - sleep ${SLEEP_TIME} - - # 2 Deactivated probe - echo " # ${i}.2 Deactivated probe" - mpstat 1 > ${RESULTS_DIR}/stat/mpstat-${i}-${j}-2.txt & - vmstat 1 > ${RESULTS_DIR}/stat/vmstat-${i}-${j}-2.txt & - iostat -xn 10 > ${RESULTS_DIR}/stat/iostat-${i}-${j}-2.txt & - ${BINDJAVA} java ${JAVA_ARGS_KIEKER_DEACTV} ${JAR} \ - --output-filename ${RESULTSFN}-${i}-${j}-2.csv \ - --total-calls ${TOTAL_CALLS} \ - --method-time ${METHOD_TIME} \ - --total-threads ${THREADS} \ - --recursion-depth ${j} - kill %mpstat - kill %vmstat - kill %iostat - [ -f ${BASE_DIR}/hotspot.log ] && mv ${BASE_DIR}/hotspot.log ${RESULTS_DIR}/hotspot-${i}-${j}-2.log - echo >>${BASE_DIR}/kieker.log - echo >>${BASE_DIR}/kieker.log - sync - sleep ${SLEEP_TIME} - - # 3 No logging - echo " # ${i}.3 No logging (null writer)" - mpstat 1 > ${RESULTS_DIR}/stat/mpstat-${i}-${j}-3.txt & - vmstat 1 > ${RESULTS_DIR}/stat/vmstat-${i}-${j}-3.txt & - iostat -xn 10 > ${RESULTS_DIR}/stat/iostat-${i}-${j}-3.txt & - ${BINDJAVA} java ${JAVA_ARGS_KIEKER_NOLOGGING} ${JAR} \ - --output-filename ${RESULTSFN}-${i}-${j}-3.csv \ - --total-calls ${TOTAL_CALLS} \ - --method-time ${METHOD_TIME} \ - --total-threads ${THREADS} \ - --recursion-depth ${j} - kill %mpstat - kill %vmstat - kill %iostat - [ -f ${BASE_DIR}/hotspot.log ] && mv ${BASE_DIR}/hotspot.log ${RESULTS_DIR}/hotspot-${i}-${j}-3.log - echo >>${BASE_DIR}/kieker.log - echo >>${BASE_DIR}/kieker.log - sync - sleep ${SLEEP_TIME} - - # 4 Logging - echo " # ${i}.4 Logging" - mpstat 1 > ${RESULTS_DIR}/stat/mpstat-${i}-${j}-4.txt & - vmstat 1 > ${RESULTS_DIR}/stat/vmstat-${i}-${j}-4.txt & - iostat -xn 10 > ${RESULTS_DIR}/stat/iostat-${i}-${j}-4.txt & - ${BINDJAVA} java ${JAVA_ARGS_KIEKER_LOGGING} ${JAR} \ - --output-filename ${RESULTSFN}-${i}-${j}-4.csv \ - --total-calls ${TOTAL_CALLS} \ - --method-time ${METHOD_TIME} \ - --total-threads ${THREADS} \ - --recursion-depth ${j} - kill %mpstat - kill %vmstat - kill %iostat - mkdir -p ${RESULTS_DIR}/kiekerlog/ - mv ${BASE_DIR}/tmp/kieker-* ${RESULTS_DIR}/kiekerlog/ - [ -f ${BASE_DIR}/hotspot.log ] && mv ${BASE_DIR}/hotspot.log ${RESULTS_DIR}/hotspot-${i}-${j}-4.log - echo >>${BASE_DIR}/kieker.log - echo >>${BASE_DIR}/kieker.log - sync - sleep ${SLEEP_TIME} - - done - -done -tar cf ${RESULTS_DIR}/kiekerlog.tar ${RESULTS_DIR}/kiekerlog -${SUDOCMD} rm -rf ${RESULTS_DIR}/kiekerlog/ -gzip -9 ${RESULTS_DIR}/kiekerlog.tar -tar cf ${RESULTS_DIR}/stat.tar ${RESULTS_DIR}/stat -rm -rf ${RESULTS_DIR}/stat/ -gzip -9 ${RESULTS_DIR}/stat.tar -mv ${BASE_DIR}/kieker.log ${RESULTS_DIR}/kieker.log -[ -f ${RESULTS_DIR}/hotspot-1-1-1.log ] && grep "<task " ${RESULTS_DIR}/hotspot-*.log >${RESULTS_DIR}/log.log -[ -f ${BASE_DIR}/nohup.out ] && mv ${BASE_DIR}/nohup.out ${RESULTS_DIR} -[ -f ${BASE_DIR}/errorlog.txt ] && mv ${BASE_DIR}/errorlog.txt ${RESULTS_DIR} diff --git a/bin/2012-msept/run-cycle-experiment-singlethreaded.sh b/bin/2012-msept/run-cycle-experiment-singlethreaded.sh deleted file mode 100644 index 77b596a7beadb308454f086b3a5120d4eb66c762..0000000000000000000000000000000000000000 --- a/bin/2012-msept/run-cycle-experiment-singlethreaded.sh +++ /dev/null @@ -1,75 +0,0 @@ -#!/bin/bash - -SUDOCMD="pfexec" - -SLEEP_TIME=30 ## 30 -NUM_LOOPS=10 ## 10 -THREADS=1 ## 1 -RECURSION_DEPTH=1 ## 10 -TOTAL_CALLS=2000000 ## 200000 -METHOD_TIME=500000 ## 500000 - -TIME=`expr ${METHOD_TIME} \* ${TOTAL_CALLS} / 1000000000 \* 4 \* ${RECURSION_DEPTH} \* ${NUM_LOOPS} + ${SLEEP_TIME} \* 4 \* ${NUM_LOOPS} \* ${RECURSION_DEPTH}` -echo "Each experiment will take circa ${TIME} seconds." - - -#### -#### S1 -#### -${SUDOCMD} psrset -c -F 1 -BINDJAVA="${SUDOCMD} psrset -e 1" -source bin/run-benchmark-cycle-sync.sh -${SUDOCMD} psrset -d 1 -${SUDOCMD} mv tmp/results-benchmark-recursive tmp/results-S1 - -#### -#### S2 -#### -${SUDOCMD} psrset -c -F 1 9 -BINDJAVA="${SUDOCMD} psrset -e 1" -source bin/run-benchmark-cycle-sync.sh -${SUDOCMD} psrset -d 1 -${SUDOCMD} mv tmp/results-benchmark-recursive tmp/results-S2 - -#### -#### A1 -#### -${SUDOCMD} psrset -c -F 1 -BINDJAVA="${SUDOCMD} psrset -e 1" -source bin/run-benchmark-cycle-async.sh -${SUDOCMD} psrset -d 1 -${SUDOCMD} mv tmp/results-benchmark-recursive tmp/results-A1 - -#### -#### A2 -#### -${SUDOCMD} psrset -c -F 1 9 -BINDJAVA="${SUDOCMD} psrset -e 1" -source bin/run-benchmark-cycle-async.sh -${SUDOCMD} psrset -d 1 -${SUDOCMD} mv tmp/results-benchmark-recursive tmp/results-A2 - -#### -#### A3 -#### -pfexec ${SUDOCMD} -c -F 1 2 -BINDJAVA="${SUDOCMD} psrset -e 1" -source bin/run-benchmark-cycle-async.sh -${SUDOCMD} psrset -d 1 -${SUDOCMD} mv tmp/results-benchmark-recursive tmp/results-A3 - -#### -#### A4 -#### -pfexec ${SUDOCMD} -c -F 1 5 -BINDJAVA="${SUDOCMD} psrset -e 1" -source bin/run-benchmark-cycle-async.sh -${SUDOCMD} psrset -d 1 -${SUDOCMD} mv tmp/results-benchmark-recursive tmp/results-A4 - -#### -#### A5 -#### -BINDJAVA="" -source bin/run-benchmark-cycle-async.sh -${SUDOCMD} mv tmp/results-benchmark-recursive tmp/results-A5 diff --git a/bin/2012-msept/run-cycle.sh b/bin/2012-msept/run-cycle.sh deleted file mode 100644 index 7122bd3ba319847729070e38fa25ed24d4e1e292..0000000000000000000000000000000000000000 --- a/bin/2012-msept/run-cycle.sh +++ /dev/null @@ -1,39 +0,0 @@ -#!/bin/bash - -SUDOCMD="pfexec" - -SLEEP_TIME=30 ## 30 -NUM_LOOPS=10 ## 10 -RECURSION_DEPTH=1 ## 10 -TOTAL_CALLS=2000000 ## 2000000 -METHOD_TIME=500000 ## 500000 - -TIME=`expr ${METHOD_TIME} \* ${TOTAL_CALLS} / 1000000000 \* 4 \* ${RECURSION_DEPTH} \* ${NUM_LOOPS} + ${SLEEP_TIME} \* 4 \* ${NUM_LOOPS} \* ${RECURSION_DEPTH}` -echo "Each experiment will take circa ${TIME} seconds." - -${SUDOCMD} psrset -c -F 0 1 2 3 # one chip no hyperthreading -BINDJAVA="${SUDOCMD} psrset -e 1" -for ((cthreads=1;cthreads<=16;cthreads+=1)); do - THREADS=${cthreads} - source bin/run-benchmark-cycle-async.sh - ${SUDOCMD} mv tmp/results-benchmark-recursive tmp/results-A$cthreads -done -${SUDOCMD} psrset -d 1 - -${SUDOCMD} psrset -c -F 0 1 2 3 8 9 10 11 # one chip with hyperthreading -BINDJAVA="${SUDOCMD} psrset -e 1" -for ((cthreads=1;cthreads<=16;cthreads+=1)); do - THREADS=${cthreads} - source bin/run-benchmark-cycle-async.sh - ${SUDOCMD} mv tmp/results-benchmark-recursive tmp/results-B$cthreads -done -${SUDOCMD} psrset -d 1 - -${SUDOCMD} psrset -c -F 0 1 2 3 4 5 6 7 # two chip no hyperthreading -BINDJAVA="${SUDOCMD} psrset -e 1" -for ((cthreads=1;cthreads<=16;cthreads+=1)); do - THREADS=${cthreads} - source bin/run-benchmark-cycle-async.sh - ${SUDOCMD} mv tmp/results-benchmark-recursive tmp/results-C$cthreads -done -${SUDOCMD} psrset -d 1 diff --git a/bin/2013-kieker-days-ffi/benchmark-kieker-days-ffi-remote.sh b/bin/2013-kieker-days-ffi/benchmark-kieker-days-ffi-remote.sh deleted file mode 100644 index 42d36aec16c836ee67298e8df555627ac52402b3..0000000000000000000000000000000000000000 --- a/bin/2013-kieker-days-ffi/benchmark-kieker-days-ffi-remote.sh +++ /dev/null @@ -1,263 +0,0 @@ -#!/bin/bash - -JAVA_BIN="/localhome/ffi/jdk1.7.0_25/bin/java" - -REMOTEHOST="blade1" -REMOTEBASE_DIR="/localhome/ffi/" - -R_SCRIPT_DIR=bin/icpe/r/ -BASE_DIR=./ -RESULTS_DIR="${BASE_DIR}/tmp/results-benchmark-kieker-days-ffi/" -REMOTERESULTS_DIR="${REMOTEBASE_DIR}/tmp/results-benchmark-kieker-days-ffi/" - -SLEEP_TIME=1 ## 30 -NUM_LOOPS=1 ## 10 -THREADS=1 ## 1 -RECURSION_DEPTH=10 ## 10 -TOTAL_CALLS=2000000 ## 20000000 -METHOD_TIME=0 ## 0 - -#MORE_PARAMS="" -MORE_PARAMS="--quickstart" - -TIME=`expr ${METHOD_TIME} \* ${TOTAL_CALLS} / 1000000000 \* 4 \* ${RECURSION_DEPTH} \* ${NUM_LOOPS} + ${SLEEP_TIME} \* 4 \* ${NUM_LOOPS} \* ${RECURSION_DEPTH} + 50 \* ${TOTAL_CALLS} / 1000000000 \* 4 \* ${RECURSION_DEPTH} \* ${NUM_LOOPS} ` -echo "Experiment will take circa ${TIME} seconds." - -echo "Removing and recreating '${RESULTS_DIR}'" -(rm -rf ${RESULTS_DIR}) && mkdir ${RESULTS_DIR} -mkdir ${RESULTS_DIR}/stat/ - -ssh ${REMOTEHOST} "(rm -rf ${REMOTERESULTS_DIR}) && mkdir ${REMOTERESULTS_DIR}" -ssh ${REMOTEHOST} "mkdir ${REMOTERESULTS_DIR}/stat/" - -RAWFN="${RESULTS_DIR}/raw" - -JAVA_ARGS="-server" -JAVA_ARGS="${JAVA_ARGS} -d64" -JAVA_ARGS="${JAVA_ARGS} -Xms1G -Xmx4G" -JAVA_ARGS="${JAVA_ARGS} -verbose:gc -XX:+PrintCompilation" -#JAVA_ARGS="${JAVA_ARGS} -XX:+PrintInlining" -#JAVA_ARGS="${JAVA_ARGS} -XX:+UnlockDiagnosticVMOptions -XX:+LogCompilation" -#JAVA_ARGS="${JAVA_ARGS} -Djava.compiler=NONE" -JARNoInstru="-jar dist/OverheadEvaluationMicrobenchmarkTCPffiNoInstru.jar" -JARDeactived="-jar dist/OverheadEvaluationMicrobenchmarkTCPffiDeactivated.jar" -JARCollecting="-jar dist/OverheadEvaluationMicrobenchmarkTCPffiCollecting.jar" -JARNORMAL="-jar dist/OverheadEvaluationMicrobenchmarkTCPffiNormal.jar" - -JAVA_ARGS_NOINSTR="${JAVA_ARGS}" -JAVA_ARGS_LTW="${JAVA_ARGS} -javaagent:${BASE_DIR}/lib/aspectjweaver.jar -Dorg.aspectj.weaver.showWeaveInfo=false -Daj.weaving.verbose=false -Dorg.aspectj.weaver.loadtime.configuration=META-INF/kieker-overhead-benchmark.aop.xml" - -## Write configuration -uname -a >${RESULTS_DIR}/configuration.txt -${JAVA_BIN} ${JAVA_ARGS} -version 2>>${RESULTS_DIR}/configuration.txt -echo "JAVA_ARGS: ${JAVA_ARGS}" >>${RESULTS_DIR}/configuration.txt -echo "" >>${RESULTS_DIR}/configuration.txt -echo "Runtime: circa ${TIME} seconds" >>${RESULTS_DIR}/configuration.txt -echo "" >>${RESULTS_DIR}/configuration.txt -echo "SLEEP_TIME=${SLEEP_TIME}" >>${RESULTS_DIR}/configuration.txt -echo "NUM_LOOPS=${NUM_LOOPS}" >>${RESULTS_DIR}/configuration.txt -echo "TOTAL_CALLS=${TOTAL_CALLS}" >>${RESULTS_DIR}/configuration.txt -echo "METHOD_TIME=${METHOD_TIME}" >>${RESULTS_DIR}/configuration.txt -echo "THREADS=${THREADS}" >>${RESULTS_DIR}/configuration.txt -echo "RECURSION_DEPTH=${RECURSION_DEPTH}" >>${RESULTS_DIR}/configuration.txt -sync - -## Execute Benchmark - -for ((i=1;i<=${NUM_LOOPS};i+=1)); do - j=${RECURSION_DEPTH} - k=0 - echo "## Starting iteration ${i}/${NUM_LOOPS}" - - # No instrumentation - k=`expr ${k} + 1` - echo " # ${i}.${j}.${k} No instrumentation" - sar -o ${RESULTS_DIR}/stat/sar-${i}-${j}-${k}.data 5 2000 1>/dev/null 2>&1 & - ${JAVA_BIN} ${JAVA_ARGS_NOINSTR} ${JARNoInstru} \ - --output-filename ${RAWFN}-${i}-${j}-${k}.csv \ - --total-calls ${TOTAL_CALLS} \ - --method-time ${METHOD_TIME} \ - --total-threads ${THREADS} \ - --recursion-depth ${j} \ - ${MORE_PARAMS} - kill %sar - [ -f ${BASE_DIR}/hotspot.log ] && mv ${BASE_DIR}/hotspot.log ${RESULTS_DIR}/hotspot-${i}-${j}-${k}.log - sync - sleep ${SLEEP_TIME} - - # Deactivated Probe - k=`expr ${k} + 1` - echo " # ${i}.${j}.${k} Deactivated Probe" - sar -o ${RESULTS_DIR}/stat/sar-${i}-${j}-${k}.data 5 2000 1>/dev/null 2>&1 & - ssh ${REMOTEHOST} "nohup ${JAVA_BIN} -jar ${REMOTERESULTS_DIR}/dist/explorviz_worker.jar >${REMOTERESULTS_DIR}/worker-${i}-${j}-${k}.log &" - sleep 5 - ${JAVA_BIN} ${JAVA_ARGS_LTW} ${JARDeactived} \ - --output-filename ${RAWFN}-${i}-${j}-${k}.csv \ - --total-calls ${TOTAL_CALLS} \ - --method-time ${METHOD_TIME} \ - --total-threads ${THREADS} \ - --recursion-depth ${j} \ - ${MORE_PARAMS} - kill %sar - pkill -f 'java -jar' - ssh ${REMOTEHOST} "pkill -f 'java -jar'" - [ -f ${BASE_DIR}/hotspot.log ] && mv ${BASE_DIR}/hotspot.log ${RESULTS_DIR}/hotspot-${i}-${j}-${k}.log - sync - sleep ${SLEEP_TIME} - - # Collecting - k=`expr ${k} + 1` - echo " # ${i}.${j}.${k} Collecting" - sar -o ${RESULTS_DIR}/stat/sar-${i}-${j}-${k}.data 5 2000 1>/dev/null 2>&1 & - ssh ${REMOTEHOST} "nohup ${JAVA_BIN} -jar ${REMOTERESULTS_DIR}/dist/explorviz_worker.jar >${REMOTERESULTS_DIR}/worker-${i}-${j}-${k}.log &" - sleep 5 - ${JAVA_BIN} ${JAVA_ARGS_LTW} ${JARCollecting} \ - --output-filename ${RAWFN}-${i}-${j}-${k}.csv \ - --total-calls ${TOTAL_CALLS} \ - --method-time ${METHOD_TIME} \ - --total-threads ${THREADS} \ - --recursion-depth ${j} \ - ${MORE_PARAMS} - kill %sar - pkill -f 'java -jar' - ssh ${REMOTEHOST} "pkill -f 'java -jar'" - [ -f ${BASE_DIR}/hotspot.log ] && mv ${BASE_DIR}/hotspot.log ${RESULTS_DIR}/hotspot-${i}-${j}-${k}.log - sync - sleep ${SLEEP_TIME} - - # Logging - k=`expr ${k} + 1` - echo " # ${i}.${j}.${k} Logging" - sar -o ${RESULTS_DIR}/stat/sar-${i}-${j}-${k}.data 5 2000 1>/dev/null 2>&1 & - ssh ${REMOTEHOST} "nohup ${JAVA_BIN} -jar ${REMOTERESULTS_DIR}/dist/explorviz_worker.jar >${REMOTERESULTS_DIR}/worker-${i}-${j}-${k}.log &" - sleep 5 - ${JAVA_BIN} ${JAVA_ARGS_LTW} ${JARNORMAL} \ - --output-filename ${RAWFN}-${i}-${j}-${k}.csv \ - --total-calls ${TOTAL_CALLS} \ - --method-time ${METHOD_TIME} \ - --total-threads ${THREADS} \ - --recursion-depth ${j} \ - ${MORE_PARAMS} - kill %sar - pkill -f 'java -jar' - ssh ${REMOTEHOST} "pkill -f 'java -jar'" - [ -f ${BASE_DIR}/hotspot.log ] && mv ${BASE_DIR}/hotspot.log ${RESULTS_DIR}/hotspot-${i}-${j}-${k}.log - sync - sleep ${SLEEP_TIME} - - # Reconstruction - k=`expr ${k} + 1` - echo " # ${i}.${j}.${k} Reconstruction" - sar -o ${RESULTS_DIR}/stat/sar-${i}-${j}-${k}.data 5 2000 1>/dev/null 2>&1 & - ssh ${REMOTEHOST} "nohup ${JAVA_BIN} -jar ${REMOTERESULTS_DIR}/dist/explorviz_workerReconstruction.jar >${REMOTERESULTS_DIR}/worker-${i}-${j}-${k}.log &" - sleep 5 - ${JAVA_BIN} ${JAVA_ARGS_LTW} ${JARNORMAL} \ - --output-filename ${RAWFN}-${i}-${j}-${k}.csv \ - --total-calls ${TOTAL_CALLS} \ - --method-time ${METHOD_TIME} \ - --total-threads ${THREADS} \ - --recursion-depth ${j} \ - ${MORE_PARAMS} - kill %sar - pkill -f 'java -jar' - ssh ${REMOTEHOST} "pkill -f 'java -jar'" - [ -f ${BASE_DIR}/hotspot.log ] && mv ${BASE_DIR}/hotspot.log ${RESULTS_DIR}/hotspot-${i}-${j}-${k}.log - sync - sleep ${SLEEP_TIME} - - # Reduction - k=`expr ${k} + 1` - echo " # ${i}.${j}.${k} Reduction" - sar -o ${RESULTS_DIR}/stat/sar-${i}-${j}-${k}.data 5 2000 1>/dev/null 2>&1 & - ssh ${REMOTEHOST} "nohup ${JAVA_BIN} -jar ${REMOTERESULTS_DIR}/dist/explorviz_workerReduction.jar >${REMOTERESULTS_DIR}/worker-${i}-${j}-${k}.log &" - sleep 5 - ${JAVA_BIN} ${JAVA_ARGS_LTW} ${JARNORMAL} \ - --output-filename ${RAWFN}-${i}-${j}-${k}.csv \ - --total-calls ${TOTAL_CALLS} \ - --method-time ${METHOD_TIME} \ - --total-threads ${THREADS} \ - --recursion-depth ${j} \ - ${MORE_PARAMS} - kill %sar - pkill -f 'java -jar' - ssh ${REMOTEHOST} "pkill -f 'java -jar'" - [ -f ${BASE_DIR}/hotspot.log ] && mv ${BASE_DIR}/hotspot.log ${RESULTS_DIR}/hotspot-${i}-${j}-${k}.log - sync - sleep ${SLEEP_TIME} - -done -zip -jqr ${RESULTS_DIR}/stat.zip ${RESULTS_DIR}/stat -rm -rf ${RESULTS_DIR}/stat/ -[ -f ${RESULTS_DIR}/hotspot-1-${RECURSION_DEPTH}-1.log ] && grep "<task " ${RESULTS_DIR}/hotspot-*.log >${RESULTS_DIR}/log.log -[ -f ${BASE_DIR}/errorlog.txt ] && mv ${BASE_DIR}/errorlog.txt ${RESULTS_DIR} - -## Generate Results file -# Timeseries -R --vanilla --silent <<EOF -results_fn="${RAWFN}" -output_fn="${RESULTS_DIR}/results-timeseries.pdf" -configs.loop=${NUM_LOOPS} -configs.recursion=c(${RECURSION_DEPTH}) -configs.labels=c("No Probe","Deactivated Probe","Collecting Data","TCP Writer","Reconstruction","Reduction") -configs.colors=c("black","red","blue","green","yellow","purple") -results.count=${TOTAL_CALLS} -tsconf.min=(${METHOD_TIME}/1000) -tsconf.max=(${METHOD_TIME}/1000)+40 -source("${R_SCRIPT_DIR}timeseries.r") -EOF -# Timeseries-Average -R --vanilla --silent <<EOF -results_fn="${RAWFN}" -output_fn="${RESULTS_DIR}/results-timeseries-average.pdf" -configs.loop=${NUM_LOOPS} -configs.recursion=c(${RECURSION_DEPTH}) -configs.labels=c("No Probe","Deactivated Probe","Collecting Data","TCP Writer","Reconstruction","Reduction") -configs.colors=c("black","red","blue","green","yellow","purple") -results.count=${TOTAL_CALLS} -tsconf.min=(${METHOD_TIME}/1000) -tsconf.max=(${METHOD_TIME}/1000)+40 -source("${R_SCRIPT_DIR}timeseries-average.r") -EOF -# Throughput -R --vanilla --silent <<EOF -results_fn="${RAWFN}" -output_fn="${RESULTS_DIR}/results-throughput.pdf" -configs.loop=${NUM_LOOPS} -configs.recursion=c(${RECURSION_DEPTH}) -configs.labels=c("No Probe","Deactivated Probe","Collecting Data","TCP Writer","Reconstruction","Reduction") -configs.colors=c("black","red","blue","green","yellow","purple") -results.count=${TOTAL_CALLS} -source("${R_SCRIPT_DIR}throughput.r") -EOF -# Throughput-Average -R --vanilla --silent <<EOF -results_fn="${RAWFN}" -output_fn="${RESULTS_DIR}/results-throughput-average.pdf" -configs.loop=${NUM_LOOPS} -configs.recursion=c(${RECURSION_DEPTH}) -configs.labels=c("No Probe","Deactivated Probe","Collecting Data","TCP Writer","Reconstruction","Reduction") -configs.colors=c("black","red","blue","green","yellow","purple") -results.count=${TOTAL_CALLS} -source("${R_SCRIPT_DIR}throughput-average.r") -EOF -# Bars -R --vanilla --silent <<EOF -results_fn="${RAWFN}" -output_fn="${RESULTS_DIR}/results-bars.pdf" -outtxt_fn="${RESULTS_DIR}/results-text.txt" -configs.loop=${NUM_LOOPS} -configs.recursion=c(${RECURSION_DEPTH}) -configs.labels=c("No Probe","Deactivated Probe","Collecting Data","TCP Writer","Reconstruction","Reduction") -results.count=${TOTAL_CALLS} -results.skip=${TOTAL_CALLS}/2 -bars.minval=(${METHOD_TIME}/1000) -bars.maxval=(${METHOD_TIME}/1000)+40 -source("${R_SCRIPT_DIR}bar.r") -EOF - -## Clean up raw results -zip -jqr ${RESULTS_DIR}/results.zip ${RAWFN}* -rm -f ${RAWFN}* -zip -jqr ${RESULTS_DIR}/worker.zip ${RESULTS_DIR}/worker*.log -rm -f ${RESULTS_DIR}/worker*.log -[ -f ${BASE_DIR}/nohup.out ] && mv ${BASE_DIR}/nohup.out ${RESULTS_DIR} diff --git a/bin/2013-kieker-days-ffi/benchmark-kieker-days-ffi.sh b/bin/2013-kieker-days-ffi/benchmark-kieker-days-ffi.sh deleted file mode 100644 index f3eaf1f9a8de1f509d07f9ac0857b19e7ca2aed7..0000000000000000000000000000000000000000 --- a/bin/2013-kieker-days-ffi/benchmark-kieker-days-ffi.sh +++ /dev/null @@ -1,253 +0,0 @@ -#!/bin/bash - -JAVA_BIN="/localhome/ffi/jdk1.7.0_25/bin/java" - -R_SCRIPT_DIR=bin/icpe/r/ -BASE_DIR=./ -RESULTS_DIR="${BASE_DIR}/tmp/results-benchmark-kieker-days-ffi/" - -SLEEP_TIME=30 ## 30 -NUM_LOOPS=1 ## 10 -THREADS=1 ## 1 -RECURSION_DEPTH=10 ## 10 -TOTAL_CALLS=20000000 ## 20000000 -METHOD_TIME=0 ## 0 - -MORE_PARAMS="" -#MORE_PARAMS="--quickstart" - -TIME=`expr ${METHOD_TIME} \* ${TOTAL_CALLS} / 1000000000 \* 4 \* ${RECURSION_DEPTH} \* ${NUM_LOOPS} + ${SLEEP_TIME} \* 4 \* ${NUM_LOOPS} \* ${RECURSION_DEPTH} + 50 \* ${TOTAL_CALLS} / 1000000000 \* 4 \* ${RECURSION_DEPTH} \* ${NUM_LOOPS} ` -echo "Experiment will take circa ${TIME} seconds." - -echo "Removing and recreating '${RESULTS_DIR}'" -(rm -rf ${RESULTS_DIR}) && mkdir ${RESULTS_DIR} -mkdir ${RESULTS_DIR}/stat/ - -RAWFN="${RESULTS_DIR}/raw" - -JAVA_ARGS="-server" -JAVA_ARGS="${JAVA_ARGS} -d64" -JAVA_ARGS="${JAVA_ARGS} -Xms1G -Xmx4G" -JAVA_ARGS="${JAVA_ARGS} -verbose:gc -XX:+PrintCompilation" -#JAVA_ARGS="${JAVA_ARGS} -XX:+PrintInlining" -#JAVA_ARGS="${JAVA_ARGS} -XX:+UnlockDiagnosticVMOptions -XX:+LogCompilation" -#JAVA_ARGS="${JAVA_ARGS} -Djava.compiler=NONE" -JARNoInstru="-jar dist/OverheadEvaluationMicrobenchmarkTCPffiNoInstru.jar" -JARDeactived="-jar dist/OverheadEvaluationMicrobenchmarkTCPffiDeactivated.jar" -JARCollecting="-jar dist/OverheadEvaluationMicrobenchmarkTCPffiCollecting.jar" -JARNORMAL="-jar dist/OverheadEvaluationMicrobenchmarkTCPffiNormal.jar" - -JAVA_ARGS_NOINSTR="${JAVA_ARGS}" -JAVA_ARGS_LTW="${JAVA_ARGS} -javaagent:${BASE_DIR}/lib/aspectjweaver.jar -Dorg.aspectj.weaver.showWeaveInfo=false -Daj.weaving.verbose=false -Dorg.aspectj.weaver.loadtime.configuration=META-INF/kieker-overhead-benchmark.aop.xml" - -## Write configuration -uname -a >${RESULTS_DIR}/configuration.txt -${JAVA_BIN} ${JAVA_ARGS} -version 2>>${RESULTS_DIR}/configuration.txt -echo "JAVA_ARGS: ${JAVA_ARGS}" >>${RESULTS_DIR}/configuration.txt -echo "" >>${RESULTS_DIR}/configuration.txt -echo "Runtime: circa ${TIME} seconds" >>${RESULTS_DIR}/configuration.txt -echo "" >>${RESULTS_DIR}/configuration.txt -echo "SLEEP_TIME=${SLEEP_TIME}" >>${RESULTS_DIR}/configuration.txt -echo "NUM_LOOPS=${NUM_LOOPS}" >>${RESULTS_DIR}/configuration.txt -echo "TOTAL_CALLS=${TOTAL_CALLS}" >>${RESULTS_DIR}/configuration.txt -echo "METHOD_TIME=${METHOD_TIME}" >>${RESULTS_DIR}/configuration.txt -echo "THREADS=${THREADS}" >>${RESULTS_DIR}/configuration.txt -echo "RECURSION_DEPTH=${RECURSION_DEPTH}" >>${RESULTS_DIR}/configuration.txt -sync - -## Execute Benchmark - -for ((i=1;i<=${NUM_LOOPS};i+=1)); do - j=${RECURSION_DEPTH} - k=0 - echo "## Starting iteration ${i}/${NUM_LOOPS}" - - # No instrumentation - k=`expr ${k} + 1` - echo " # ${i}.${j}.${k} No instrumentation" - sar -o ${RESULTS_DIR}/stat/sar-${i}-${j}-${k}.data 5 2000 1>/dev/null 2>&1 & - ${JAVA_BIN} ${JAVA_ARGS_NOINSTR} ${JARNoInstru} \ - --output-filename ${RAWFN}-${i}-${j}-${k}.csv \ - --total-calls ${TOTAL_CALLS} \ - --method-time ${METHOD_TIME} \ - --total-threads ${THREADS} \ - --recursion-depth ${j} \ - ${MORE_PARAMS} - kill %sar - [ -f ${BASE_DIR}/hotspot.log ] && mv ${BASE_DIR}/hotspot.log ${RESULTS_DIR}/hotspot-${i}-${j}-${k}.log - sync - sleep ${SLEEP_TIME} - - # Deactivated Probe - k=`expr ${k} + 1` - echo " # ${i}.${j}.${k} Deactivated Probe" - sar -o ${RESULTS_DIR}/stat/sar-${i}-${j}-${k}.data 5 2000 1>/dev/null 2>&1 & - ${JAVA_BIN} -jar dist/explorviz_worker.jar >${RESULTS_DIR}/worker-${i}-${j}-${k}.log & - sleep 5 - ${JAVA_BIN} ${JAVA_ARGS_LTW} ${JARDeactived} \ - --output-filename ${RAWFN}-${i}-${j}-${k}.csv \ - --total-calls ${TOTAL_CALLS} \ - --method-time ${METHOD_TIME} \ - --total-threads ${THREADS} \ - --recursion-depth ${j} \ - ${MORE_PARAMS} - kill %sar - pkill -f 'java -jar' - [ -f ${BASE_DIR}/hotspot.log ] && mv ${BASE_DIR}/hotspot.log ${RESULTS_DIR}/hotspot-${i}-${j}-${k}.log - sync - sleep ${SLEEP_TIME} - - # Collecting - k=`expr ${k} + 1` - echo " # ${i}.${j}.${k} Collecting" - sar -o ${RESULTS_DIR}/stat/sar-${i}-${j}-${k}.data 5 2000 1>/dev/null 2>&1 & - ${JAVA_BIN} -jar dist/explorviz_worker.jar >${RESULTS_DIR}/worker-${i}-${j}-${k}.log & - sleep 5 - ${JAVA_BIN} ${JAVA_ARGS_LTW} ${JARCollecting} \ - --output-filename ${RAWFN}-${i}-${j}-${k}.csv \ - --total-calls ${TOTAL_CALLS} \ - --method-time ${METHOD_TIME} \ - --total-threads ${THREADS} \ - --recursion-depth ${j} \ - ${MORE_PARAMS} - kill %sar - pkill -f 'java -jar' - [ -f ${BASE_DIR}/hotspot.log ] && mv ${BASE_DIR}/hotspot.log ${RESULTS_DIR}/hotspot-${i}-${j}-${k}.log - sync - sleep ${SLEEP_TIME} - - # Logging - k=`expr ${k} + 1` - echo " # ${i}.${j}.${k} Logging" - sar -o ${RESULTS_DIR}/stat/sar-${i}-${j}-${k}.data 5 2000 1>/dev/null 2>&1 & - ${JAVA_BIN} -jar dist/explorviz_worker.jar >${RESULTS_DIR}/worker-${i}-${j}-${k}.log & - sleep 5 - ${JAVA_BIN} ${JAVA_ARGS_LTW} ${JARNORMAL} \ - --output-filename ${RAWFN}-${i}-${j}-${k}.csv \ - --total-calls ${TOTAL_CALLS} \ - --method-time ${METHOD_TIME} \ - --total-threads ${THREADS} \ - --recursion-depth ${j} \ - ${MORE_PARAMS} - kill %sar - pkill -f 'java -jar' - [ -f ${BASE_DIR}/hotspot.log ] && mv ${BASE_DIR}/hotspot.log ${RESULTS_DIR}/hotspot-${i}-${j}-${k}.log - sync - sleep ${SLEEP_TIME} - - # Reconstruction - k=`expr ${k} + 1` - echo " # ${i}.${j}.${k} Reconstruction" - sar -o ${RESULTS_DIR}/stat/sar-${i}-${j}-${k}.data 5 2000 1>/dev/null 2>&1 & - ${JAVA_BIN} -jar dist/explorviz_workerReconstruction.jar >${RESULTS_DIR}/worker-${i}-${j}-${k}.log & - sleep 5 - ${JAVA_BIN} ${JAVA_ARGS_LTW} ${JARNORMAL} \ - --output-filename ${RAWFN}-${i}-${j}-${k}.csv \ - --total-calls ${TOTAL_CALLS} \ - --method-time ${METHOD_TIME} \ - --total-threads ${THREADS} \ - --recursion-depth ${j} \ - ${MORE_PARAMS} - kill %sar - pkill -f 'java -jar' - [ -f ${BASE_DIR}/hotspot.log ] && mv ${BASE_DIR}/hotspot.log ${RESULTS_DIR}/hotspot-${i}-${j}-${k}.log - sync - sleep ${SLEEP_TIME} - - # Reduction - k=`expr ${k} + 1` - echo " # ${i}.${j}.${k} Reduction" - sar -o ${RESULTS_DIR}/stat/sar-${i}-${j}-${k}.data 5 2000 1>/dev/null 2>&1 & - ${JAVA_BIN} -jar dist/explorviz_workerReduction.jar >${RESULTS_DIR}/worker-${i}-${j}-${k}.log & - sleep 5 - ${JAVA_BIN} ${JAVA_ARGS_LTW} ${JARNORMAL} \ - --output-filename ${RAWFN}-${i}-${j}-${k}.csv \ - --total-calls ${TOTAL_CALLS} \ - --method-time ${METHOD_TIME} \ - --total-threads ${THREADS} \ - --recursion-depth ${j} \ - ${MORE_PARAMS} - kill %sar - pkill -f 'java -jar' - [ -f ${BASE_DIR}/hotspot.log ] && mv ${BASE_DIR}/hotspot.log ${RESULTS_DIR}/hotspot-${i}-${j}-${k}.log - sync - sleep ${SLEEP_TIME} - -done -zip -jqr ${RESULTS_DIR}/stat.zip ${RESULTS_DIR}/stat -rm -rf ${RESULTS_DIR}/stat/ -[ -f ${RESULTS_DIR}/hotspot-1-${RECURSION_DEPTH}-1.log ] && grep "<task " ${RESULTS_DIR}/hotspot-*.log >${RESULTS_DIR}/log.log -[ -f ${BASE_DIR}/errorlog.txt ] && mv ${BASE_DIR}/errorlog.txt ${RESULTS_DIR} - -## Generate Results file -# Timeseries -R --vanilla --silent <<EOF -results_fn="${RAWFN}" -output_fn="${RESULTS_DIR}/results-timeseries.pdf" -configs.loop=${NUM_LOOPS} -configs.recursion=c(${RECURSION_DEPTH}) -configs.labels=c("No Probe","Deactivated Probe","Collecting Data","TCP Writer","Reconstruction","Reduction") -configs.colors=c("black","red","blue","green","yellow","purple") -results.count=${TOTAL_CALLS} -tsconf.min=(${METHOD_TIME}/1000) -tsconf.max=(${METHOD_TIME}/1000)+40 -source("${R_SCRIPT_DIR}timeseries.r") -EOF -# Timeseries-Average -R --vanilla --silent <<EOF -results_fn="${RAWFN}" -output_fn="${RESULTS_DIR}/results-timeseries-average.pdf" -configs.loop=${NUM_LOOPS} -configs.recursion=c(${RECURSION_DEPTH}) -configs.labels=c("No Probe","Deactivated Probe","Collecting Data","TCP Writer","Reconstruction","Reduction") -configs.colors=c("black","red","blue","green","yellow","purple") -results.count=${TOTAL_CALLS} -tsconf.min=(${METHOD_TIME}/1000) -tsconf.max=(${METHOD_TIME}/1000)+40 -source("${R_SCRIPT_DIR}timeseries-average.r") -EOF -# Throughput -R --vanilla --silent <<EOF -results_fn="${RAWFN}" -output_fn="${RESULTS_DIR}/results-throughput.pdf" -configs.loop=${NUM_LOOPS} -configs.recursion=c(${RECURSION_DEPTH}) -configs.labels=c("No Probe","Deactivated Probe","Collecting Data","TCP Writer","Reconstruction","Reduction") -configs.colors=c("black","red","blue","green","yellow","purple") -results.count=${TOTAL_CALLS} -source("${R_SCRIPT_DIR}throughput.r") -EOF -# Throughput-Average -R --vanilla --silent <<EOF -results_fn="${RAWFN}" -output_fn="${RESULTS_DIR}/results-throughput-average.pdf" -configs.loop=${NUM_LOOPS} -configs.recursion=c(${RECURSION_DEPTH}) -configs.labels=c("No Probe","Deactivated Probe","Collecting Data","TCP Writer","Reconstruction","Reduction") -configs.colors=c("black","red","blue","green","yellow","purple") -results.count=${TOTAL_CALLS} -source("${R_SCRIPT_DIR}throughput-average.r") -EOF -# Bars -R --vanilla --silent <<EOF -results_fn="${RAWFN}" -output_fn="${RESULTS_DIR}/results-bars.pdf" -outtxt_fn="${RESULTS_DIR}/results-text.txt" -configs.loop=${NUM_LOOPS} -configs.recursion=c(${RECURSION_DEPTH}) -configs.labels=c("No Probe","Deactivated Probe","Collecting Data","TCP Writer","Reconstruction","Reduction") -results.count=${TOTAL_CALLS} -results.skip=${TOTAL_CALLS}/2 -bars.minval=(${METHOD_TIME}/1000) -bars.maxval=(${METHOD_TIME}/1000)+40 -source("${R_SCRIPT_DIR}bar.r") -EOF - -## Clean up raw results -zip -jqr ${RESULTS_DIR}/results.zip ${RAWFN}* -rm -f ${RAWFN}* -zip -jqr ${RESULTS_DIR}/worker.zip ${RESULTS_DIR}/worker*.log -rm -f ${RESULTS_DIR}/worker*.log -[ -f ${BASE_DIR}/nohup.out ] && mv ${BASE_DIR}/nohup.out ${RESULTS_DIR} - -# end diff --git a/bin/2013-kieker-days-ffi/benchmark-kieker-days-kieker.sh b/bin/2013-kieker-days-ffi/benchmark-kieker-days-kieker.sh deleted file mode 100644 index 8b0995ef518a3bf993688acef119465b0fc50833..0000000000000000000000000000000000000000 --- a/bin/2013-kieker-days-ffi/benchmark-kieker-days-kieker.sh +++ /dev/null @@ -1,295 +0,0 @@ -#!/bin/bash - -JAVABIN="/localhome/ffi/jdk1.7.0_25/bin/" - -R_SCRIPT_DIR=bin/icpe/r/ -BASE_DIR=./ -RESULTS_DIR="${BASE_DIR}/tmp/results-benchmark-kieker-days-kieker/" - -SLEEP_TIME=30 ## 30 -NUM_LOOPS=1 ## 10 -THREADS=1 ## 1 -RECURSION_DEPTH=10 ## 10 -TOTAL_CALLS=2000000 ## 20000000 -METHOD_TIME=0 ## 0 - -#MORE_PARAMS="" -MORE_PARAMS="--quickstart" - -TIME=`expr ${METHOD_TIME} \* ${TOTAL_CALLS} / 1000000000 \* 4 \* ${RECURSION_DEPTH} \* ${NUM_LOOPS} + ${SLEEP_TIME} \* 4 \* ${NUM_LOOPS} \* ${RECURSION_DEPTH} + 50 \* ${TOTAL_CALLS} / 1000000000 \* 4 \* ${RECURSION_DEPTH} \* ${NUM_LOOPS} ` -echo "Experiment will take circa ${TIME} seconds." - -echo "Removing and recreating '${RESULTS_DIR}'" -(rm -rf ${RESULTS_DIR}) && mkdir ${RESULTS_DIR} -mkdir ${RESULTS_DIR}/stat/ - -# Clear kieker.log and initialize logging -rm -f ${BASE_DIR}/kieker.log -touch ${BASE_DIR}/kieker.log - -RAWFN="${RESULTS_DIR}/raw" - -JAVA_ARGS="-server" -JAVA_ARGS="${JAVA_ARGS} -d64" -JAVA_ARGS="${JAVA_ARGS} -Xms1G -Xmx4G" -JAVA_ARGS="${JAVA_ARGS} -verbose:gc -XX:+PrintCompilation" -#JAVA_ARGS="${JAVA_ARGS} -XX:+PrintInlining" -#JAVA_ARGS="${JAVA_ARGS} -XX:+UnlockDiagnosticVMOptions -XX:+LogCompilation" -#JAVA_ARGS="${JAVA_ARGS} -Djava.compiler=NONE" -JAR="-jar dist/OverheadEvaluationMicrobenchmarkKieker.jar" - -JAVA_ARGS_NOINSTR="${JAVA_ARGS}" -JAVA_ARGS_LTW="${JAVA_ARGS} -javaagent:${BASE_DIR}/lib/kieker-1.9-SNAPSHOT_aspectj.jar -Dorg.aspectj.weaver.showWeaveInfo=false -Daj.weaving.verbose=false -Dkieker.monitoring.adaptiveMonitoring.enabled=false -Dorg.aspectj.weaver.loadtime.configuration=META-INF/kieker.aop.xml" -JAVA_ARGS_KIEKER_DEACTV="${JAVA_ARGS_LTW} -Dkieker.monitoring.enabled=false -Dkieker.monitoring.writer=kieker.monitoring.writer.DummyWriter" -JAVA_ARGS_KIEKER_NOLOGGING="${JAVA_ARGS_LTW} -Dkieker.monitoring.writer=kieker.monitoring.writer.DummyWriter" -JAVA_ARGS_KIEKER_LOGGING="${JAVA_ARGS_LTW} -Dkieker.monitoring.writer=kieker.monitoring.writer.tcp.TCPWriter -Dkieker.monitoring.writer.tcp.TCPWriter.QueueSize=100000 -Dkieker.monitoring.writer.tcp.TCPWriter.QueueFullBehavior=1" - -## Write configuration -uname -a >${RESULTS_DIR}/configuration.txt -${JAVA_BIN} ${JAVA_ARGS} -version 2>>${RESULTS_DIR}/configuration.txt -echo "JAVA_ARGS: ${JAVA_ARGS}" >>${RESULTS_DIR}/configuration.txt -echo "" >>${RESULTS_DIR}/configuration.txt -echo "Runtime: circa ${TIME} seconds" >>${RESULTS_DIR}/configuration.txt -echo "" >>${RESULTS_DIR}/configuration.txt -echo "SLEEP_TIME=${SLEEP_TIME}" >>${RESULTS_DIR}/configuration.txt -echo "NUM_LOOPS=${NUM_LOOPS}" >>${RESULTS_DIR}/configuration.txt -echo "TOTAL_CALLS=${TOTAL_CALLS}" >>${RESULTS_DIR}/configuration.txt -echo "METHOD_TIME=${METHOD_TIME}" >>${RESULTS_DIR}/configuration.txt -echo "THREADS=${THREADS}" >>${RESULTS_DIR}/configuration.txt -echo "RECURSION_DEPTH=${RECURSION_DEPTH}" >>${RESULTS_DIR}/configuration.txt -sync - -## Execute Benchmark -for ((i=1;i<=${NUM_LOOPS};i+=1)); do - j=${RECURSION_DEPTH} - k=0 - echo "## Starting iteration ${i}/${NUM_LOOPS}" - echo "## Starting iteration ${i}/${NUM_LOOPS}" >>${BASE_DIR}/kieker.log - - # No instrumentation - k=`expr ${k} + 1` - echo " # ${i}.${j}.${k} No instrumentation" - echo " # ${i}.${j}.${k} No instrumentation" >>${BASE_DIR}/kieker.log - mpstat 1 > ${RESULTS_DIR}/stat/mpstat-${i}-${j}-${k}.txt & - vmstat 1 > ${RESULTS_DIR}/stat/vmstat-${i}-${j}-${k}.txt & - iostat -xn 10 > ${RESULTS_DIR}/stat/iostat-${i}-${j}-${k}.txt & - ${JAVA_BIN} ${JAVA_ARGS_NOINSTR} ${JAR} \ - --output-filename ${RAWFN}-${i}-${j}-${k}.csv \ - --total-calls ${TOTAL_CALLS} \ - --method-time ${METHOD_TIME} \ - --total-threads ${THREADS} \ - --recursion-depth ${j} \ - ${MORE_PARAMS} - kill %mpstat - kill %vmstat - kill %iostat - [ -f ${BASE_DIR}/hotspot.log ] && mv ${BASE_DIR}/hotspot.log ${RESULTS_DIR}/hotspot-${i}-${j}-${k}.log - echo >>${BASE_DIR}/kieker.log - echo >>${BASE_DIR}/kieker.log - sync - sleep ${SLEEP_TIME} - - # Deactivated probe - k=`expr ${k} + 1` - echo " # ${i}.${j}.${k} Deactivated probe" - echo " # ${i}.${j}.${k} Deactivated probe" >>${BASE_DIR}/kieker.log - mpstat 1 > ${RESULTS_DIR}/stat/mpstat-${i}-${j}-${k}.txt & - vmstat 1 > ${RESULTS_DIR}/stat/vmstat-${i}-${j}-${k}.txt & - iostat -xn 10 > ${RESULTS_DIR}/stat/iostat-${i}-${j}-${k}.txt & - ${JAVA_BIN} ${JAVA_ARGS_KIEKER_DEACTV} ${JAR} \ - --output-filename ${RAWFN}-${i}-${j}-${k}.csv \ - --total-calls ${TOTAL_CALLS} \ - --method-time ${METHOD_TIME} \ - --total-threads ${THREADS} \ - --recursion-depth ${j} \ - ${MORE_PARAMS} - kill %mpstat - kill %vmstat - kill %iostat - [ -f ${BASE_DIR}/hotspot.log ] && mv ${BASE_DIR}/hotspot.log ${RESULTS_DIR}/hotspot-${i}-${j}-${k}.log - echo >>${BASE_DIR}/kieker.log - echo >>${BASE_DIR}/kieker.log - sync - sleep ${SLEEP_TIME} - - # No logging - k=`expr ${k} + 1` - echo " # ${i}.${j}.${k} No logging (null writer)" - echo " # ${i}.${j}.${k} No logging (null writer)" >>${BASE_DIR}/kieker.log - mpstat 1 > ${RESULTS_DIR}/stat/mpstat-${i}-${j}-${k}.txt & - vmstat 1 > ${RESULTS_DIR}/stat/vmstat-${i}-${j}-${k}.txt & - iostat -xn 10 > ${RESULTS_DIR}/stat/iostat-${i}-${j}-${k}.txt & - ${JAVA_BIN} ${JAVA_ARGS_KIEKER_NOLOGGING} ${JAR} \ - --output-filename ${RAWFN}-${i}-${j}-${k}.csv \ - --total-calls ${TOTAL_CALLS} \ - --method-time ${METHOD_TIME} \ - --total-threads ${THREADS} \ - --recursion-depth ${j} \ - ${MORE_PARAMS} - kill %mpstat - kill %vmstat - kill %iostat - [ -f ${BASE_DIR}/hotspot.log ] && mv ${BASE_DIR}/hotspot.log ${RESULTS_DIR}/hotspot-${i}-${j}-${k}.log - echo >>${BASE_DIR}/kieker.log - echo >>${BASE_DIR}/kieker.log - sync - sleep ${SLEEP_TIME} - - # Logging - k=`expr ${k} + 1` - echo " # ${i}.${j}.${k} Logging" - echo " # ${i}.${j}.${k} Logging" >>${BASE_DIR}/kieker.log - mpstat 1 > ${RESULTS_DIR}/stat/mpstat-${i}-${j}-${k}.txt & - vmstat 1 > ${RESULTS_DIR}/stat/vmstat-${i}-${j}-${k}.txt & - iostat -xn 10 > ${RESULTS_DIR}/stat/iostat-${i}-${j}-${k}.txt & - ${JAVA_BIN} -jar dist/KiekerTCPReader1.jar 2>${RESULTS_DIR}/worker-${i}-${j}-${k}.log & - sleep 5 - ${JAVA_BIN} ${JAVA_ARGS_KIEKER_LOGGING} ${JAR} \ - --output-filename ${RAWFN}-${i}-${j}-${k}.csv \ - --total-calls ${TOTAL_CALLS} \ - --method-time ${METHOD_TIME} \ - --total-threads ${THREADS} \ - --recursion-depth ${j} \ - ${MORE_PARAMS} - kill %mpstat - kill %vmstat - kill %iostat - pkill -f 'java -jar' - rm -rf ${BASE_DIR}/tmp/kieker-* - [ -f ${BASE_DIR}/hotspot.log ] && mv ${BASE_DIR}/hotspot.log ${RESULTS_DIR}/hotspot-${i}-${j}-${k}.log - echo >>${BASE_DIR}/kieker.log - echo >>${BASE_DIR}/kieker.log - sync - sleep ${SLEEP_TIME} - - # Reconstruction - k=`expr ${k} + 1` - echo " # ${i}.${j}.${k} Logging" - echo " # ${i}.${j}.${k} Logging" >>${BASE_DIR}/kieker.log - mpstat 1 > ${RESULTS_DIR}/stat/mpstat-${i}-${j}-${k}.txt & - vmstat 1 > ${RESULTS_DIR}/stat/vmstat-${i}-${j}-${k}.txt & - iostat -xn 10 > ${RESULTS_DIR}/stat/iostat-${i}-${j}-${k}.txt & - ${JAVA_BIN} -jar dist/KiekerTCPReader2.jar 2>${RESULTS_DIR}/worker-${i}-${j}-${k}.log & - sleep 5 - ${JAVA_BIN} ${JAVA_ARGS_KIEKER_LOGGING} ${JAR} \ - --output-filename ${RAWFN}-${i}-${j}-${k}.csv \ - --total-calls ${TOTAL_CALLS} \ - --method-time ${METHOD_TIME} \ - --total-threads ${THREADS} \ - --recursion-depth ${j} \ - ${MORE_PARAMS} - kill %mpstat - kill %vmstat - kill %iostat - pkill -f 'java -jar' - rm -rf ${BASE_DIR}/tmp/kieker-* - [ -f ${BASE_DIR}/hotspot.log ] && mv ${BASE_DIR}/hotspot.log ${RESULTS_DIR}/hotspot-${i}-${j}-${k}.log - echo >>${BASE_DIR}/kieker.log - echo >>${BASE_DIR}/kieker.log - sync - sleep ${SLEEP_TIME} - - # Reduction - k=`expr ${k} + 1` - echo " # ${i}.${j}.${k} Logging" - echo " # ${i}.${j}.${k} Logging" >>${BASE_DIR}/kieker.log - mpstat 1 > ${RESULTS_DIR}/stat/mpstat-${i}-${j}-${k}.txt & - vmstat 1 > ${RESULTS_DIR}/stat/vmstat-${i}-${j}-${k}.txt & - iostat -xn 10 > ${RESULTS_DIR}/stat/iostat-${i}-${j}-${k}.txt & - ${JAVA_BIN} -jar dist/KiekerTCPReader3.jar 2>${RESULTS_DIR}/worker-${i}-${j}-${k}.log & - sleep 5 - ${JAVA_BIN} ${JAVA_ARGS_KIEKER_LOGGING} ${JAR} \ - --output-filename ${RAWFN}-${i}-${j}-${k}.csv \ - --total-calls ${TOTAL_CALLS} \ - --method-time ${METHOD_TIME} \ - --total-threads ${THREADS} \ - --recursion-depth ${j} \ - ${MORE_PARAMS} - kill %mpstat - kill %vmstat - kill %iostat - pkill -f 'java -jar' - rm -rf ${BASE_DIR}/tmp/kieker-* - [ -f ${BASE_DIR}/hotspot.log ] && mv ${BASE_DIR}/hotspot.log ${RESULTS_DIR}/hotspot-${i}-${j}-${k}.log - echo >>${BASE_DIR}/kieker.log - echo >>${BASE_DIR}/kieker.log - sync - sleep ${SLEEP_TIME} - -done -zip -jqr ${RESULTS_DIR}/stat.zip ${RESULTS_DIR}/stat -rm -rf ${RESULTS_DIR}/stat/ -mv ${BASE_DIR}/kieker.log ${RESULTS_DIR}/kieker.log -[ -f ${RESULTS_DIR}/hotspot-1-${RECURSION_DEPTH}-1.log ] && grep "<task " ${RESULTS_DIR}/hotspot-*.log >${RESULTS_DIR}/log.log -[ -f ${BASE_DIR}/errorlog.txt ] && mv ${BASE_DIR}/errorlog.txt ${RESULTS_DIR} - -## Generate Results file -# Timeseries -R --vanilla --silent <<EOF -results_fn="${RAWFN}" -output_fn="${RESULTS_DIR}/results-timeseries.pdf" -configs.loop=${NUM_LOOPS} -configs.recursion=c(${RECURSION_DEPTH}) -configs.labels=c("No Probe","Deactivated Probe","Collecting Data","TCP Writer","Reconstruction","Reduction") -configs.colors=c("black","red","blue","green","yellow","purple") -results.count=${TOTAL_CALLS} -tsconf.min=(${METHOD_TIME}/1000) -tsconf.max=(${METHOD_TIME}/1000)+40 -source("${R_SCRIPT_DIR}timeseries.r") -EOF -# Timeseries-Average -R --vanilla --silent <<EOF -results_fn="${RAWFN}" -output_fn="${RESULTS_DIR}/results-timeseries-average.pdf" -configs.loop=${NUM_LOOPS} -configs.recursion=c(${RECURSION_DEPTH}) -configs.labels=c("No Probe","Deactivated Probe","Collecting Data","TCP Writer","Reconstruction","Reduction") -configs.colors=c("black","red","blue","green","yellow","purple") -results.count=${TOTAL_CALLS} -tsconf.min=(${METHOD_TIME}/1000) -tsconf.max=(${METHOD_TIME}/1000)+40 -source("${R_SCRIPT_DIR}timeseries-average.r") -EOF -# Throughput -R --vanilla --silent <<EOF -results_fn="${RAWFN}" -output_fn="${RESULTS_DIR}/results-throughput.pdf" -configs.loop=${NUM_LOOPS} -configs.recursion=c(${RECURSION_DEPTH}) -configs.labels=c("No Probe","Deactivated Probe","Collecting Data","TCP Writer","Reconstruction","Reduction") -configs.colors=c("black","red","blue","green","yellow","purple") -results.count=${TOTAL_CALLS} -source("${R_SCRIPT_DIR}throughput.r") -EOF -# Throughput-Average -R --vanilla --silent <<EOF -results_fn="${RAWFN}" -output_fn="${RESULTS_DIR}/results-throughput-average.pdf" -configs.loop=${NUM_LOOPS} -configs.recursion=c(${RECURSION_DEPTH}) -configs.labels=c("No Probe","Deactivated Probe","Collecting Data","TCP Writer","Reconstruction","Reduction") -configs.colors=c("black","red","blue","green","yellow","purple") -results.count=${TOTAL_CALLS} -source("${R_SCRIPT_DIR}throughput-average.r") -EOF -# Bars -R --vanilla --silent <<EOF -results_fn="${RAWFN}" -output_fn="${RESULTS_DIR}/results-bars.pdf" -outtxt_fn="${RESULTS_DIR}/results-text.txt" -configs.loop=${NUM_LOOPS} -configs.recursion=c(${RECURSION_DEPTH}) -configs.labels=c("No Probe","Deactivated Probe","Collecting Data","TCP Writer","Reconstruction","Reduction") -results.count=${TOTAL_CALLS} -results.skip=${TOTAL_CALLS}/2 -bars.minval=(${METHOD_TIME}/1000) -bars.maxval=(${METHOD_TIME}/1000)+40 -source("${R_SCRIPT_DIR}bar.r") -EOF - -## Clean up raw results -zip -jqr ${RESULTS_DIR}/results.zip ${RAWFN}* -rm -f ${RAWFN}* -zip -jqr ${RESULTS_DIR}/worker.zip ${RESULTS_DIR}/worker*.log -rm -f ${RESULTS_DIR}/worker*.log -[ -f ${BASE_DIR}/nohup.out ] && mv ${BASE_DIR}/nohup.out ${RESULTS_DIR} diff --git a/bin/2013-kieker-days/benchmark-kieker-days-ffi-remote.sh b/bin/2013-kieker-days/benchmark-kieker-days-ffi-remote.sh deleted file mode 100644 index f78b0dacbcade895ec6b4aaa873d64291a14d048..0000000000000000000000000000000000000000 --- a/bin/2013-kieker-days/benchmark-kieker-days-ffi-remote.sh +++ /dev/null @@ -1,211 +0,0 @@ -#!/bin/bash - -JAVABIN="" -REMOTEHOST="ubuntu@10.50.0.4" -REMOTEBASE_DIR="/home/ubuntu/" - -R_SCRIPT_DIR=bin/r-scripts/ -BASE_DIR=./ -RESULTS_DIR="${BASE_DIR}/tmp/results-benchmark-kieker-days-ffi/" -REMOTERESULTS_DIR="${REMOTEBASE_DIR}/tmp/results-benchmark-kieker-days-ffi/" - -SLEEP_TIME=30 ## 30 -NUM_LOOPS=10 ## 10 -THREADS=1 ## 1 -RECURSION_DEPTH=10 ## 10 -TOTAL_CALLS=100000000 ## 20000000 -METHOD_TIME=0 ## 0 - -MORE_PARAMS="" -#MORE_PARAMS="--quickstart" - -TIME=`expr ${METHOD_TIME} \* ${TOTAL_CALLS} / 1000000000 \* 4 \* ${RECURSION_DEPTH} \* ${NUM_LOOPS} + ${SLEEP_TIME} \* 4 \* ${NUM_LOOPS} \* ${RECURSION_DEPTH} + 50 \* ${TOTAL_CALLS} / 1000000000 \* 4 \* ${RECURSION_DEPTH} \* ${NUM_LOOPS} ` -echo "Experiment will take circa ${TIME} seconds." - -echo "Removing and recreating '${RESULTS_DIR}'" -(rm -rf ${RESULTS_DIR}) && mkdir ${RESULTS_DIR} -mkdir ${RESULTS_DIR}/stat/ - -ssh ${REMOTEHOST} "(rm -rf ${REMOTERESULTS_DIR}) && mkdir ${REMOTERESULTS_DIR}" -ssh ${REMOTEHOST} "mkdir ${REMOTERESULTS_DIR}/stat/" - -RAWFN="${RESULTS_DIR}/raw" - -JAVA_ARGS="-server" -JAVA_ARGS="${JAVA_ARGS} -d64" -JAVA_ARGS="${JAVA_ARGS} -Xms4G -Xmx12G" -JAVA_ARGS="${JAVA_ARGS} -verbose:gc -XX:+PrintCompilation" -#JAVA_ARGS="${JAVA_ARGS} -XX:+PrintInlining" -#JAVA_ARGS="${JAVA_ARGS} -XX:+UnlockDiagnosticVMOptions -XX:+LogCompilation" -#JAVA_ARGS="${JAVA_ARGS} -Djava.compiler=NONE" -JARNoInstru="-jar dist/OverheadEvaluationMicrobenchmarkTCPffiNoInstru.jar" -JARDeactived="-jar dist/OverheadEvaluationMicrobenchmarkTCPffiDeactivated.jar" -JARCollecting="-jar dist/OverheadEvaluationMicrobenchmarkTCPffiCollecting.jar" -JARNORMAL="-jar dist/OverheadEvaluationMicrobenchmarkTCPffiNormal.jar" - -JAVA_ARGS_NOINSTR="${JAVA_ARGS}" -JAVA_ARGS_LTW="${JAVA_ARGS} -javaagent:${BASE_DIR}/lib/aspectjweaver.jar -Dorg.aspectj.weaver.showWeaveInfo=false -Daj.weaving.verbose=false -Dorg.aspectj.weaver.loadtime.configuration=META-INF/kieker-overhead-benchmark.aop.xml" - -## Write configuration -uname -a >${RESULTS_DIR}/configuration.txt -${JAVA_BIN} ${JAVA_ARGS} -version 2>>${RESULTS_DIR}/configuration.txt -echo "JAVA_ARGS: ${JAVA_ARGS}" >>${RESULTS_DIR}/configuration.txt -echo "" >>${RESULTS_DIR}/configuration.txt -echo "Runtime: circa ${TIME} seconds" >>${RESULTS_DIR}/configuration.txt -echo "" >>${RESULTS_DIR}/configuration.txt -echo "SLEEP_TIME=${SLEEP_TIME}" >>${RESULTS_DIR}/configuration.txt -echo "NUM_LOOPS=${NUM_LOOPS}" >>${RESULTS_DIR}/configuration.txt -echo "TOTAL_CALLS=${TOTAL_CALLS}" >>${RESULTS_DIR}/configuration.txt -echo "METHOD_TIME=${METHOD_TIME}" >>${RESULTS_DIR}/configuration.txt -echo "THREADS=${THREADS}" >>${RESULTS_DIR}/configuration.txt -echo "RECURSION_DEPTH=${RECURSION_DEPTH}" >>${RESULTS_DIR}/configuration.txt -sync - -## Execute Benchmark - -for ((i=1;i<=${NUM_LOOPS};i+=1)); do - j=${RECURSION_DEPTH} - k=0 - echo "## Starting iteration ${i}/${NUM_LOOPS}" - # No instrumentation - k=`expr ${k} + 1` - echo " # ${i}.${j}.${k} No instrumentation" - #sar -o ${RESULTS_DIR}/stat/sar-${i}-${j}-${k}.data 5 2000 1>/dev/null 2>&1 & - ${JAVA_BIN} ${JAVA_ARGS_NOINSTR} ${JARNoInstru} \ - --output-filename ${RAWFN}-${i}-${j}-${k}.csv \ - --total-calls ${TOTAL_CALLS} \ - --method-time ${METHOD_TIME} \ - --total-threads ${THREADS} \ - --recursion-depth ${j} \ - ${MORE_PARAMS} - #kill %sar - [ -f ${BASE_DIR}/hotspot.log ] && mv ${BASE_DIR}/hotspot.log ${RESULTS_DIR}/hotspot-${i}-${j}-${k}.log - sync - sleep ${SLEEP_TIME} - - # Deactivated Probe - k=`expr ${k} + 1` - echo " # ${i}.${j}.${k} Deactivated Probe" - #sar -o ${RESULTS_DIR}/stat/sar-${i}-${j}-${k}.data 5 2000 1>/dev/null 2>&1 & - ssh ${REMOTEHOST} "${JAVA_BIN} ${JAVA_ARGS} -jar ${REMOTEBASE_DIR}/dist/explorviz_worker.jar </dev/null >${REMOTERESULTS_DIR}/worker-${i}-${j}-${k}.log 2>&1 &" - sleep 5 - ${JAVA_BIN} ${JAVA_ARGS_LTW} ${JARDeactived} \ - --output-filename ${RAWFN}-${i}-${j}-${k}.csv \ - --total-calls ${TOTAL_CALLS} \ - --method-time ${METHOD_TIME} \ - --total-threads ${THREADS} \ - --recursion-depth ${j} \ - ${MORE_PARAMS} - #kill %sar - killall java - ssh ${REMOTEHOST} "killall java" - [ -f ${BASE_DIR}/hotspot.log ] && mv ${BASE_DIR}/hotspot.log ${RESULTS_DIR}/hotspot-${i}-${j}-${k}.log - sync - sleep ${SLEEP_TIME} - - # Collecting - k=`expr ${k} + 1` - echo " # ${i}.${j}.${k} Collecting" - #sar -o ${RESULTS_DIR}/stat/sar-${i}-${j}-${k}.data 5 2000 1>/dev/null 2>&1 & - ssh ${REMOTEHOST} "${JAVA_BIN} ${JAVA_ARGS} -jar ${REMOTEBASE_DIR}/dist/explorviz_worker.jar </dev/null >${REMOTERESULTS_DIR}/worker-${i}-${j}-${k}.log 2>&1 &" - sleep 5 - ${JAVA_BIN} ${JAVA_ARGS_LTW} ${JARCollecting} \ - --output-filename ${RAWFN}-${i}-${j}-${k}.csv \ - --total-calls ${TOTAL_CALLS} \ - --method-time ${METHOD_TIME} \ - --total-threads ${THREADS} \ - --recursion-depth ${j} \ - ${MORE_PARAMS} - #kill %sar - killall java - ssh ${REMOTEHOST} "killall java" - [ -f ${BASE_DIR}/hotspot.log ] && mv ${BASE_DIR}/hotspot.log ${RESULTS_DIR}/hotspot-${i}-${j}-${k}.log - sync - sleep ${SLEEP_TIME} - - # Logging - k=`expr ${k} + 1` - echo " # ${i}.${j}.${k} Logging" - #sar -o ${RESULTS_DIR}/stat/sar-${i}-${j}-${k}.data 5 2000 1>/dev/null 2>&1 & - ssh ${REMOTEHOST} "${JAVA_BIN} ${JAVA_ARGS} -jar ${REMOTEBASE_DIR}/dist/explorviz_worker.jar </dev/null >${REMOTERESULTS_DIR}/worker-${i}-${j}-${k}.log 2>&1 &" - sleep 5 - ${JAVA_BIN} ${JAVA_ARGS_LTW} ${JARNORMAL} \ - --output-filename ${RAWFN}-${i}-${j}-${k}.csv \ - --total-calls ${TOTAL_CALLS} \ - --method-time ${METHOD_TIME} \ - --total-threads ${THREADS} \ - --recursion-depth ${j} \ - ${MORE_PARAMS} - #kill %sar - killall java - ssh ${REMOTEHOST} "killall java" - [ -f ${BASE_DIR}/hotspot.log ] && mv ${BASE_DIR}/hotspot.log ${RESULTS_DIR}/hotspot-${i}-${j}-${k}.log - sync - sleep ${SLEEP_TIME} - - # Reconstruction - k=`expr ${k} + 1` - echo " # ${i}.${j}.${k} Reconstruction" - #sar -o ${RESULTS_DIR}/stat/sar-${i}-${j}-${k}.data 5 2000 1>/dev/null 2>&1 & - ssh ${REMOTEHOST} "${JAVA_BIN} ${JAVA_ARGS} -jar ${REMOTEBASE_DIR}/dist/explorviz_workerReconstruction.jar </dev/null >${REMOTERESULTS_DIR}/worker-${i}-${j}-${k}.log 2>&1 &" - sleep 5 - ${JAVA_BIN} ${JAVA_ARGS_LTW} ${JARNORMAL} \ - --output-filename ${RAWFN}-${i}-${j}-${k}.csv \ - --total-calls ${TOTAL_CALLS} \ - --method-time ${METHOD_TIME} \ - --total-threads ${THREADS} \ - --recursion-depth ${j} \ - ${MORE_PARAMS} - #kill %sar - killall java - ssh ${REMOTEHOST} "killall java" - [ -f ${BASE_DIR}/hotspot.log ] && mv ${BASE_DIR}/hotspot.log ${RESULTS_DIR}/hotspot-${i}-${j}-${k}.log - sync - sleep ${SLEEP_TIME} - - # Reduction - k=`expr ${k} + 1` - echo " # ${i}.${j}.${k} Reduction" - #sar -o ${RESULTS_DIR}/stat/sar-${i}-${j}-${k}.data 5 2000 1>/dev/null 2>&1 & - ssh ${REMOTEHOST} "${JAVA_BIN} ${JAVA_ARGS} -jar ${REMOTEBASE_DIR}/dist/explorviz_workerReduction.jar </dev/null >${REMOTERESULTS_DIR}/worker-${i}-${j}-${k}.log 2>&1 &" - sleep 5 - ${JAVA_BIN} ${JAVA_ARGS_LTW} ${JARNORMAL} \ - --output-filename ${RAWFN}-${i}-${j}-${k}.csv \ - --total-calls ${TOTAL_CALLS} \ - --method-time ${METHOD_TIME} \ - --total-threads ${THREADS} \ - --recursion-depth ${j} \ - ${MORE_PARAMS} - #kill %sar - killall java - ssh ${REMOTEHOST} "killall java" - [ -f ${BASE_DIR}/hotspot.log ] && mv ${BASE_DIR}/hotspot.log ${RESULTS_DIR}/hotspot-${i}-${j}-${k}.log - sync - sleep ${SLEEP_TIME} - -done -zip -jqr ${RESULTS_DIR}/stat.zip ${RESULTS_DIR}/stat -rm -rf ${RESULTS_DIR}/stat/ -[ -f ${RESULTS_DIR}/hotspot-1-${RECURSION_DEPTH}-1.log ] && grep "<task " ${RESULTS_DIR}/hotspot-*.log >${RESULTS_DIR}/log.log -[ -f ${BASE_DIR}/errorlog.txt ] && mv ${BASE_DIR}/errorlog.txt ${RESULTS_DIR} - -## Generate Results file -# Bars -R --vanilla --silent <<EOF -results_fn="${RAWFN}" -outtxt_fn="${RESULTS_DIR}/results-text.txt" -configs.threads=${THREADS} -configs.loop=${NUM_LOOPS} -configs.recursion=c(${RECURSION_DEPTH}) -configs.labels=c("No Probe","Deactivated Probe","Collecting Data","TCP Writer","Reconstruction","Reduction") -results.count=${TOTAL_CALLS} -results.skip=${TOTAL_CALLS}/2 -source("${R_SCRIPT_DIR}stats.r") -EOF - -## Clean up raw results -zip -jqr ${RESULTS_DIR}/results.zip ${RAWFN}* -rm -f ${RAWFN}* -zip -jqr ${RESULTS_DIR}/worker.zip ${RESULTS_DIR}/worker*.log -rm -f ${RESULTS_DIR}/worker*.log -[ -f ${BASE_DIR}/nohup.out ] && mv ${BASE_DIR}/nohup.out ${RESULTS_DIR} diff --git a/bin/2013-kieker-days/benchmark-kieker-days-ffi.sh b/bin/2013-kieker-days/benchmark-kieker-days-ffi.sh deleted file mode 100644 index c2b0aa74025880bb05a75b3f0bb5185ec28a2823..0000000000000000000000000000000000000000 --- a/bin/2013-kieker-days/benchmark-kieker-days-ffi.sh +++ /dev/null @@ -1,251 +0,0 @@ -#!/bin/bash - -JAVABIN="/localhome/ffi/jdk1.7.0_25/bin/" - -R_SCRIPT_DIR=bin/icpe/r/ -BASE_DIR=./ -RESULTS_DIR="${BASE_DIR}/tmp/results-benchmark-kieker-days-ffi/" - -SLEEP_TIME=30 ## 30 -NUM_LOOPS=1 ## 10 -THREADS=1 ## 1 -RECURSION_DEPTH=10 ## 10 -TOTAL_CALLS=20000000 ## 20000000 -METHOD_TIME=0 ## 0 - -MORE_PARAMS="" -#MORE_PARAMS="--quickstart" - -TIME=`expr ${METHOD_TIME} \* ${TOTAL_CALLS} / 1000000000 \* 4 \* ${RECURSION_DEPTH} \* ${NUM_LOOPS} + ${SLEEP_TIME} \* 4 \* ${NUM_LOOPS} \* ${RECURSION_DEPTH} + 50 \* ${TOTAL_CALLS} / 1000000000 \* 4 \* ${RECURSION_DEPTH} \* ${NUM_LOOPS} ` -echo "Experiment will take circa ${TIME} seconds." - -echo "Removing and recreating '${RESULTS_DIR}'" -(rm -rf ${RESULTS_DIR}) && mkdir ${RESULTS_DIR} -mkdir ${RESULTS_DIR}/stat/ - -RAWFN="${RESULTS_DIR}/raw" - -JAVA_ARGS="-server" -JAVA_ARGS="${JAVA_ARGS} -d64" -JAVA_ARGS="${JAVA_ARGS} -Xms1G -Xmx4G" -JAVA_ARGS="${JAVA_ARGS} -verbose:gc -XX:+PrintCompilation" -#JAVA_ARGS="${JAVA_ARGS} -XX:+PrintInlining" -#JAVA_ARGS="${JAVA_ARGS} -XX:+UnlockDiagnosticVMOptions -XX:+LogCompilation" -#JAVA_ARGS="${JAVA_ARGS} -Djava.compiler=NONE" -JARNoInstru="-jar dist/OverheadEvaluationMicrobenchmarkTCPffiNoInstru.jar" -JARDeactived="-jar dist/OverheadEvaluationMicrobenchmarkTCPffiDeactivated.jar" -JARCollecting="-jar dist/OverheadEvaluationMicrobenchmarkTCPffiCollecting.jar" -JARNORMAL="-jar dist/OverheadEvaluationMicrobenchmarkTCPffiNormal.jar" - -JAVA_ARGS_NOINSTR="${JAVA_ARGS}" -JAVA_ARGS_LTW="${JAVA_ARGS} -javaagent:${BASE_DIR}/lib/aspectjweaver.jar -Dorg.aspectj.weaver.showWeaveInfo=false -Daj.weaving.verbose=false -Dorg.aspectj.weaver.loadtime.configuration=META-INF/kieker-overhead-benchmark.aop.xml" - -## Write configuration -uname -a >${RESULTS_DIR}/configuration.txt -${JAVA_BIN} ${JAVA_ARGS} -version 2>>${RESULTS_DIR}/configuration.txt -echo "JAVA_ARGS: ${JAVA_ARGS}" >>${RESULTS_DIR}/configuration.txt -echo "" >>${RESULTS_DIR}/configuration.txt -echo "Runtime: circa ${TIME} seconds" >>${RESULTS_DIR}/configuration.txt -echo "" >>${RESULTS_DIR}/configuration.txt -echo "SLEEP_TIME=${SLEEP_TIME}" >>${RESULTS_DIR}/configuration.txt -echo "NUM_LOOPS=${NUM_LOOPS}" >>${RESULTS_DIR}/configuration.txt -echo "TOTAL_CALLS=${TOTAL_CALLS}" >>${RESULTS_DIR}/configuration.txt -echo "METHOD_TIME=${METHOD_TIME}" >>${RESULTS_DIR}/configuration.txt -echo "THREADS=${THREADS}" >>${RESULTS_DIR}/configuration.txt -echo "RECURSION_DEPTH=${RECURSION_DEPTH}" >>${RESULTS_DIR}/configuration.txt -sync - -## Execute Benchmark - -for ((i=1;i<=${NUM_LOOPS};i+=1)); do - j=${RECURSION_DEPTH} - k=0 - echo "## Starting iteration ${i}/${NUM_LOOPS}" - - # No instrumentation - k=`expr ${k} + 1` - echo " # ${i}.${j}.${k} No instrumentation" - sar -o ${RESULTS_DIR}/stat/sar-${i}-${j}-${k}.data 5 2000 1>/dev/null 2>&1 & - ${JAVA_BIN} ${JAVA_ARGS_NOINSTR} ${JARNoInstru} \ - --output-filename ${RAWFN}-${i}-${j}-${k}.csv \ - --total-calls ${TOTAL_CALLS} \ - --method-time ${METHOD_TIME} \ - --total-threads ${THREADS} \ - --recursion-depth ${j} \ - ${MORE_PARAMS} - kill %sar - [ -f ${BASE_DIR}/hotspot.log ] && mv ${BASE_DIR}/hotspot.log ${RESULTS_DIR}/hotspot-${i}-${j}-${k}.log - sync - sleep ${SLEEP_TIME} - - # Deactivated Probe - k=`expr ${k} + 1` - echo " # ${i}.${j}.${k} Deactivated Probe" - sar -o ${RESULTS_DIR}/stat/sar-${i}-${j}-${k}.data 5 2000 1>/dev/null 2>&1 & - ${JAVA_BIN} -jar dist/explorviz_worker.jar >${RESULTS_DIR}/worker-${i}-${j}-${k}.log & - sleep 5 - ${JAVA_BIN} ${JAVA_ARGS_LTW} ${JARDeactived} \ - --output-filename ${RAWFN}-${i}-${j}-${k}.csv \ - --total-calls ${TOTAL_CALLS} \ - --method-time ${METHOD_TIME} \ - --total-threads ${THREADS} \ - --recursion-depth ${j} \ - ${MORE_PARAMS} - kill %sar - pkill -f 'java -jar' - [ -f ${BASE_DIR}/hotspot.log ] && mv ${BASE_DIR}/hotspot.log ${RESULTS_DIR}/hotspot-${i}-${j}-${k}.log - sync - sleep ${SLEEP_TIME} - - # Collecting - k=`expr ${k} + 1` - echo " # ${i}.${j}.${k} Collecting" - sar -o ${RESULTS_DIR}/stat/sar-${i}-${j}-${k}.data 5 2000 1>/dev/null 2>&1 & - ${JAVA_BIN} -jar dist/explorviz_worker.jar >${RESULTS_DIR}/worker-${i}-${j}-${k}.log & - sleep 5 - ${JAVA_BIN} ${JAVA_ARGS_LTW} ${JARCollecting} \ - --output-filename ${RAWFN}-${i}-${j}-${k}.csv \ - --total-calls ${TOTAL_CALLS} \ - --method-time ${METHOD_TIME} \ - --total-threads ${THREADS} \ - --recursion-depth ${j} \ - ${MORE_PARAMS} - kill %sar - pkill -f 'java -jar' - [ -f ${BASE_DIR}/hotspot.log ] && mv ${BASE_DIR}/hotspot.log ${RESULTS_DIR}/hotspot-${i}-${j}-${k}.log - sync - sleep ${SLEEP_TIME} - - # Logging - k=`expr ${k} + 1` - echo " # ${i}.${j}.${k} Logging" - sar -o ${RESULTS_DIR}/stat/sar-${i}-${j}-${k}.data 5 2000 1>/dev/null 2>&1 & - ${JAVA_BIN} -jar dist/explorviz_worker.jar >${RESULTS_DIR}/worker-${i}-${j}-${k}.log & - sleep 5 - ${JAVA_BIN} ${JAVA_ARGS_LTW} ${JARNORMAL} \ - --output-filename ${RAWFN}-${i}-${j}-${k}.csv \ - --total-calls ${TOTAL_CALLS} \ - --method-time ${METHOD_TIME} \ - --total-threads ${THREADS} \ - --recursion-depth ${j} \ - ${MORE_PARAMS} - kill %sar - pkill -f 'java -jar' - [ -f ${BASE_DIR}/hotspot.log ] && mv ${BASE_DIR}/hotspot.log ${RESULTS_DIR}/hotspot-${i}-${j}-${k}.log - sync - sleep ${SLEEP_TIME} - - # Reconstruction - k=`expr ${k} + 1` - echo " # ${i}.${j}.${k} Reconstruction" - sar -o ${RESULTS_DIR}/stat/sar-${i}-${j}-${k}.data 5 2000 1>/dev/null 2>&1 & - ${JAVA_BIN} -jar dist/explorviz_workerReconstruction.jar >${RESULTS_DIR}/worker-${i}-${j}-${k}.log & - sleep 5 - ${JAVA_BIN} ${JAVA_ARGS_LTW} ${JARNORMAL} \ - --output-filename ${RAWFN}-${i}-${j}-${k}.csv \ - --total-calls ${TOTAL_CALLS} \ - --method-time ${METHOD_TIME} \ - --total-threads ${THREADS} \ - --recursion-depth ${j} \ - ${MORE_PARAMS} - kill %sar - pkill -f 'java -jar' - [ -f ${BASE_DIR}/hotspot.log ] && mv ${BASE_DIR}/hotspot.log ${RESULTS_DIR}/hotspot-${i}-${j}-${k}.log - sync - sleep ${SLEEP_TIME} - - # Reduction - k=`expr ${k} + 1` - echo " # ${i}.${j}.${k} Reduction" - sar -o ${RESULTS_DIR}/stat/sar-${i}-${j}-${k}.data 5 2000 1>/dev/null 2>&1 & - ${JAVA_BIN} -jar dist/explorviz_workerReduction.jar >${RESULTS_DIR}/worker-${i}-${j}-${k}.log & - sleep 5 - ${JAVA_BIN} ${JAVA_ARGS_LTW} ${JARNORMAL} \ - --output-filename ${RAWFN}-${i}-${j}-${k}.csv \ - --total-calls ${TOTAL_CALLS} \ - --method-time ${METHOD_TIME} \ - --total-threads ${THREADS} \ - --recursion-depth ${j} \ - ${MORE_PARAMS} - kill %sar - pkill -f 'java -jar' - [ -f ${BASE_DIR}/hotspot.log ] && mv ${BASE_DIR}/hotspot.log ${RESULTS_DIR}/hotspot-${i}-${j}-${k}.log - sync - sleep ${SLEEP_TIME} - -done -zip -jqr ${RESULTS_DIR}/stat.zip ${RESULTS_DIR}/stat -rm -rf ${RESULTS_DIR}/stat/ -[ -f ${RESULTS_DIR}/hotspot-1-${RECURSION_DEPTH}-1.log ] && grep "<task " ${RESULTS_DIR}/hotspot-*.log >${RESULTS_DIR}/log.log -[ -f ${BASE_DIR}/errorlog.txt ] && mv ${BASE_DIR}/errorlog.txt ${RESULTS_DIR} - -## Generate Results file -# Timeseries -R --vanilla --silent <<EOF -results_fn="${RAWFN}" -output_fn="${RESULTS_DIR}/results-timeseries.pdf" -configs.loop=${NUM_LOOPS} -configs.recursion=c(${RECURSION_DEPTH}) -configs.labels=c("No Probe","Deactivated Probe","Collecting Data","TCP Writer","Reconstruction","Reduction") -configs.colors=c("black","red","blue","green","yellow","purple") -results.count=${TOTAL_CALLS} -tsconf.min=(${METHOD_TIME}/1000) -tsconf.max=(${METHOD_TIME}/1000)+40 -source("${R_SCRIPT_DIR}timeseries.r") -EOF -# Timeseries-Average -R --vanilla --silent <<EOF -results_fn="${RAWFN}" -output_fn="${RESULTS_DIR}/results-timeseries-average.pdf" -configs.loop=${NUM_LOOPS} -configs.recursion=c(${RECURSION_DEPTH}) -configs.labels=c("No Probe","Deactivated Probe","Collecting Data","TCP Writer","Reconstruction","Reduction") -configs.colors=c("black","red","blue","green","yellow","purple") -results.count=${TOTAL_CALLS} -tsconf.min=(${METHOD_TIME}/1000) -tsconf.max=(${METHOD_TIME}/1000)+40 -source("${R_SCRIPT_DIR}timeseries-average.r") -EOF -# Throughput -R --vanilla --silent <<EOF -results_fn="${RAWFN}" -output_fn="${RESULTS_DIR}/results-throughput.pdf" -configs.loop=${NUM_LOOPS} -configs.recursion=c(${RECURSION_DEPTH}) -configs.labels=c("No Probe","Deactivated Probe","Collecting Data","TCP Writer","Reconstruction","Reduction") -configs.colors=c("black","red","blue","green","yellow","purple") -results.count=${TOTAL_CALLS} -source("${R_SCRIPT_DIR}throughput.r") -EOF -# Throughput-Average -R --vanilla --silent <<EOF -results_fn="${RAWFN}" -output_fn="${RESULTS_DIR}/results-throughput-average.pdf" -configs.loop=${NUM_LOOPS} -configs.recursion=c(${RECURSION_DEPTH}) -configs.labels=c("No Probe","Deactivated Probe","Collecting Data","TCP Writer","Reconstruction","Reduction") -configs.colors=c("black","red","blue","green","yellow","purple") -results.count=${TOTAL_CALLS} -source("${R_SCRIPT_DIR}throughput-average.r") -EOF -# Bars -R --vanilla --silent <<EOF -results_fn="${RAWFN}" -output_fn="${RESULTS_DIR}/results-bars.pdf" -outtxt_fn="${RESULTS_DIR}/results-text.txt" -configs.loop=${NUM_LOOPS} -configs.recursion=c(${RECURSION_DEPTH}) -configs.labels=c("No Probe","Deactivated Probe","Collecting Data","TCP Writer","Reconstruction","Reduction") -results.count=${TOTAL_CALLS} -results.skip=${TOTAL_CALLS}/2 -bars.minval=(${METHOD_TIME}/1000) -bars.maxval=(${METHOD_TIME}/1000)+40 -source("${R_SCRIPT_DIR}bar.r") -EOF - -## Clean up raw results -zip -jqr ${RESULTS_DIR}/results.zip ${RAWFN}* -rm -f ${RAWFN}* -zip -jqr ${RESULTS_DIR}/worker.zip ${RESULTS_DIR}/worker*.log -rm -f ${RESULTS_DIR}/worker*.log -[ -f ${BASE_DIR}/nohup.out ] && mv ${BASE_DIR}/nohup.out ${RESULTS_DIR} diff --git a/bin/2013-kieker-days/benchmark-kieker-days-kieker-remote.sh b/bin/2013-kieker-days/benchmark-kieker-days-kieker-remote.sh deleted file mode 100644 index da3d0da476d48010ec99bb7c2d2324e433aaadf0..0000000000000000000000000000000000000000 --- a/bin/2013-kieker-days/benchmark-kieker-days-kieker-remote.sh +++ /dev/null @@ -1,230 +0,0 @@ -#!/bin/bash - -JAVABIN="" -REMOTEHOST="ubuntu@10.50.0.7" -REMOTEBASE_DIR="/home/ubuntu/" - -R_SCRIPT_DIR=bin/r-scripts/ -BASE_DIR=./ -RESULTS_DIR="${BASE_DIR}/tmp/results-benchmark-kieker-days-kieker/" -REMOTERESULTS_DIR="${REMOTEBASE_DIR}/tmp/results-benchmark-kieker-days-kieker/" - -SLEEP_TIME=30 ## 30 -NUM_LOOPS=10 ## 10 -THREADS=1 ## 1 -RECURSION_DEPTH=10 ## 10 -TOTAL_CALLS=4000000 ## 20000000 -METHOD_TIME=0 ## 0 - -MORE_PARAMS="" -#MORE_PARAMS="--quickstart" - -TIME=`expr ${METHOD_TIME} \* ${TOTAL_CALLS} / 1000000000 \* 4 \* ${RECURSION_DEPTH} \* ${NUM_LOOPS} + ${SLEEP_TIME} \* 4 \* ${NUM_LOOPS} \* ${RECURSION_DEPTH} + 50 \* ${TOTAL_CALLS} / 1000000000 \* 4 \* ${RECURSION_DEPTH} \* ${NUM_LOOPS} ` -echo "Experiment will take circa ${TIME} seconds." - -echo "Removing and recreating '${RESULTS_DIR}'" -(rm -rf ${RESULTS_DIR}) && mkdir ${RESULTS_DIR} -mkdir ${RESULTS_DIR}/stat/ - -ssh ${REMOTEHOST} "(rm -rf ${REMOTERESULTS_DIR}) && mkdir ${REMOTERESULTS_DIR}" -ssh ${REMOTEHOST} "mkdir ${REMOTERESULTS_DIR}/stat/" - -# Clear kieker.log and initialize logging -rm -f ${BASE_DIR}/kieker.log -touch ${BASE_DIR}/kieker.log - -RAWFN="${RESULTS_DIR}/raw" - -JAVA_ARGS="-server" -JAVA_ARGS="${JAVA_ARGS} -d64" -JAVA_ARGS="${JAVA_ARGS} -Xms4G -Xmx12G" -JAVA_ARGS="${JAVA_ARGS} -verbose:gc -XX:+PrintCompilation" -#JAVA_ARGS="${JAVA_ARGS} -XX:+PrintInlining" -#JAVA_ARGS="${JAVA_ARGS} -XX:+UnlockDiagnosticVMOptions -XX:+LogCompilation" -#JAVA_ARGS="${JAVA_ARGS} -Djava.compiler=NONE" -JAR="-jar dist/OverheadEvaluationMicrobenchmarkKieker.jar" - -JAVA_ARGS_NOINSTR="${JAVA_ARGS}" -JAVA_ARGS_LTW="${JAVA_ARGS} -javaagent:${BASE_DIR}/lib/kieker-1.9-SNAPSHOT_aspectj.jar -Dorg.aspectj.weaver.showWeaveInfo=false -Daj.weaving.verbose=false -Dkieker.monitoring.adaptiveMonitoring.enabled=false -Dorg.aspectj.weaver.loadtime.configuration=META-INF/kieker.aop.xml" -JAVA_ARGS_KIEKER_DEACTV="${JAVA_ARGS_LTW} -Dkieker.monitoring.enabled=false -Dkieker.monitoring.writer=kieker.monitoring.writer.DummyWriter" -JAVA_ARGS_KIEKER_NOLOGGING="${JAVA_ARGS_LTW} -Dkieker.monitoring.writer=kieker.monitoring.writer.DummyWriter" -JAVA_ARGS_KIEKER_LOGGING="${JAVA_ARGS_LTW} -Dkieker.monitoring.writer=kieker.monitoring.writer.tcp.TCPWriter -Dkieker.monitoring.writer.tcp.TCPWriter.QueueSize=100000 -Dkieker.monitoring.writer.tcp.TCPWriter.hostname=10.50.0.7 -Dkieker.monitoring.writer.tcp.TCPWriter.QueueFullBehavior=1" - -## Write configuration -uname -a >${RESULTS_DIR}/configuration.txt -${JAVA_BIN} ${JAVA_ARGS} -version 2>>${RESULTS_DIR}/configuration.txt -echo "JAVA_ARGS: ${JAVA_ARGS}" >>${RESULTS_DIR}/configuration.txt -echo "" >>${RESULTS_DIR}/configuration.txt -echo "Runtime: circa ${TIME} seconds" >>${RESULTS_DIR}/configuration.txt -echo "" >>${RESULTS_DIR}/configuration.txt -echo "SLEEP_TIME=${SLEEP_TIME}" >>${RESULTS_DIR}/configuration.txt -echo "NUM_LOOPS=${NUM_LOOPS}" >>${RESULTS_DIR}/configuration.txt -echo "TOTAL_CALLS=${TOTAL_CALLS}" >>${RESULTS_DIR}/configuration.txt -echo "METHOD_TIME=${METHOD_TIME}" >>${RESULTS_DIR}/configuration.txt -echo "THREADS=${THREADS}" >>${RESULTS_DIR}/configuration.txt -echo "RECURSION_DEPTH=${RECURSION_DEPTH}" >>${RESULTS_DIR}/configuration.txt -sync - -## Execute Benchmark -for ((i=1;i<=${NUM_LOOPS};i+=1)); do - j=${RECURSION_DEPTH} - k=0 - echo "## Starting iteration ${i}/${NUM_LOOPS}" - echo "## Starting iteration ${i}/${NUM_LOOPS}" >>${BASE_DIR}/kieker.log - - # No instrumentation - k=`expr ${k} + 1` - echo " # ${i}.${j}.${k} No instrumentation" - echo " # ${i}.${j}.${k} No instrumentation" >>${BASE_DIR}/kieker.log - #sar -o ${RESULTS_DIR}/stat/sar-${i}-${j}-${k}.data 5 2000 1>/dev/null 2>&1 & - ${JAVA_BIN} ${JAVA_ARGS_NOINSTR} ${JAR} \ - --output-filename ${RAWFN}-${i}-${j}-${k}.csv \ - --total-calls ${TOTAL_CALLS} \ - --method-time ${METHOD_TIME} \ - --total-threads ${THREADS} \ - --recursion-depth ${j} \ - ${MORE_PARAMS} - #kill %sar - [ -f ${BASE_DIR}/hotspot.log ] && mv ${BASE_DIR}/hotspot.log ${RESULTS_DIR}/hotspot-${i}-${j}-${k}.log - echo >>${BASE_DIR}/kieker.log - echo >>${BASE_DIR}/kieker.log - sync - sleep ${SLEEP_TIME} - - # Deactivated probe - k=`expr ${k} + 1` - echo " # ${i}.${j}.${k} Deactivated probe" - echo " # ${i}.${j}.${k} Deactivated probe" >>${BASE_DIR}/kieker.log - #sar -o ${RESULTS_DIR}/stat/sar-${i}-${j}-${k}.data 5 2000 1>/dev/null 2>&1 & - ${JAVA_BIN} ${JAVA_ARGS_KIEKER_DEACTV} ${JAR} \ - --output-filename ${RAWFN}-${i}-${j}-${k}.csv \ - --total-calls ${TOTAL_CALLS} \ - --method-time ${METHOD_TIME} \ - --total-threads ${THREADS} \ - --recursion-depth ${j} \ - ${MORE_PARAMS} - #kill %sar - [ -f ${BASE_DIR}/hotspot.log ] && mv ${BASE_DIR}/hotspot.log ${RESULTS_DIR}/hotspot-${i}-${j}-${k}.log - echo >>${BASE_DIR}/kieker.log - echo >>${BASE_DIR}/kieker.log - sync - sleep ${SLEEP_TIME} - - # No logging - k=`expr ${k} + 1` - echo " # ${i}.${j}.${k} No logging (null writer)" - echo " # ${i}.${j}.${k} No logging (null writer)" >>${BASE_DIR}/kieker.log - #sar -o ${RESULTS_DIR}/stat/sar-${i}-${j}-${k}.data 5 2000 1>/dev/null 2>&1 & - ${JAVA_BIN} ${JAVA_ARGS_KIEKER_NOLOGGING} ${JAR} \ - --output-filename ${RAWFN}-${i}-${j}-${k}.csv \ - --total-calls ${TOTAL_CALLS} \ - --method-time ${METHOD_TIME} \ - --total-threads ${THREADS} \ - --recursion-depth ${j} \ - ${MORE_PARAMS} - #kill %sar - [ -f ${BASE_DIR}/hotspot.log ] && mv ${BASE_DIR}/hotspot.log ${RESULTS_DIR}/hotspot-${i}-${j}-${k}.log - echo >>${BASE_DIR}/kieker.log - echo >>${BASE_DIR}/kieker.log - sync - sleep ${SLEEP_TIME} - - # Logging - k=`expr ${k} + 1` - echo " # ${i}.${j}.${k} Logging" - echo " # ${i}.${j}.${k} Logging" >>${BASE_DIR}/kieker.log - #sar -o ${RESULTS_DIR}/stat/sar-${i}-${j}-${k}.data 5 2000 1>/dev/null 2>&1 & - ssh ${REMOTEHOST} "${JAVA_BIN} ${JAVA_ARGS} -jar ${REMOTEBASE_DIR}/dist/KiekerTCPReader1.jar </dev/null >${REMOTERESULTS_DIR}/worker-${i}-${j}-${k}.log 2>&1 &" - sleep 5 - ${JAVA_BIN} ${JAVA_ARGS_KIEKER_LOGGING} ${JAR} \ - --output-filename ${RAWFN}-${i}-${j}-${k}.csv \ - --total-calls ${TOTAL_CALLS} \ - --method-time ${METHOD_TIME} \ - --total-threads ${THREADS} \ - --recursion-depth ${j} \ - ${MORE_PARAMS} - #kill %sar - killall java - ssh ${REMOTEHOST} "killall java" - rm -rf ${BASE_DIR}/tmp/kieker-* - [ -f ${BASE_DIR}/hotspot.log ] && mv ${BASE_DIR}/hotspot.log ${RESULTS_DIR}/hotspot-${i}-${j}-${k}.log - echo >>${BASE_DIR}/kieker.log - echo >>${BASE_DIR}/kieker.log - sync - sleep ${SLEEP_TIME} - - # Reconstruction - k=`expr ${k} + 1` - echo " # ${i}.${j}.${k} Logging" - echo " # ${i}.${j}.${k} Logging" >>${BASE_DIR}/kieker.log - #sar -o ${RESULTS_DIR}/stat/sar-${i}-${j}-${k}.data 5 2000 1>/dev/null 2>&1 & - ssh ${REMOTEHOST} "${JAVA_BIN} ${JAVA_ARGS} -jar ${REMOTEBASE_DIR}/dist/KiekerTCPReader2.jar </dev/null >${REMOTERESULTS_DIR}/worker-${i}-${j}-${k}.log 2>&1 &" - sleep 5 - ${JAVA_BIN} ${JAVA_ARGS_KIEKER_LOGGING} ${JAR} \ - --output-filename ${RAWFN}-${i}-${j}-${k}.csv \ - --total-calls ${TOTAL_CALLS} \ - --method-time ${METHOD_TIME} \ - --total-threads ${THREADS} \ - --recursion-depth ${j} \ - ${MORE_PARAMS} - #kill %sar - killall java - ssh ${REMOTEHOST} "killall java" - rm -rf ${BASE_DIR}/tmp/kieker-* - [ -f ${BASE_DIR}/hotspot.log ] && mv ${BASE_DIR}/hotspot.log ${RESULTS_DIR}/hotspot-${i}-${j}-${k}.log - echo >>${BASE_DIR}/kieker.log - echo >>${BASE_DIR}/kieker.log - sync - sleep ${SLEEP_TIME} - - # Reduction - k=`expr ${k} + 1` - echo " # ${i}.${j}.${k} Logging" - echo " # ${i}.${j}.${k} Logging" >>${BASE_DIR}/kieker.log - #sar -o ${RESULTS_DIR}/stat/sar-${i}-${j}-${k}.data 5 2000 1>/dev/null 2>&1 & - ssh ${REMOTEHOST} "${JAVA_BIN} ${JAVA_ARGS} -jar ${REMOTEBASE_DIR}/dist/KiekerTCPReader3.jar </dev/null >${REMOTERESULTS_DIR}/worker-${i}-${j}-${k}.log 2>&1 &" - sleep 5 - ${JAVA_BIN} ${JAVA_ARGS_KIEKER_LOGGING} ${JAR} \ - --output-filename ${RAWFN}-${i}-${j}-${k}.csv \ - --total-calls ${TOTAL_CALLS} \ - --method-time ${METHOD_TIME} \ - --total-threads ${THREADS} \ - --recursion-depth ${j} \ - ${MORE_PARAMS} - #kill %sar - killall java - ssh ${REMOTEHOST} "killall java" - rm -rf ${BASE_DIR}/tmp/kieker-* - [ -f ${BASE_DIR}/hotspot.log ] && mv ${BASE_DIR}/hotspot.log ${RESULTS_DIR}/hotspot-${i}-${j}-${k}.log - echo >>${BASE_DIR}/kieker.log - echo >>${BASE_DIR}/kieker.log - sync - sleep ${SLEEP_TIME} - -done -zip -jqr ${RESULTS_DIR}/stat.zip ${RESULTS_DIR}/stat -rm -rf ${RESULTS_DIR}/stat/ -mv ${BASE_DIR}/kieker.log ${RESULTS_DIR}/kieker.log -[ -f ${RESULTS_DIR}/hotspot-1-${RECURSION_DEPTH}-1.log ] && grep "<task " ${RESULTS_DIR}/hotspot-*.log >${RESULTS_DIR}/log.log -[ -f ${BASE_DIR}/errorlog.txt ] && mv ${BASE_DIR}/errorlog.txt ${RESULTS_DIR} - -## Generate Results file -# Bars -R --vanilla --silent <<EOF -results_fn="${RAWFN}" -outtxt_fn="${RESULTS_DIR}/results-text.txt" -configs.threads=${THREADS} -configs.loop=${NUM_LOOPS} -configs.recursion=c(${RECURSION_DEPTH}) -configs.labels=c("No Probe","Deactivated Probe","Collecting Data","TCP Writer","Reconstruction","Reduction") -results.count=${TOTAL_CALLS} -results.skip=${TOTAL_CALLS}/2 -source("${R_SCRIPT_DIR}stats.r") -EOF - -## Clean up raw results -zip -jqr ${RESULTS_DIR}/results.zip ${RAWFN}* -rm -f ${RAWFN}* -zip -jqr ${RESULTS_DIR}/worker.zip ${RESULTS_DIR}/worker*.log -rm -f ${RESULTS_DIR}/worker*.log -[ -f ${BASE_DIR}/nohup.out ] && mv ${BASE_DIR}/nohup.out ${RESULTS_DIR} diff --git a/bin/2013-kieker-days/benchmark-kieker-days-kieker.sh b/bin/2013-kieker-days/benchmark-kieker-days-kieker.sh deleted file mode 100644 index 8b0995ef518a3bf993688acef119465b0fc50833..0000000000000000000000000000000000000000 --- a/bin/2013-kieker-days/benchmark-kieker-days-kieker.sh +++ /dev/null @@ -1,295 +0,0 @@ -#!/bin/bash - -JAVABIN="/localhome/ffi/jdk1.7.0_25/bin/" - -R_SCRIPT_DIR=bin/icpe/r/ -BASE_DIR=./ -RESULTS_DIR="${BASE_DIR}/tmp/results-benchmark-kieker-days-kieker/" - -SLEEP_TIME=30 ## 30 -NUM_LOOPS=1 ## 10 -THREADS=1 ## 1 -RECURSION_DEPTH=10 ## 10 -TOTAL_CALLS=2000000 ## 20000000 -METHOD_TIME=0 ## 0 - -#MORE_PARAMS="" -MORE_PARAMS="--quickstart" - -TIME=`expr ${METHOD_TIME} \* ${TOTAL_CALLS} / 1000000000 \* 4 \* ${RECURSION_DEPTH} \* ${NUM_LOOPS} + ${SLEEP_TIME} \* 4 \* ${NUM_LOOPS} \* ${RECURSION_DEPTH} + 50 \* ${TOTAL_CALLS} / 1000000000 \* 4 \* ${RECURSION_DEPTH} \* ${NUM_LOOPS} ` -echo "Experiment will take circa ${TIME} seconds." - -echo "Removing and recreating '${RESULTS_DIR}'" -(rm -rf ${RESULTS_DIR}) && mkdir ${RESULTS_DIR} -mkdir ${RESULTS_DIR}/stat/ - -# Clear kieker.log and initialize logging -rm -f ${BASE_DIR}/kieker.log -touch ${BASE_DIR}/kieker.log - -RAWFN="${RESULTS_DIR}/raw" - -JAVA_ARGS="-server" -JAVA_ARGS="${JAVA_ARGS} -d64" -JAVA_ARGS="${JAVA_ARGS} -Xms1G -Xmx4G" -JAVA_ARGS="${JAVA_ARGS} -verbose:gc -XX:+PrintCompilation" -#JAVA_ARGS="${JAVA_ARGS} -XX:+PrintInlining" -#JAVA_ARGS="${JAVA_ARGS} -XX:+UnlockDiagnosticVMOptions -XX:+LogCompilation" -#JAVA_ARGS="${JAVA_ARGS} -Djava.compiler=NONE" -JAR="-jar dist/OverheadEvaluationMicrobenchmarkKieker.jar" - -JAVA_ARGS_NOINSTR="${JAVA_ARGS}" -JAVA_ARGS_LTW="${JAVA_ARGS} -javaagent:${BASE_DIR}/lib/kieker-1.9-SNAPSHOT_aspectj.jar -Dorg.aspectj.weaver.showWeaveInfo=false -Daj.weaving.verbose=false -Dkieker.monitoring.adaptiveMonitoring.enabled=false -Dorg.aspectj.weaver.loadtime.configuration=META-INF/kieker.aop.xml" -JAVA_ARGS_KIEKER_DEACTV="${JAVA_ARGS_LTW} -Dkieker.monitoring.enabled=false -Dkieker.monitoring.writer=kieker.monitoring.writer.DummyWriter" -JAVA_ARGS_KIEKER_NOLOGGING="${JAVA_ARGS_LTW} -Dkieker.monitoring.writer=kieker.monitoring.writer.DummyWriter" -JAVA_ARGS_KIEKER_LOGGING="${JAVA_ARGS_LTW} -Dkieker.monitoring.writer=kieker.monitoring.writer.tcp.TCPWriter -Dkieker.monitoring.writer.tcp.TCPWriter.QueueSize=100000 -Dkieker.monitoring.writer.tcp.TCPWriter.QueueFullBehavior=1" - -## Write configuration -uname -a >${RESULTS_DIR}/configuration.txt -${JAVA_BIN} ${JAVA_ARGS} -version 2>>${RESULTS_DIR}/configuration.txt -echo "JAVA_ARGS: ${JAVA_ARGS}" >>${RESULTS_DIR}/configuration.txt -echo "" >>${RESULTS_DIR}/configuration.txt -echo "Runtime: circa ${TIME} seconds" >>${RESULTS_DIR}/configuration.txt -echo "" >>${RESULTS_DIR}/configuration.txt -echo "SLEEP_TIME=${SLEEP_TIME}" >>${RESULTS_DIR}/configuration.txt -echo "NUM_LOOPS=${NUM_LOOPS}" >>${RESULTS_DIR}/configuration.txt -echo "TOTAL_CALLS=${TOTAL_CALLS}" >>${RESULTS_DIR}/configuration.txt -echo "METHOD_TIME=${METHOD_TIME}" >>${RESULTS_DIR}/configuration.txt -echo "THREADS=${THREADS}" >>${RESULTS_DIR}/configuration.txt -echo "RECURSION_DEPTH=${RECURSION_DEPTH}" >>${RESULTS_DIR}/configuration.txt -sync - -## Execute Benchmark -for ((i=1;i<=${NUM_LOOPS};i+=1)); do - j=${RECURSION_DEPTH} - k=0 - echo "## Starting iteration ${i}/${NUM_LOOPS}" - echo "## Starting iteration ${i}/${NUM_LOOPS}" >>${BASE_DIR}/kieker.log - - # No instrumentation - k=`expr ${k} + 1` - echo " # ${i}.${j}.${k} No instrumentation" - echo " # ${i}.${j}.${k} No instrumentation" >>${BASE_DIR}/kieker.log - mpstat 1 > ${RESULTS_DIR}/stat/mpstat-${i}-${j}-${k}.txt & - vmstat 1 > ${RESULTS_DIR}/stat/vmstat-${i}-${j}-${k}.txt & - iostat -xn 10 > ${RESULTS_DIR}/stat/iostat-${i}-${j}-${k}.txt & - ${JAVA_BIN} ${JAVA_ARGS_NOINSTR} ${JAR} \ - --output-filename ${RAWFN}-${i}-${j}-${k}.csv \ - --total-calls ${TOTAL_CALLS} \ - --method-time ${METHOD_TIME} \ - --total-threads ${THREADS} \ - --recursion-depth ${j} \ - ${MORE_PARAMS} - kill %mpstat - kill %vmstat - kill %iostat - [ -f ${BASE_DIR}/hotspot.log ] && mv ${BASE_DIR}/hotspot.log ${RESULTS_DIR}/hotspot-${i}-${j}-${k}.log - echo >>${BASE_DIR}/kieker.log - echo >>${BASE_DIR}/kieker.log - sync - sleep ${SLEEP_TIME} - - # Deactivated probe - k=`expr ${k} + 1` - echo " # ${i}.${j}.${k} Deactivated probe" - echo " # ${i}.${j}.${k} Deactivated probe" >>${BASE_DIR}/kieker.log - mpstat 1 > ${RESULTS_DIR}/stat/mpstat-${i}-${j}-${k}.txt & - vmstat 1 > ${RESULTS_DIR}/stat/vmstat-${i}-${j}-${k}.txt & - iostat -xn 10 > ${RESULTS_DIR}/stat/iostat-${i}-${j}-${k}.txt & - ${JAVA_BIN} ${JAVA_ARGS_KIEKER_DEACTV} ${JAR} \ - --output-filename ${RAWFN}-${i}-${j}-${k}.csv \ - --total-calls ${TOTAL_CALLS} \ - --method-time ${METHOD_TIME} \ - --total-threads ${THREADS} \ - --recursion-depth ${j} \ - ${MORE_PARAMS} - kill %mpstat - kill %vmstat - kill %iostat - [ -f ${BASE_DIR}/hotspot.log ] && mv ${BASE_DIR}/hotspot.log ${RESULTS_DIR}/hotspot-${i}-${j}-${k}.log - echo >>${BASE_DIR}/kieker.log - echo >>${BASE_DIR}/kieker.log - sync - sleep ${SLEEP_TIME} - - # No logging - k=`expr ${k} + 1` - echo " # ${i}.${j}.${k} No logging (null writer)" - echo " # ${i}.${j}.${k} No logging (null writer)" >>${BASE_DIR}/kieker.log - mpstat 1 > ${RESULTS_DIR}/stat/mpstat-${i}-${j}-${k}.txt & - vmstat 1 > ${RESULTS_DIR}/stat/vmstat-${i}-${j}-${k}.txt & - iostat -xn 10 > ${RESULTS_DIR}/stat/iostat-${i}-${j}-${k}.txt & - ${JAVA_BIN} ${JAVA_ARGS_KIEKER_NOLOGGING} ${JAR} \ - --output-filename ${RAWFN}-${i}-${j}-${k}.csv \ - --total-calls ${TOTAL_CALLS} \ - --method-time ${METHOD_TIME} \ - --total-threads ${THREADS} \ - --recursion-depth ${j} \ - ${MORE_PARAMS} - kill %mpstat - kill %vmstat - kill %iostat - [ -f ${BASE_DIR}/hotspot.log ] && mv ${BASE_DIR}/hotspot.log ${RESULTS_DIR}/hotspot-${i}-${j}-${k}.log - echo >>${BASE_DIR}/kieker.log - echo >>${BASE_DIR}/kieker.log - sync - sleep ${SLEEP_TIME} - - # Logging - k=`expr ${k} + 1` - echo " # ${i}.${j}.${k} Logging" - echo " # ${i}.${j}.${k} Logging" >>${BASE_DIR}/kieker.log - mpstat 1 > ${RESULTS_DIR}/stat/mpstat-${i}-${j}-${k}.txt & - vmstat 1 > ${RESULTS_DIR}/stat/vmstat-${i}-${j}-${k}.txt & - iostat -xn 10 > ${RESULTS_DIR}/stat/iostat-${i}-${j}-${k}.txt & - ${JAVA_BIN} -jar dist/KiekerTCPReader1.jar 2>${RESULTS_DIR}/worker-${i}-${j}-${k}.log & - sleep 5 - ${JAVA_BIN} ${JAVA_ARGS_KIEKER_LOGGING} ${JAR} \ - --output-filename ${RAWFN}-${i}-${j}-${k}.csv \ - --total-calls ${TOTAL_CALLS} \ - --method-time ${METHOD_TIME} \ - --total-threads ${THREADS} \ - --recursion-depth ${j} \ - ${MORE_PARAMS} - kill %mpstat - kill %vmstat - kill %iostat - pkill -f 'java -jar' - rm -rf ${BASE_DIR}/tmp/kieker-* - [ -f ${BASE_DIR}/hotspot.log ] && mv ${BASE_DIR}/hotspot.log ${RESULTS_DIR}/hotspot-${i}-${j}-${k}.log - echo >>${BASE_DIR}/kieker.log - echo >>${BASE_DIR}/kieker.log - sync - sleep ${SLEEP_TIME} - - # Reconstruction - k=`expr ${k} + 1` - echo " # ${i}.${j}.${k} Logging" - echo " # ${i}.${j}.${k} Logging" >>${BASE_DIR}/kieker.log - mpstat 1 > ${RESULTS_DIR}/stat/mpstat-${i}-${j}-${k}.txt & - vmstat 1 > ${RESULTS_DIR}/stat/vmstat-${i}-${j}-${k}.txt & - iostat -xn 10 > ${RESULTS_DIR}/stat/iostat-${i}-${j}-${k}.txt & - ${JAVA_BIN} -jar dist/KiekerTCPReader2.jar 2>${RESULTS_DIR}/worker-${i}-${j}-${k}.log & - sleep 5 - ${JAVA_BIN} ${JAVA_ARGS_KIEKER_LOGGING} ${JAR} \ - --output-filename ${RAWFN}-${i}-${j}-${k}.csv \ - --total-calls ${TOTAL_CALLS} \ - --method-time ${METHOD_TIME} \ - --total-threads ${THREADS} \ - --recursion-depth ${j} \ - ${MORE_PARAMS} - kill %mpstat - kill %vmstat - kill %iostat - pkill -f 'java -jar' - rm -rf ${BASE_DIR}/tmp/kieker-* - [ -f ${BASE_DIR}/hotspot.log ] && mv ${BASE_DIR}/hotspot.log ${RESULTS_DIR}/hotspot-${i}-${j}-${k}.log - echo >>${BASE_DIR}/kieker.log - echo >>${BASE_DIR}/kieker.log - sync - sleep ${SLEEP_TIME} - - # Reduction - k=`expr ${k} + 1` - echo " # ${i}.${j}.${k} Logging" - echo " # ${i}.${j}.${k} Logging" >>${BASE_DIR}/kieker.log - mpstat 1 > ${RESULTS_DIR}/stat/mpstat-${i}-${j}-${k}.txt & - vmstat 1 > ${RESULTS_DIR}/stat/vmstat-${i}-${j}-${k}.txt & - iostat -xn 10 > ${RESULTS_DIR}/stat/iostat-${i}-${j}-${k}.txt & - ${JAVA_BIN} -jar dist/KiekerTCPReader3.jar 2>${RESULTS_DIR}/worker-${i}-${j}-${k}.log & - sleep 5 - ${JAVA_BIN} ${JAVA_ARGS_KIEKER_LOGGING} ${JAR} \ - --output-filename ${RAWFN}-${i}-${j}-${k}.csv \ - --total-calls ${TOTAL_CALLS} \ - --method-time ${METHOD_TIME} \ - --total-threads ${THREADS} \ - --recursion-depth ${j} \ - ${MORE_PARAMS} - kill %mpstat - kill %vmstat - kill %iostat - pkill -f 'java -jar' - rm -rf ${BASE_DIR}/tmp/kieker-* - [ -f ${BASE_DIR}/hotspot.log ] && mv ${BASE_DIR}/hotspot.log ${RESULTS_DIR}/hotspot-${i}-${j}-${k}.log - echo >>${BASE_DIR}/kieker.log - echo >>${BASE_DIR}/kieker.log - sync - sleep ${SLEEP_TIME} - -done -zip -jqr ${RESULTS_DIR}/stat.zip ${RESULTS_DIR}/stat -rm -rf ${RESULTS_DIR}/stat/ -mv ${BASE_DIR}/kieker.log ${RESULTS_DIR}/kieker.log -[ -f ${RESULTS_DIR}/hotspot-1-${RECURSION_DEPTH}-1.log ] && grep "<task " ${RESULTS_DIR}/hotspot-*.log >${RESULTS_DIR}/log.log -[ -f ${BASE_DIR}/errorlog.txt ] && mv ${BASE_DIR}/errorlog.txt ${RESULTS_DIR} - -## Generate Results file -# Timeseries -R --vanilla --silent <<EOF -results_fn="${RAWFN}" -output_fn="${RESULTS_DIR}/results-timeseries.pdf" -configs.loop=${NUM_LOOPS} -configs.recursion=c(${RECURSION_DEPTH}) -configs.labels=c("No Probe","Deactivated Probe","Collecting Data","TCP Writer","Reconstruction","Reduction") -configs.colors=c("black","red","blue","green","yellow","purple") -results.count=${TOTAL_CALLS} -tsconf.min=(${METHOD_TIME}/1000) -tsconf.max=(${METHOD_TIME}/1000)+40 -source("${R_SCRIPT_DIR}timeseries.r") -EOF -# Timeseries-Average -R --vanilla --silent <<EOF -results_fn="${RAWFN}" -output_fn="${RESULTS_DIR}/results-timeseries-average.pdf" -configs.loop=${NUM_LOOPS} -configs.recursion=c(${RECURSION_DEPTH}) -configs.labels=c("No Probe","Deactivated Probe","Collecting Data","TCP Writer","Reconstruction","Reduction") -configs.colors=c("black","red","blue","green","yellow","purple") -results.count=${TOTAL_CALLS} -tsconf.min=(${METHOD_TIME}/1000) -tsconf.max=(${METHOD_TIME}/1000)+40 -source("${R_SCRIPT_DIR}timeseries-average.r") -EOF -# Throughput -R --vanilla --silent <<EOF -results_fn="${RAWFN}" -output_fn="${RESULTS_DIR}/results-throughput.pdf" -configs.loop=${NUM_LOOPS} -configs.recursion=c(${RECURSION_DEPTH}) -configs.labels=c("No Probe","Deactivated Probe","Collecting Data","TCP Writer","Reconstruction","Reduction") -configs.colors=c("black","red","blue","green","yellow","purple") -results.count=${TOTAL_CALLS} -source("${R_SCRIPT_DIR}throughput.r") -EOF -# Throughput-Average -R --vanilla --silent <<EOF -results_fn="${RAWFN}" -output_fn="${RESULTS_DIR}/results-throughput-average.pdf" -configs.loop=${NUM_LOOPS} -configs.recursion=c(${RECURSION_DEPTH}) -configs.labels=c("No Probe","Deactivated Probe","Collecting Data","TCP Writer","Reconstruction","Reduction") -configs.colors=c("black","red","blue","green","yellow","purple") -results.count=${TOTAL_CALLS} -source("${R_SCRIPT_DIR}throughput-average.r") -EOF -# Bars -R --vanilla --silent <<EOF -results_fn="${RAWFN}" -output_fn="${RESULTS_DIR}/results-bars.pdf" -outtxt_fn="${RESULTS_DIR}/results-text.txt" -configs.loop=${NUM_LOOPS} -configs.recursion=c(${RECURSION_DEPTH}) -configs.labels=c("No Probe","Deactivated Probe","Collecting Data","TCP Writer","Reconstruction","Reduction") -results.count=${TOTAL_CALLS} -results.skip=${TOTAL_CALLS}/2 -bars.minval=(${METHOD_TIME}/1000) -bars.maxval=(${METHOD_TIME}/1000)+40 -source("${R_SCRIPT_DIR}bar.r") -EOF - -## Clean up raw results -zip -jqr ${RESULTS_DIR}/results.zip ${RAWFN}* -rm -f ${RAWFN}* -zip -jqr ${RESULTS_DIR}/worker.zip ${RESULTS_DIR}/worker*.log -rm -f ${RESULTS_DIR}/worker*.log -[ -f ${BASE_DIR}/nohup.out ] && mv ${BASE_DIR}/nohup.out ${RESULTS_DIR} diff --git a/bin/2013-kieker-days/only_r.sh b/bin/2013-kieker-days/only_r.sh deleted file mode 100644 index 635775b8dfc1eb48d88aab26ba1adc0424f1aafb..0000000000000000000000000000000000000000 --- a/bin/2013-kieker-days/only_r.sh +++ /dev/null @@ -1,65 +0,0 @@ -#!/bin/bash - -JAVABIN="" - -R_SCRIPT_DIR=bin/r-scripts/ -BASE_DIR=./ -RESULTS_DIR="${BASE_DIR}/tmp/ffi-exp/" - -SLEEP_TIME=30 ## 30 -NUM_LOOPS=10 ## 10 -THREADS=1 ## 1 -RECURSION_DEPTH=10 ## 10 -TOTAL_CALLS=20000000 ## 20000000 -METHOD_TIME=0 ## 0 - -RAWFN="${RESULTS_DIR}/raw" - -# Timeseries -R --vanilla --silent <<EOF -results_fn="${RAWFN}" -output_fn="${RESULTS_DIR}/results-timeseries.pdf" -configs.loop=${NUM_LOOPS} -configs.recursion=c(${RECURSION_DEPTH}) -configs.labels=c("No Probe","Deactivated Probe","Collecting Data","TCP Writer","Reconstruction","Reduction") -configs.colors=c("black","red","blue","green","yellow","purple") -results.count=${TOTAL_CALLS} -tsconf.min=0 -tsconf.max=25 -source("${R_SCRIPT_DIR}timeseries.r") -EOF -# Timeseries-Average -R --vanilla --silent <<EOF -results_fn="${RAWFN}" -output_fn="${RESULTS_DIR}/results-timeseries-average.pdf" -configs.loop=${NUM_LOOPS} -configs.recursion=c(${RECURSION_DEPTH}) -configs.labels=c("No Probe","Deactivated Probe","Collecting Data","TCP Writer","Reconstruction","Reduction") -configs.colors=c("black","red","blue","green","yellow","purple") -results.count=${TOTAL_CALLS} -tsconf.min=0 -tsconf.max=25 -source("${R_SCRIPT_DIR}timeseries-average.r") -EOF -# Throughput -R --vanilla --silent <<EOF -results_fn="${RAWFN}" -output_fn="${RESULTS_DIR}/results-throughput.pdf" -configs.loop=${NUM_LOOPS} -configs.recursion=c(${RECURSION_DEPTH}) -configs.labels=c("No Probe","Deactivated Probe","Collecting Data","TCP Writer","Reconstruction","Reduction") -configs.colors=c("black","red","blue","green","yellow","purple") -results.count=${TOTAL_CALLS} -source("${R_SCRIPT_DIR}throughput.r") -EOF -# Throughput-Average -R --vanilla --silent <<EOF -results_fn="${RAWFN}" -output_fn="${RESULTS_DIR}/results-throughput-average.pdf" -configs.loop=${NUM_LOOPS} -configs.recursion=c(${RECURSION_DEPTH}) -configs.labels=c("No Probe","Deactivated Probe","Collecting Data","TCP Writer","Reconstruction","Reduction") -configs.colors=c("black","red","blue","green","yellow","purple") -results.count=${TOTAL_CALLS} -source("${R_SCRIPT_DIR}throughput-average.r") -EOF diff --git a/bin/2014-icpe/benchmark-disk-writer-slow.sh b/bin/2014-icpe/benchmark-disk-writer-slow.sh deleted file mode 100644 index e265d0b59ee77769ae7a80692c78395027128954..0000000000000000000000000000000000000000 --- a/bin/2014-icpe/benchmark-disk-writer-slow.sh +++ /dev/null @@ -1,288 +0,0 @@ -#!/bin/bash - -JAVA_BIN="/localhome/ffi/jdk1.7.0_25/bin/java" - -R_SCRIPT_DIR=bin/icpe/r/ -BASE_DIR=./ -RESULTS_DIR="${BASE_DIR}/tmp/results-benchmark-disk-slow/" - -SLEEP_TIME=30 ## 30 -NUM_LOOPS=10 ## 10 -THREADS=1 ## 1 -RECURSION_DEPTH=10 ## 10 -TOTAL_CALLS=2000000 ## 2000000 -METHOD_TIME=100 ## 100 - -MORE_PARAMS="" -#MORE_PARAMS="--quickstart" - -TIME=`expr ${METHOD_TIME} \* ${TOTAL_CALLS} / 1000000000 \* 4 \* ${RECURSION_DEPTH} \* ${NUM_LOOPS} + ${SLEEP_TIME} \* 4 \* ${NUM_LOOPS} \* ${RECURSION_DEPTH} + 50 \* ${TOTAL_CALLS} / 1000000000 \* 4 \* ${RECURSION_DEPTH} \* ${NUM_LOOPS} ` -echo "Experiment will take circa ${TIME} seconds." - -echo "Removing and recreating '${RESULTS_DIR}'" -(rm -rf ${RESULTS_DIR}/) && mkdir ${RESULTS_DIR}/ -mkdir ${RESULTS_DIR}/stat/ - -# Clear kieker.log and initialize logging -rm -f ${BASE_DIR}/kieker.log -touch ${BASE_DIR}/kieker.log - -RAWFN="${RESULTS_DIR}/raw" - -JAVA_ARGS="-server" -JAVA_ARGS="${JAVA_ARGS} -d64" -JAVA_ARGS="${JAVA_ARGS} -Xms1G -Xmx4G" -JAVA_ARGS="${JAVA_ARGS} -verbose:gc -XX:+PrintCompilation" -#JAVA_ARGS="${JAVA_ARGS} -XX:+PrintInlining" -#JAVA_ARGS="${JAVA_ARGS} -XX:+UnlockDiagnosticVMOptions -XX:+LogCompilation" -#JAVA_ARGS="${JAVA_ARGS} -Djava.compiler=NONE" -JAR="-jar dist/OverheadEvaluationMicrobenchmarkKieker.jar" - -JAVA_ARGS_NOINSTR="${JAVA_ARGS}" -JAVA_ARGS_LTW="${JAVA_ARGS} -javaagent:${BASE_DIR}/lib/kieker-1.8-SNAPSHOT_aspectj.jar -Dorg.aspectj.weaver.showWeaveInfo=false -Daj.weaving.verbose=false -Dkieker.monitoring.adaptiveMonitoring.enabled=false -Dorg.aspectj.weaver.loadtime.configuration=META-INF/kieker.aop.xml" -JAVA_ARGS_KIEKER_DEACTV="${JAVA_ARGS_LTW} -Dkieker.monitoring.enabled=false -Dkieker.monitoring.writer=kieker.monitoring.writer.DummyWriter" -JAVA_ARGS_KIEKER_NOLOGGING="${JAVA_ARGS_LTW} -Dkieker.monitoring.writer=kieker.monitoring.writer.DummyWriter" -JAVA_ARGS_KIEKER_LOGGING1="${JAVA_ARGS_LTW} -Dkieker.monitoring.writer=kieker.monitoring.writer.filesystem.AsyncBinaryFsWriter -Dkieker.monitoring.writer.filesystem.AsyncBinaryFsWriter.customStoragePath=${BASE_DIR}/tmp -Dkieker.monitoring.writer.filesystem.AsyncBinaryFsWriter.QueueFullBehavior=0" -JAVA_ARGS_KIEKER_LOGGING2="${JAVA_ARGS_LTW} -Dkieker.monitoring.writer=kieker.monitoring.writer.filesystem.AsyncBinaryZipWriter -Dkieker.monitoring.writer.filesystem.AsyncBinaryZipWriter.customStoragePath=${BASE_DIR}/tmp -Dkieker.monitoring.writer.filesystem.AsyncBinaryZipWriter.QueueFullBehavior=0" -JAVA_ARGS_KIEKER_LOGGING3="${JAVA_ARGS_LTW} -Dkieker.monitoring.writer=kieker.monitoring.writer.filesystem.AsyncFsWriter -Dkieker.monitoring.writer.filesystem.AsyncFsWriter.customStoragePath=${BASE_DIR}/tmp -Dkieker.monitoring.writer.filesystem.AsyncFsWriter.QueueFullBehavior=0" - -## Write configuration -uname -a >${RESULTS_DIR}/configuration.txt -${JAVA_BIN} ${JAVA_ARGS} -version 2>> "${RESULTS_DIR}/configuration.txt" -echo "JAVA_ARGS: ${JAVA_ARGS}" >> "${RESULTS_DIR}/configuration.txt" -echo "" >> "${RESULTS_DIR}/configuration.txt" -echo "Runtime: circa ${TIME} seconds" >> "${RESULTS_DIR}/configuration.txt" -echo "" >> "${RESULTS_DIR}/configuration.txt" -echo "SLEEP_TIME=${SLEEP_TIME}" >> "${RESULTS_DIR}/configuration.txt" -echo "NUM_LOOPS=${NUM_LOOPS}" >> "${RESULTS_DIR}/configuration.txt" -echo "TOTAL_CALLS=${TOTAL_CALLS}" >> "${RESULTS_DIR}/configuration.txt" -echo "METHOD_TIME=${METHOD_TIME}" >> "${RESULTS_DIR}/configuration.txt" -echo "THREADS=${THREADS}" >> "${RESULTS_DIR}/configuration.txt" -echo "RECURSION_DEPTH=${RECURSION_DEPTH}" >> "${RESULTS_DIR}/configuration.txt" -sync - -## Execute Benchmark -for ((i=1;i<=${NUM_LOOPS};i+=1)); do - j=${RECURSION_DEPTH} - k=0 - echo "## Starting iteration ${i}/${NUM_LOOPS}" - echo "## Starting iteration ${i}/${NUM_LOOPS}" >>${BASE_DIR}/kieker.log - - # No instrumentation - k=`expr ${k} + 1` - echo " # ${i}.${j}.${k} No instrumentation" - echo " # ${i}.${j}.${k} No instrumentation" >>${BASE_DIR}/kieker.log - mpstat 1 > ${RESULTS_DIR}/stat/mpstat-${i}-${j}-${k}.txt & - vmstat 1 > ${RESULTS_DIR}/stat/vmstat-${i}-${j}-${k}.txt & - iostat -xn 10 > ${RESULTS_DIR}/stat/iostat-${i}-${j}-${k}.txt & - ${JAVA_BIN} ${JAVA_ARGS_NOINSTR} ${JAR} \ - --output-filename ${RAWFN}-${i}-${j}-${k}.csv \ - --total-calls ${TOTAL_CALLS} \ - --method-time ${METHOD_TIME} \ - --total-threads ${THREADS} \ - --recursion-depth ${j} \ - ${MORE_PARAMS} - kill %mpstat - kill %vmstat - kill %iostat - [ -f ${BASE_DIR}/hotspot.log ] && mv ${BASE_DIR}/hotspot.log ${RESULTS_DIR}/hotspot-${i}-${j}-${k}.log - echo >>${BASE_DIR}/kieker.log - echo >>${BASE_DIR}/kieker.log - sync - sleep ${SLEEP_TIME} - - # Deactivated probe - k=`expr ${k} + 1` - echo " # ${i}.${j}.${k} Deactivated probe" - echo " # ${i}.${j}.${k} Deactivated probe" >>${BASE_DIR}/kieker.log - mpstat 1 > ${RESULTS_DIR}/stat/mpstat-${i}-${j}-${k}.txt & - vmstat 1 > ${RESULTS_DIR}/stat/vmstat-${i}-${j}-${k}.txt & - iostat -xn 10 > ${RESULTS_DIR}/stat/iostat-${i}-${j}-${k}.txt & - ${JAVA_BIN} ${JAVA_ARGS_KIEKER_DEACTV} ${JAR} \ - --output-filename ${RAWFN}-${i}-${j}-${k}.csv \ - --total-calls ${TOTAL_CALLS} \ - --method-time ${METHOD_TIME} \ - --total-threads ${THREADS} \ - --recursion-depth ${j} \ - ${MORE_PARAMS} - kill %mpstat - kill %vmstat - kill %iostat - [ -f ${BASE_DIR}/hotspot.log ] && mv ${BASE_DIR}/hotspot.log ${RESULTS_DIR}/hotspot-${i}-${j}-${k}.log - echo >>${BASE_DIR}/kieker.log - echo >>${BASE_DIR}/kieker.log - sync - sleep ${SLEEP_TIME} - - # No logging - k=`expr ${k} + 1` - echo " # ${i}.${j}.${k} No logging (null writer)" - echo " # ${i}.${j}.${k} No logging (null writer)" >>${BASE_DIR}/kieker.log - mpstat 1 > ${RESULTS_DIR}/stat/mpstat-${i}-${j}-${k}.txt & - vmstat 1 > ${RESULTS_DIR}/stat/vmstat-${i}-${j}-${k}.txt & - iostat -xn 10 > ${RESULTS_DIR}/stat/iostat-${i}-${j}-${k}.txt & - ${JAVA_BIN} ${JAVA_ARGS_KIEKER_NOLOGGING} ${JAR} \ - --output-filename ${RAWFN}-${i}-${j}-${k}.csv \ - --total-calls ${TOTAL_CALLS} \ - --method-time ${METHOD_TIME} \ - --total-threads ${THREADS} \ - --recursion-depth ${j} \ - ${MORE_PARAMS} - kill %mpstat - kill %vmstat - kill %iostat - [ -f ${BASE_DIR}/hotspot.log ] && mv ${BASE_DIR}/hotspot.log ${RESULTS_DIR}/hotspot-${i}-${j}-${k}.log - echo >>${BASE_DIR}/kieker.log - echo >>${BASE_DIR}/kieker.log - sync - sleep ${SLEEP_TIME} - - # Logging 1 - k=`expr ${k} + 1` - echo " # ${i}.${j}.${k} Logging 1" - echo " # ${i}.${j}.${k} Logging 1" >>${BASE_DIR}/kieker.log - mpstat 1 > ${RESULTS_DIR}/stat/mpstat-${i}-${j}-${k}.txt & - vmstat 1 > ${RESULTS_DIR}/stat/vmstat-${i}-${j}-${k}.txt & - iostat -xn 10 > ${RESULTS_DIR}/stat/iostat-${i}-${j}-${k}.txt & - ${JAVA_BIN} ${JAVA_ARGS_KIEKER_LOGGING1} ${JAR} \ - --output-filename ${RAWFN}-${i}-${j}-${k}.csv \ - --total-calls ${TOTAL_CALLS} \ - --method-time ${METHOD_TIME} \ - --total-threads ${THREADS} \ - --recursion-depth ${j} \ - ${MORE_PARAMS} - kill %mpstat - kill %vmstat - kill %iostat - rm -rf ${BASE_DIR}/tmp/kieker-* - [ -f ${BASE_DIR}/hotspot.log ] && mv ${BASE_DIR}/hotspot.log ${RESULTS_DIR}/hotspot-${i}-${j}-${k}.log - echo >>${BASE_DIR}/kieker.log - echo >>${BASE_DIR}/kieker.log - sync - sleep ${SLEEP_TIME} - - # Logging 2 - k=`expr ${k} + 1` - echo " # ${i}.${j}.${k} Logging 2" - echo " # ${i}.${j}.${k} Logging 2" >>${BASE_DIR}/kieker.log - mpstat 1 > ${RESULTS_DIR}/stat/mpstat-${i}-${j}-${k}.txt & - vmstat 1 > ${RESULTS_DIR}/stat/vmstat-${i}-${j}-${k}.txt & - iostat -xn 10 > ${RESULTS_DIR}/stat/iostat-${i}-${j}-${k}.txt & - ${JAVA_BIN} ${JAVA_ARGS_KIEKER_LOGGING2} ${JAR} \ - --output-filename ${RAWFN}-${i}-${j}-${k}.csv \ - --total-calls ${TOTAL_CALLS} \ - --method-time ${METHOD_TIME} \ - --total-threads ${THREADS} \ - --recursion-depth ${j} \ - ${MORE_PARAMS} - kill %mpstat - kill %vmstat - kill %iostat - rm -rf ${BASE_DIR}/tmp/kieker-* - [ -f ${BASE_DIR}/hotspot.log ] && mv ${BASE_DIR}/hotspot.log ${RESULTS_DIR}/hotspot-${i}-${j}-${k}.log - echo >>${BASE_DIR}/kieker.log - echo >>${BASE_DIR}/kieker.log - sync - sleep ${SLEEP_TIME} - - # Logging 3 - k=`expr ${k} + 1` - echo " # ${i}.${j}.${k} Logging 3" - echo " # ${i}.${j}.${k} Logging 3" >>${BASE_DIR}/kieker.log - mpstat 1 > ${RESULTS_DIR}/stat/mpstat-${i}-${j}-${k}.txt & - vmstat 1 > ${RESULTS_DIR}/stat/vmstat-${i}-${j}-${k}.txt & - iostat -xn 10 > ${RESULTS_DIR}/stat/iostat-${i}-${j}-${k}.txt & - ${JAVA_BIN} ${JAVA_ARGS_KIEKER_LOGGING3} ${JAR} \ - --output-filename ${RAWFN}-${i}-${j}-${k}.csv \ - --total-calls ${TOTAL_CALLS} \ - --method-time ${METHOD_TIME} \ - --total-threads ${THREADS} \ - --recursion-depth ${j} \ - ${MORE_PARAMS} - kill %mpstat - kill %vmstat - kill %iostat - rm -rf ${BASE_DIR}/tmp/kieker-* - [ -f ${BASE_DIR}/hotspot.log ] && mv ${BASE_DIR}/hotspot.log ${RESULTS_DIR}/hotspot-${i}-${j}-${k}.log - echo >>${BASE_DIR}/kieker.log - echo >>${BASE_DIR}/kieker.log - sync - sleep ${SLEEP_TIME} - -done -zip -jqr ${RESULTS_DIR}/stat.zip ${RESULTS_DIR}/stat -rm -rf ${RESULTS_DIR}/stat/ -mv ${BASE_DIR}/kieker.log ${RESULTS_DIR}/kieker.log -[ -f ${RESULTS_DIR}/hotspot-1-${RECURSION_DEPTH}-1.log ] && grep "<task " ${RESULTS_DIR}/hotspot-*.log >${RESULTS_DIR}/log.log -[ -f ${BASE_DIR}/errorlog.txt ] && mv ${BASE_DIR}/errorlog.txt ${RESULTS_DIR}/ - -## Generate Results file -# Timeseries -R --vanilla --silent <<EOF -results_fn="${RAWFN}" -output_fn="${RESULTS_DIR}/results-timeseries.pdf" -configs.loop=${NUM_LOOPS} -configs.recursion=c(${RECURSION_DEPTH}) -configs.labels=c("No Probe","Deactivated Probe","Collecting Data","Writer1","Writer2","Writer3") -configs.colors=c("black","red","blue","green","purple","pink") -results.count=${TOTAL_CALLS} -tsconf.min=(${METHOD_TIME}/1000) -tsconf.max=(${METHOD_TIME}/1000)+200 -source("${R_SCRIPT_DIR}timeseries.r") -EOF -# Timeseries-Average -R --vanilla --silent <<EOF -results_fn="${RAWFN}" -output_fn="${RESULTS_DIR}/results-timeseries-average.pdf" -configs.loop=${NUM_LOOPS} -configs.recursion=c(${RECURSION_DEPTH}) -configs.labels=c("No Probe","Deactivated Probe","Collecting Data","Writer1","Writer2","Writer3") -configs.colors=c("black","red","blue","green","purple","pink") -results.count=${TOTAL_CALLS} -tsconf.min=(${METHOD_TIME}/1000) -tsconf.max=(${METHOD_TIME}/1000)+200 -source("${R_SCRIPT_DIR}timeseries-average.r") -EOF -# Throughput -R --vanilla --silent <<EOF -results_fn="${RAWFN}" -output_fn="${RESULTS_DIR}/results-throughput.pdf" -configs.loop=${NUM_LOOPS} -configs.recursion=c(${RECURSION_DEPTH}) -configs.labels=c("No Probe","Deactivated Probe","Collecting Data","Writer1","Writer2","Writer3") -configs.colors=c("black","red","blue","green","purple","pink") -results.count=${TOTAL_CALLS} -source("${R_SCRIPT_DIR}throughput.r") -EOF -# Throughput-Average -R --vanilla --silent <<EOF -results_fn="${RAWFN}" -output_fn="${RESULTS_DIR}/results-throughput-average.pdf" -configs.loop=${NUM_LOOPS} -configs.recursion=c(${RECURSION_DEPTH}) -configs.labels=c("No Probe","Deactivated Probe","Collecting Data","Writer1","Writer2","Writer3") -configs.colors=c("black","red","blue","green","purple","pink") -results.count=${TOTAL_CALLS} -source("${R_SCRIPT_DIR}throughput-average.r") -EOF -# Bars -R --vanilla --silent <<EOF -results_fn="${RAWFN}" -output_fn="${RESULTS_DIR}/results-bars.pdf" -outtxt_fn="${RESULTS_DIR}/results-text.txt" -configs.loop=${NUM_LOOPS} -configs.recursion=c(${RECURSION_DEPTH}) -configs.labels=c("No Probe","Deactivated Probe","Collecting Data","Writer1","Writer2","Writer3") -results.count=${TOTAL_CALLS} -results.skip=${TOTAL_CALLS}/2 -bars.minval=(${METHOD_TIME}/1000) -bars.maxval=(${METHOD_TIME}/1000)+200 -source("${R_SCRIPT_DIR}bar.r") -EOF - -## Clean up raw results -zip -jqr ${RESULTS_DIR}/results.zip ${RAWFN}* -rm -f ${RAWFN}* -[ -f ${BASE_DIR}/nohup.out ] && mv ${BASE_DIR}/nohup.out ${RESULTS_DIR} - -# end diff --git a/bin/2014-icpe/benchmark-disk-writer.sh b/bin/2014-icpe/benchmark-disk-writer.sh deleted file mode 100644 index 235a752ca92bbae45496a29d6e5d627b8f6da82d..0000000000000000000000000000000000000000 --- a/bin/2014-icpe/benchmark-disk-writer.sh +++ /dev/null @@ -1,288 +0,0 @@ -#!/bin/bash - -JAVA_BIN="/localhome/ffi/jdk1.7.0_25/bin/java" - -R_SCRIPT_DIR=bin/icpe/r/ -BASE_DIR=./ -RESULTS_DIR="${BASE_DIR}/tmp/results-benchmark-disk/" - -SLEEP_TIME=30 ## 30 -NUM_LOOPS=10 ## 10 -THREADS=1 ## 1 -RECURSION_DEPTH=10 ## 10 -TOTAL_CALLS=2000000 ## 2000000 -METHOD_TIME=0 ## 0 - -MORE_PARAMS="" -#MORE_PARAMS="--quickstart" - -TIME=`expr ${METHOD_TIME} \* ${TOTAL_CALLS} / 1000000000 \* 4 \* ${RECURSION_DEPTH} \* ${NUM_LOOPS} + ${SLEEP_TIME} \* 4 \* ${NUM_LOOPS} \* ${RECURSION_DEPTH} + 50 \* ${TOTAL_CALLS} / 1000000000 \* 4 \* ${RECURSION_DEPTH} \* ${NUM_LOOPS} ` -echo "Experiment will take circa ${TIME} seconds." - -echo "Removing and recreating '${RESULTS_DIR}'" -(rm -rf ${RESULTS_DIR}) && mkdir ${RESULTS_DIR} -mkdir ${RESULTS_DIR}/stat/ - -# Clear kieker.log and initialize logging -rm -f ${BASE_DIR}/kieker.log -touch ${BASE_DIR}/kieker.log - -RAWFN="${RESULTS_DIR}/raw" - -JAVA_ARGS="-server" -JAVA_ARGS="${JAVA_ARGS} -d64" -JAVA_ARGS="${JAVA_ARGS} -Xms1G -Xmx4G" -JAVA_ARGS="${JAVA_ARGS} -verbose:gc -XX:+PrintCompilation" -#JAVA_ARGS="${JAVA_ARGS} -XX:+PrintInlining" -#JAVA_ARGS="${JAVA_ARGS} -XX:+UnlockDiagnosticVMOptions -XX:+LogCompilation" -#JAVA_ARGS="${JAVA_ARGS} -Djava.compiler=NONE" -JAR="-jar dist/OverheadEvaluationMicrobenchmarkKieker.jar" - -JAVA_ARGS_NOINSTR="${JAVA_ARGS}" -JAVA_ARGS_LTW="${JAVA_ARGS} -javaagent:${BASE_DIR}/lib/kieker-1.8-SNAPSHOT_aspectj.jar -Dorg.aspectj.weaver.showWeaveInfo=false -Daj.weaving.verbose=false -Dkieker.monitoring.adaptiveMonitoring.enabled=false -Dorg.aspectj.weaver.loadtime.configuration=META-INF/kieker.aop.xml" -JAVA_ARGS_KIEKER_DEACTV="${JAVA_ARGS_LTW} -Dkieker.monitoring.enabled=false -Dkieker.monitoring.writer=kieker.monitoring.writer.DummyWriter" -JAVA_ARGS_KIEKER_NOLOGGING="${JAVA_ARGS_LTW} -Dkieker.monitoring.writer=kieker.monitoring.writer.DummyWriter" -JAVA_ARGS_KIEKER_LOGGING1="${JAVA_ARGS_LTW} -Dkieker.monitoring.writer=kieker.monitoring.writer.filesystem.AsyncBinaryFsWriter -Dkieker.monitoring.writer.filesystem.AsyncBinaryFsWriter.customStoragePath=${BASE_DIR}/tmp -Dkieker.monitoring.writer.filesystem.AsyncBinaryFsWriter.QueueFullBehavior=1" -JAVA_ARGS_KIEKER_LOGGING2="${JAVA_ARGS_LTW} -Dkieker.monitoring.writer=kieker.monitoring.writer.filesystem.AsyncBinaryZipWriter -Dkieker.monitoring.writer.filesystem.AsyncBinaryZipWriter.customStoragePath=${BASE_DIR}/tmp -Dkieker.monitoring.writer.filesystem.AsyncBinaryZipWriter.QueueFullBehavior=1" -JAVA_ARGS_KIEKER_LOGGING3="${JAVA_ARGS_LTW} -Dkieker.monitoring.writer=kieker.monitoring.writer.filesystem.AsyncFsWriter -Dkieker.monitoring.writer.filesystem.AsyncFsWriter.customStoragePath=${BASE_DIR}/tmp -Dkieker.monitoring.writer.filesystem.AsyncFsWriter.QueueFullBehavior=1" - -## Write configuration -uname -a >${RESULTS_DIR}/configuration.txt -${JAVA_BIN} ${JAVA_ARGS} -version 2>>${RESULTS_DIR}/configuration.txt -echo "JAVA_ARGS: ${JAVA_ARGS}" >>${RESULTS_DIR}/configuration.txt -echo "" >>${RESULTS_DIR}/configuration.txt -echo "Runtime: circa ${TIME} seconds" >>${RESULTS_DIR}/configuration.txt -echo "" >>${RESULTS_DIR}/configuration.txt -echo "SLEEP_TIME=${SLEEP_TIME}" >>${RESULTS_DIR}/configuration.txt -echo "NUM_LOOPS=${NUM_LOOPS}" >>${RESULTS_DIR}/configuration.txt -echo "TOTAL_CALLS=${TOTAL_CALLS}" >>${RESULTS_DIR}/configuration.txt -echo "METHOD_TIME=${METHOD_TIME}" >>${RESULTS_DIR}/configuration.txt -echo "THREADS=${THREADS}" >>${RESULTS_DIR}/configuration.txt -echo "RECURSION_DEPTH=${RECURSION_DEPTH}" >>${RESULTS_DIR}/configuration.txt -sync - -## Execute Benchmark -for ((i=1;i<=${NUM_LOOPS};i+=1)); do - j=${RECURSION_DEPTH} - k=0 - echo "## Starting iteration ${i}/${NUM_LOOPS}" - echo "## Starting iteration ${i}/${NUM_LOOPS}" >>${BASE_DIR}/kieker.log - - # No instrumentation - k=`expr ${k} + 1` - echo " # ${i}.${j}.${k} No instrumentation" - echo " # ${i}.${j}.${k} No instrumentation" >>${BASE_DIR}/kieker.log - mpstat 1 > ${RESULTS_DIR}/stat/mpstat-${i}-${j}-${k}.txt & - vmstat 1 > ${RESULTS_DIR}/stat/vmstat-${i}-${j}-${k}.txt & - iostat -xn 10 > ${RESULTS_DIR}/stat/iostat-${i}-${j}-${k}.txt & - ${JAVA_BIN} ${JAVA_ARGS_NOINSTR} ${JAR} \ - --output-filename ${RAWFN}-${i}-${j}-${k}.csv \ - --total-calls ${TOTAL_CALLS} \ - --method-time ${METHOD_TIME} \ - --total-threads ${THREADS} \ - --recursion-depth ${j} \ - ${MORE_PARAMS} - kill %mpstat - kill %vmstat - kill %iostat - [ -f ${BASE_DIR}/hotspot.log ] && mv ${BASE_DIR}/hotspot.log ${RESULTS_DIR}/hotspot-${i}-${j}-${k}.log - echo >>${BASE_DIR}/kieker.log - echo >>${BASE_DIR}/kieker.log - sync - sleep ${SLEEP_TIME} - - # Deactivated probe - k=`expr ${k} + 1` - echo " # ${i}.${j}.${k} Deactivated probe" - echo " # ${i}.${j}.${k} Deactivated probe" >>${BASE_DIR}/kieker.log - mpstat 1 > ${RESULTS_DIR}/stat/mpstat-${i}-${j}-${k}.txt & - vmstat 1 > ${RESULTS_DIR}/stat/vmstat-${i}-${j}-${k}.txt & - iostat -xn 10 > ${RESULTS_DIR}/stat/iostat-${i}-${j}-${k}.txt & - ${JAVA_BIN} ${JAVA_ARGS_KIEKER_DEACTV} ${JAR} \ - --output-filename ${RAWFN}-${i}-${j}-${k}.csv \ - --total-calls ${TOTAL_CALLS} \ - --method-time ${METHOD_TIME} \ - --total-threads ${THREADS} \ - --recursion-depth ${j} \ - ${MORE_PARAMS} - kill %mpstat - kill %vmstat - kill %iostat - [ -f ${BASE_DIR}/hotspot.log ] && mv ${BASE_DIR}/hotspot.log ${RESULTS_DIR}/hotspot-${i}-${j}-${k}.log - echo >>${BASE_DIR}/kieker.log - echo >>${BASE_DIR}/kieker.log - sync - sleep ${SLEEP_TIME} - - # No logging - k=`expr ${k} + 1` - echo " # ${i}.${j}.${k} No logging (null writer)" - echo " # ${i}.${j}.${k} No logging (null writer)" >>${BASE_DIR}/kieker.log - mpstat 1 > ${RESULTS_DIR}/stat/mpstat-${i}-${j}-${k}.txt & - vmstat 1 > ${RESULTS_DIR}/stat/vmstat-${i}-${j}-${k}.txt & - iostat -xn 10 > ${RESULTS_DIR}/stat/iostat-${i}-${j}-${k}.txt & - ${JAVA_BIN} ${JAVA_ARGS_KIEKER_NOLOGGING} ${JAR} \ - --output-filename ${RAWFN}-${i}-${j}-${k}.csv \ - --total-calls ${TOTAL_CALLS} \ - --method-time ${METHOD_TIME} \ - --total-threads ${THREADS} \ - --recursion-depth ${j} \ - ${MORE_PARAMS} - kill %mpstat - kill %vmstat - kill %iostat - [ -f ${BASE_DIR}/hotspot.log ] && mv ${BASE_DIR}/hotspot.log ${RESULTS_DIR}/hotspot-${i}-${j}-${k}.log - echo >>${BASE_DIR}/kieker.log - echo >>${BASE_DIR}/kieker.log - sync - sleep ${SLEEP_TIME} - - # Logging 1 - k=`expr ${k} + 1` - echo " # ${i}.${j}.${k} Logging 1" - echo " # ${i}.${j}.${k} Logging 1" >>${BASE_DIR}/kieker.log - mpstat 1 > ${RESULTS_DIR}/stat/mpstat-${i}-${j}-${k}.txt & - vmstat 1 > ${RESULTS_DIR}/stat/vmstat-${i}-${j}-${k}.txt & - iostat -xn 10 > ${RESULTS_DIR}/stat/iostat-${i}-${j}-${k}.txt & - ${JAVA_BIN} ${JAVA_ARGS_KIEKER_LOGGING1} ${JAR} \ - --output-filename ${RAWFN}-${i}-${j}-${k}.csv \ - --total-calls ${TOTAL_CALLS} \ - --method-time ${METHOD_TIME} \ - --total-threads ${THREADS} \ - --recursion-depth ${j} \ - ${MORE_PARAMS} - kill %mpstat - kill %vmstat - kill %iostat - rm -rf ${BASE_DIR}/tmp/kieker-* - [ -f ${BASE_DIR}/hotspot.log ] && mv ${BASE_DIR}/hotspot.log ${RESULTS_DIR}/hotspot-${i}-${j}-${k}.log - echo >>${BASE_DIR}/kieker.log - echo >>${BASE_DIR}/kieker.log - sync - sleep ${SLEEP_TIME} - - # Logging 2 - k=`expr ${k} + 1` - echo " # ${i}.${j}.${k} Logging 2" - echo " # ${i}.${j}.${k} Logging 2" >>${BASE_DIR}/kieker.log - mpstat 1 > ${RESULTS_DIR}/stat/mpstat-${i}-${j}-${k}.txt & - vmstat 1 > ${RESULTS_DIR}/stat/vmstat-${i}-${j}-${k}.txt & - iostat -xn 10 > ${RESULTS_DIR}/stat/iostat-${i}-${j}-${k}.txt & - ${JAVA_BIN} ${JAVA_ARGS_KIEKER_LOGGING2} ${JAR} \ - --output-filename ${RAWFN}-${i}-${j}-${k}.csv \ - --total-calls ${TOTAL_CALLS} \ - --method-time ${METHOD_TIME} \ - --total-threads ${THREADS} \ - --recursion-depth ${j} \ - ${MORE_PARAMS} - kill %mpstat - kill %vmstat - kill %iostat - rm -rf ${BASE_DIR}/tmp/kieker-* - [ -f ${BASE_DIR}/hotspot.log ] && mv ${BASE_DIR}/hotspot.log ${RESULTS_DIR}/hotspot-${i}-${j}-${k}.log - echo >>${BASE_DIR}/kieker.log - echo >>${BASE_DIR}/kieker.log - sync - sleep ${SLEEP_TIME} - - # Logging 3 - k=`expr ${k} + 1` - echo " # ${i}.${j}.${k} Logging 3" - echo " # ${i}.${j}.${k} Logging 3" >>${BASE_DIR}/kieker.log - mpstat 1 > ${RESULTS_DIR}/stat/mpstat-${i}-${j}-${k}.txt & - vmstat 1 > ${RESULTS_DIR}/stat/vmstat-${i}-${j}-${k}.txt & - iostat -xn 10 > ${RESULTS_DIR}/stat/iostat-${i}-${j}-${k}.txt & - ${JAVA_BIN} ${JAVA_ARGS_KIEKER_LOGGING3} ${JAR} \ - --output-filename ${RAWFN}-${i}-${j}-${k}.csv \ - --total-calls ${TOTAL_CALLS} \ - --method-time ${METHOD_TIME} \ - --total-threads ${THREADS} \ - --recursion-depth ${j} \ - ${MORE_PARAMS} - kill %mpstat - kill %vmstat - kill %iostat - rm -rf ${BASE_DIR}/tmp/kieker-* - [ -f ${BASE_DIR}/hotspot.log ] && mv ${BASE_DIR}/hotspot.log ${RESULTS_DIR}/hotspot-${i}-${j}-${k}.log - echo >>${BASE_DIR}/kieker.log - echo >>${BASE_DIR}/kieker.log - sync - sleep ${SLEEP_TIME} - -done -zip -jqr ${RESULTS_DIR}/stat.zip ${RESULTS_DIR}/stat -rm -rf ${RESULTS_DIR}/stat/ -mv ${BASE_DIR}/kieker.log ${RESULTS_DIR}/kieker.log -[ -f ${RESULTS_DIR}/hotspot-1-${RECURSION_DEPTH}-1.log ] && grep "<task " ${RESULTS_DIR}/hotspot-*.log >${RESULTS_DIR}/log.log -[ -f ${BASE_DIR}/errorlog.txt ] && mv ${BASE_DIR}/errorlog.txt ${RESULTS_DIR} - -## Generate Results file -# Timeseries -R --vanilla --silent <<EOF -results_fn="${RAWFN}" -output_fn="${RESULTS_DIR}/results-timeseries.pdf" -configs.loop=${NUM_LOOPS} -configs.recursion=c(${RECURSION_DEPTH}) -configs.labels=c("No Probe","Deactivated Probe","Collecting Data","Writer1","Writer2","Writer3") -configs.colors=c("black","red","blue","green","purple","pink") -results.count=${TOTAL_CALLS} -tsconf.min=(${METHOD_TIME}/1000) -tsconf.max=(${METHOD_TIME}/1000)+200 -source("${R_SCRIPT_DIR}timeseries.r") -EOF -# Timeseries-Average -R --vanilla --silent <<EOF -results_fn="${RAWFN}" -output_fn="${RESULTS_DIR}/results-timeseries-average.pdf" -configs.loop=${NUM_LOOPS} -configs.recursion=c(${RECURSION_DEPTH}) -configs.labels=c("No Probe","Deactivated Probe","Collecting Data","Writer1","Writer2","Writer3") -configs.colors=c("black","red","blue","green","purple","pink") -results.count=${TOTAL_CALLS} -tsconf.min=(${METHOD_TIME}/1000) -tsconf.max=(${METHOD_TIME}/1000)+200 -source("${R_SCRIPT_DIR}timeseries-average.r") -EOF -# Throughput -R --vanilla --silent <<EOF -results_fn="${RAWFN}" -output_fn="${RESULTS_DIR}/results-throughput.pdf" -configs.loop=${NUM_LOOPS} -configs.recursion=c(${RECURSION_DEPTH}) -configs.labels=c("No Probe","Deactivated Probe","Collecting Data","Writer1","Writer2","Writer3") -configs.colors=c("black","red","blue","green","purple","pink") -results.count=${TOTAL_CALLS} -source("${R_SCRIPT_DIR}throughput.r") -EOF -# Throughput-Average -R --vanilla --silent <<EOF -results_fn="${RAWFN}" -output_fn="${RESULTS_DIR}/results-throughput-average.pdf" -configs.loop=${NUM_LOOPS} -configs.recursion=c(${RECURSION_DEPTH}) -configs.labels=c("No Probe","Deactivated Probe","Collecting Data","Writer1","Writer2","Writer3") -configs.colors=c("black","red","blue","green","purple","pink") -results.count=${TOTAL_CALLS} -source("${R_SCRIPT_DIR}throughput-average.r") -EOF -# Bars -R --vanilla --silent <<EOF -results_fn="${RAWFN}" -output_fn="${RESULTS_DIR}/results-bars.pdf" -outtxt_fn="${RESULTS_DIR}/results-text.txt" -configs.loop=${NUM_LOOPS} -configs.recursion=c(${RECURSION_DEPTH}) -configs.labels=c("No Probe","Deactivated Probe","Collecting Data","Writer1","Writer2","Writer3") -results.count=${TOTAL_CALLS} -results.skip=${TOTAL_CALLS}/2 -bars.minval=(${METHOD_TIME}/1000) -bars.maxval=(${METHOD_TIME}/1000)+200 -source("${R_SCRIPT_DIR}bar.r") -EOF - -## Clean up raw results -zip -jqr ${RESULTS_DIR}/results.zip ${RAWFN}* -rm -f ${RAWFN}* -[ -f ${BASE_DIR}/nohup.out ] && mv ${BASE_DIR}/nohup.out ${RESULTS_DIR} - -# end diff --git a/bin/2014-icpe/benchmark-tcp-ffi.sh b/bin/2014-icpe/benchmark-tcp-ffi.sh deleted file mode 100644 index 8621a81ba84b87f76d32e22ac5793e12d53ec571..0000000000000000000000000000000000000000 --- a/bin/2014-icpe/benchmark-tcp-ffi.sh +++ /dev/null @@ -1,232 +0,0 @@ -#!/bin/bash - -JAVA_BIN="/localhome/ffi/jdk1.7.0_25/bin/java" - -R_SCRIPT_DIR=bin/icpe/r -BASE_DIR=. -RESULTS_DIR="${BASE_DIR}/tmp/results-benchmark-tcp-ffi/" - -SLEEP_TIME=30 ## 30 -NUM_LOOPS=10 ## 10 -THREADS=1 ## 1 -RECURSION_DEPTH=10 ## 10 -TOTAL_CALLS=20000000 ## 20000000 -METHOD_TIME=0 ## 0 - -MORE_PARAMS="" -#MORE_PARAMS="--quickstart" - -TIME=`expr ${METHOD_TIME} \* ${TOTAL_CALLS} / 1000000000 \* 4 \* ${RECURSION_DEPTH} \* ${NUM_LOOPS} + ${SLEEP_TIME} \* 4 \* ${NUM_LOOPS} \* ${RECURSION_DEPTH} + 50 \* ${TOTAL_CALLS} / 1000000000 \* 4 \* ${RECURSION_DEPTH} \* ${NUM_LOOPS} ` -echo "Experiment will take circa ${TIME} seconds." - -echo "Removing and recreating '${RESULTS_DIR}'" -(rm -rf "${RESULTS_DIR}") && mkdir "${RESULTS_DIR}" -mkdir "${RESULTS_DIR}/stat" - -RAWFN="${RESULTS_DIR}/raw" - -JAVA_ARGS="-server" -JAVA_ARGS="${JAVA_ARGS} -d64" -JAVA_ARGS="${JAVA_ARGS} -Xms1G -Xmx4G" -JAVA_ARGS="${JAVA_ARGS} -verbose:gc -XX:+PrintCompilation" -#JAVA_ARGS="${JAVA_ARGS} -XX:+PrintInlining" -#JAVA_ARGS="${JAVA_ARGS} -XX:+UnlockDiagnosticVMOptions -XX:+LogCompilation" -#JAVA_ARGS="${JAVA_ARGS} -Djava.compiler=NONE" -JARNoInstru="-jar dist/OverheadEvaluationMicrobenchmarkTCPffiNoInstru.jar" -JARDeactived="-jar dist/OverheadEvaluationMicrobenchmarkTCPffiDeactivated.jar" -JARCollecting="-jar dist/OverheadEvaluationMicrobenchmarkTCPffiCollecting.jar" -JARNORMAL="-jar dist/OverheadEvaluationMicrobenchmarkTCPffiNormal.jar" - -JAVA_ARGS_NOINSTR="${JAVA_ARGS}" -JAVA_ARGS_LTW="${JAVA_ARGS} -javaagent:${BASE_DIR}/lib/aspectjweaver.jar -Dorg.aspectj.weaver.showWeaveInfo=false -Daj.weaving.verbose=false" - -## Write configuration -uname -a >${RESULTS_DIR}/configuration.txt -${JAVA_BIN} ${JAVA_ARGS} -version 2 >> "${RESULTS_DIR}/configuration.txt" -echo "JAVA_ARGS: ${JAVA_ARGS}" >> "${RESULTS_DIR}/configuration.txt" -echo "" >> "${RESULTS_DIR}/configuration.txt" -echo "Runtime: circa ${TIME} seconds" >> "${RESULTS_DIR}/configuration.txt" -echo "" >> "${RESULTS_DIR}/configuration.txt" -echo "SLEEP_TIME=${SLEEP_TIME}" >> "${RESULTS_DIR}/configuration.txt" -echo "NUM_LOOPS=${NUM_LOOPS}" >> "${RESULTS_DIR}/configuration.txt" -echo "TOTAL_CALLS=${TOTAL_CALLS}" >> "${RESULTS_DIR}/configuration.txt" -echo "METHOD_TIME=${METHOD_TIME}" >> "${RESULTS_DIR}/configuration.txt" -echo "THREADS=${THREADS}" >> "${RESULTS_DIR}/configuration.txt" -echo "RECURSION_DEPTH=${RECURSION_DEPTH}" >> "${RESULTS_DIR}/configuration.txt" -sync - -## Execute Benchmark - -for ((i=1;i<=${NUM_LOOPS};i+=1)); do - j=${RECURSION_DEPTH} - k=0 - echo "## Starting iteration ${i}/${NUM_LOOPS}" - - # No instrumentation - k=`expr ${k} + 1` - echo " # ${i}.${j}.${k} No instrumentation" - mpstat 1 > ${RESULTS_DIR}/stat/mpstat-${i}-${j}-${k}.txt & - vmstat 1 > ${RESULTS_DIR}/stat/vmstat-${i}-${j}-${k}.txt & - iostat -xn 10 > ${RESULTS_DIR}/stat/iostat-${i}-${j}-${k}.txt & - ${JAVA_BIN} ${JAVA_ARGS_NOINSTR} ${JARNoInstru} \ - --output-filename ${RAWFN}-${i}-${j}-${k}.csv \ - --total-calls ${TOTAL_CALLS} \ - --method-time ${METHOD_TIME} \ - --total-threads ${THREADS} \ - --recursion-depth ${j} \ - ${MORE_PARAMS} - kill %mpstat - kill %vmstat - kill %iostat - [ -f ${BASE_DIR}/hotspot.log ] && mv ${BASE_DIR}/hotspot.log ${RESULTS_DIR}/hotspot-${i}-${j}-${k}.log - sync - sleep ${SLEEP_TIME} - - # Deactivated Probe - k=`expr ${k} + 1` - echo " # ${i}.${j}.${k} Deactivated Probe" - mpstat 1 > ${RESULTS_DIR}/stat/mpstat-${i}-${j}-${k}.txt & - vmstat 1 > ${RESULTS_DIR}/stat/vmstat-${i}-${j}-${k}.txt & - iostat -xn 10 > ${RESULTS_DIR}/stat/iostat-${i}-${j}-${k}.txt & - ${JAVA_BIN} -jar dist/explorviz_worker.jar >${RESULTS_DIR}/worker-${i}-${j}-${k}.log & - sleep 5 - ${JAVA_BIN} ${JAVA_ARGS_LTW} ${JARDeactived} \ - --output-filename ${RAWFN}-${i}-${j}-${k}.csv \ - --total-calls ${TOTAL_CALLS} \ - --method-time ${METHOD_TIME} \ - --total-threads ${THREADS} \ - --recursion-depth ${j} \ - ${MORE_PARAMS} - kill %mpstat - kill %vmstat - kill %iostat - pkill -f 'java -jar' - rm -rf ${BASE_DIR}/tmp/kieker-* - [ -f ${BASE_DIR}/hotspot.log ] && mv ${BASE_DIR}/hotspot.log ${RESULTS_DIR}/hotspot-${i}-${j}-${k}.log - sync - sleep ${SLEEP_TIME} - - # Collecting - k=`expr ${k} + 1` - echo " # ${i}.${j}.${k} Collecting" - mpstat 1 > ${RESULTS_DIR}/stat/mpstat-${i}-${j}-${k}.txt & - vmstat 1 > ${RESULTS_DIR}/stat/vmstat-${i}-${j}-${k}.txt & - iostat -xn 10 > ${RESULTS_DIR}/stat/iostat-${i}-${j}-${k}.txt & - ${JAVA_BIN} -jar dist/explorviz_worker.jar >${RESULTS_DIR}/worker-${i}-${j}-${k}.log & - sleep 5 - ${JAVA_BIN} ${JAVA_ARGS_LTW} ${JARCollecting} \ - --output-filename ${RAWFN}-${i}-${j}-${k}.csv \ - --total-calls ${TOTAL_CALLS} \ - --method-time ${METHOD_TIME} \ - --total-threads ${THREADS} \ - --recursion-depth ${j} \ - ${MORE_PARAMS} - kill %mpstat - kill %vmstat - kill %iostat - pkill -f 'java -jar' - rm -rf ${BASE_DIR}/tmp/kieker-* - [ -f ${BASE_DIR}/hotspot.log ] && mv ${BASE_DIR}/hotspot.log ${RESULTS_DIR}/hotspot-${i}-${j}-${k}.log - sync - sleep ${SLEEP_TIME} - - # Logging - k=`expr ${k} + 1` - echo " # ${i}.${j}.${k} Logging" - mpstat 1 > ${RESULTS_DIR}/stat/mpstat-${i}-${j}-${k}.txt & - vmstat 1 > ${RESULTS_DIR}/stat/vmstat-${i}-${j}-${k}.txt & - iostat -xn 10 > ${RESULTS_DIR}/stat/iostat-${i}-${j}-${k}.txt & - ${JAVA_BIN} -jar dist/explorviz_worker.jar >${RESULTS_DIR}/worker-${i}-${j}-${k}.log & - sleep 5 - ${JAVA_BIN} ${JAVA_ARGS_LTW} ${JARNORMAL} \ - --output-filename ${RAWFN}-${i}-${j}-${k}.csv \ - --total-calls ${TOTAL_CALLS} \ - --method-time ${METHOD_TIME} \ - --total-threads ${THREADS} \ - --recursion-depth ${j} \ - ${MORE_PARAMS} - kill %mpstat - kill %vmstat - kill %iostat - pkill -f 'java -jar' - rm -rf ${BASE_DIR}/tmp/kieker-* - [ -f ${BASE_DIR}/hotspot.log ] && mv ${BASE_DIR}/hotspot.log ${RESULTS_DIR}/hotspot-${i}-${j}-${k}.log - sync - sleep ${SLEEP_TIME} - -done -zip -jqr ${RESULTS_DIR}/stat.zip ${RESULTS_DIR}/stat -rm -rf ${RESULTS_DIR}/stat/ -[ -f ${RESULTS_DIR}/hotspot-1-${RECURSION_DEPTH}-1.log ] && grep "<task " ${RESULTS_DIR}/hotspot-*.log >${RESULTS_DIR}/log.log -[ -f ${BASE_DIR}/errorlog.txt ] && mv ${BASE_DIR}/errorlog.txt ${RESULTS_DIR}/ - -## Generate Results file -# Timeseries -R --vanilla --silent <<EOF -results_fn="${RAWFN}" -output_fn="${RESULTS_DIR}/results-timeseries.pdf" -configs.loop=${NUM_LOOPS} -configs.recursion=c(${RECURSION_DEPTH}) -configs.labels=c("No Probe","Deactivated Probe","Collecting Data","TCP Writer") -configs.colors=c("black","red","blue","green") -results.count=${TOTAL_CALLS} -tsconf.min=(${METHOD_TIME}/1000) -tsconf.max=(${METHOD_TIME}/1000)+40 -source("${R_SCRIPT_DIR}timeseries.r") -EOF -# Timeseries-Average -R --vanilla --silent <<EOF -results_fn="${RAWFN}" -output_fn="${RESULTS_DIR}/results-timeseries-average.pdf" -configs.loop=${NUM_LOOPS} -configs.recursion=c(${RECURSION_DEPTH}) -configs.labels=c("No Probe","Deactivated Probe","Collecting Data","TCP Writer") -configs.colors=c("black","red","blue","green") -results.count=${TOTAL_CALLS} -tsconf.min=(${METHOD_TIME}/1000) -tsconf.max=(${METHOD_TIME}/1000)+40 -source("${R_SCRIPT_DIR}timeseries-average.r") -EOF -# Throughput -R --vanilla --silent <<EOF -results_fn="${RAWFN}" -output_fn="${RESULTS_DIR}/results-throughput.pdf" -configs.loop=${NUM_LOOPS} -configs.recursion=c(${RECURSION_DEPTH}) -configs.labels=c("No Probe","Deactivated Probe","Collecting Data","TCP Writer") -configs.colors=c("black","red","blue","green") -results.count=${TOTAL_CALLS} -source("${R_SCRIPT_DIR}throughput.r") -EOF -# Throughput-Average -R --vanilla --silent <<EOF -results_fn="${RAWFN}" -output_fn="${RESULTS_DIR}/results-throughput-average.pdf" -configs.loop=${NUM_LOOPS} -configs.recursion=c(${RECURSION_DEPTH}) -configs.labels=c("No Probe","Deactivated Probe","Collecting Data","TCP Writer") -configs.colors=c("black","red","blue","green") -results.count=${TOTAL_CALLS} -source("${R_SCRIPT_DIR}throughput-average.r") -EOF -# Bars -R --vanilla --silent <<EOF -results_fn="${RAWFN}" -output_fn="${RESULTS_DIR}/results-bars.pdf" -outtxt_fn="${RESULTS_DIR}/results-text.txt" -configs.loop=${NUM_LOOPS} -configs.recursion=c(${RECURSION_DEPTH}) -configs.labels=c("No Probe","Deactivated Probe","Collecting Data","TCP Writer") -results.count=${TOTAL_CALLS} -results.skip=${TOTAL_CALLS}/2 -bars.minval=(${METHOD_TIME}/1000) -bars.maxval=(${METHOD_TIME}/1000)+40 -source("${R_SCRIPT_DIR}bar.r") -EOF - -## Clean up raw results -zip -jqr ${RESULTS_DIR}/results.zip ${RAWFN}* -rm -f ${RAWFN}* -zip -jqr ${RESULTS_DIR}/worker.zip ${RESULTS_DIR}/worker*.log -rm -f ${RESULTS_DIR}/worker*.log -[ -f ${BASE_DIR}/nohup.out ] && mv ${BASE_DIR}/nohup.out ${RESULTS_DIR}/ diff --git a/bin/2014-icpe/benchmark-tcp-kieker.sh b/bin/2014-icpe/benchmark-tcp-kieker.sh deleted file mode 100644 index 8204d72d7c2aaace5a763be323e106ad727584d7..0000000000000000000000000000000000000000 --- a/bin/2014-icpe/benchmark-tcp-kieker.sh +++ /dev/null @@ -1,243 +0,0 @@ -#!/bin/bash - -JAVABIN="/localhome/ffi/jdk1.7.0_25/bin/" - -R_SCRIPT_DIR=bin/icpe/r/ -BASE_DIR=./ -RESULTS_DIR="${BASE_DIR}/tmp/results-benchmark-tcp-kieker/" - -SLEEP_TIME=30 ## 30 -NUM_LOOPS=10 ## 10 -THREADS=1 ## 1 -RECURSION_DEPTH=10 ## 10 -TOTAL_CALLS=20000000 ## 20000000 -METHOD_TIME=0 ## 0 - -MORE_PARAMS="" -#MORE_PARAMS="--quickstart" - -TIME=`expr ${METHOD_TIME} \* ${TOTAL_CALLS} / 1000000000 \* 4 \* ${RECURSION_DEPTH} \* ${NUM_LOOPS} + ${SLEEP_TIME} \* 4 \* ${NUM_LOOPS} \* ${RECURSION_DEPTH} + 50 \* ${TOTAL_CALLS} / 1000000000 \* 4 \* ${RECURSION_DEPTH} \* ${NUM_LOOPS} ` -echo "Experiment will take circa ${TIME} seconds." - -echo "Removing and recreating '${RESULTS_DIR}'" -(rm -rf "${RESULTS_DIR}") && "mkdir ${RESULTS_DIR}" -mkdir -p "${RESULTS_DIR}/stat" - -# Clear kieker.log and initialize logging -rm -f ${BASE_DIR}/kieker.log -touch ${BASE_DIR}/kieker.log - -RAWFN="${RESULTS_DIR}/raw" - -JAVA_ARGS="-server" -JAVA_ARGS="${JAVA_ARGS} -d64" -JAVA_ARGS="${JAVA_ARGS} -Xms1G -Xmx4G" -JAVA_ARGS="${JAVA_ARGS} -verbose:gc -XX:+PrintCompilation" -#JAVA_ARGS="${JAVA_ARGS} -XX:+PrintInlining" -#JAVA_ARGS="${JAVA_ARGS} -XX:+UnlockDiagnosticVMOptions -XX:+LogCompilation" -#JAVA_ARGS="${JAVA_ARGS} -Djava.compiler=NONE" -JAR="-jar dist/OverheadEvaluationMicrobenchmarkKieker.jar" - -JAVA_ARGS_NOINSTR="${JAVA_ARGS}" -JAVA_ARGS_LTW="${JAVA_ARGS} -javaagent:${BASE_DIR}/lib/kieker-1.8-SNAPSHOT_aspectj.jar -Dorg.aspectj.weaver.showWeaveInfo=false -Daj.weaving.verbose=false -Dkieker.monitoring.adaptiveMonitoring.enabled=false -Dorg.aspectj.weaver.loadtime.configuration=META-INF/kieker.aop.xml" -JAVA_ARGS_KIEKER_DEACTV="${JAVA_ARGS_LTW} -Dkieker.monitoring.enabled=false -Dkieker.monitoring.writer=kieker.monitoring.writer.DummyWriter" -JAVA_ARGS_KIEKER_NOLOGGING="${JAVA_ARGS_LTW} -Dkieker.monitoring.writer=kieker.monitoring.writer.DummyWriter" -JAVA_ARGS_KIEKER_LOGGING="${JAVA_ARGS_LTW} -Dkieker.monitoring.writer=kieker.monitoring.writer.tcp.TCPWriter -Dkieker.monitoring.writer.tcp.TCPWriter.QueueSize=100000 -Dkieker.monitoring.writer.tcp.TCPWriter.QueueFullBehavior=1" - -## Write configuration -uname -a >${RESULTS_DIR}/configuration.txt -${JAVA_BIN} ${JAVA_ARGS} -version 2>> "${RESULTS_DIR}/configuration.txt" -echo "JAVA_ARGS: ${JAVA_ARGS}" >> "${RESULTS_DIR}/configuration.txt" -echo "" >> "${RESULTS_DIR}/configuration.txt" -echo "Runtime: circa ${TIME} seconds" >> "${RESULTS_DIR}/configuration.txt" -echo "" >> "${RESULTS_DIR}/configuration.txt" -echo "SLEEP_TIME=${SLEEP_TIME}" >> "${RESULTS_DIR}/configuration.txt" -echo "NUM_LOOPS=${NUM_LOOPS}" >> "${RESULTS_DIR}/configuration.txt" -echo "TOTAL_CALLS=${TOTAL_CALLS}" >> "${RESULTS_DIR}/configuration.txt" -echo "METHOD_TIME=${METHOD_TIME}" >> "${RESULTS_DIR}/configuration.txt" -echo "THREADS=${THREADS}" >> "${RESULTS_DIR}/configuration.txt" -echo "RECURSION_DEPTH=${RECURSION_DEPTH}" >> "${RESULTS_DIR}/configuration.txt" -sync - -## Execute Benchmark -for ((i=1;i<=${NUM_LOOPS};i+=1)); do - j=${RECURSION_DEPTH} - k=0 - echo "## Starting iteration ${i}/${NUM_LOOPS}" - echo "## Starting iteration ${i}/${NUM_LOOPS}" >>${BASE_DIR}/kieker.log - - # No instrumentation - k=`expr ${k} + 1` - echo " # ${i}.${j}.${k} No instrumentation" - echo " # ${i}.${j}.${k} No instrumentation" >>${BASE_DIR}/kieker.log - mpstat 1 > ${RESULTS_DIR}/stat/mpstat-${i}-${j}-${k}.txt & - vmstat 1 > ${RESULTS_DIR}/stat/vmstat-${i}-${j}-${k}.txt & - iostat -xn 10 > ${RESULTS_DIR}/stat/iostat-${i}-${j}-${k}.txt & - ${JAVA_BIN} ${JAVA_ARGS_NOINSTR} ${JAR} \ - --output-filename ${RAWFN}-${i}-${j}-${k}.csv \ - --total-calls ${TOTAL_CALLS} \ - --method-time ${METHOD_TIME} \ - --total-threads ${THREADS} \ - --recursion-depth ${j} \ - ${MORE_PARAMS} - kill %mpstat - kill %vmstat - kill %iostat - [ -f ${BASE_DIR}/hotspot.log ] && mv ${BASE_DIR}/hotspot.log ${RESULTS_DIR}/hotspot-${i}-${j}-${k}.log - echo >>${BASE_DIR}/kieker.log - echo >>${BASE_DIR}/kieker.log - sync - sleep ${SLEEP_TIME} - - # Deactivated probe - k=`expr ${k} + 1` - echo " # ${i}.${j}.${k} Deactivated probe" - echo " # ${i}.${j}.${k} Deactivated probe" >>${BASE_DIR}/kieker.log - mpstat 1 > ${RESULTS_DIR}/stat/mpstat-${i}-${j}-${k}.txt & - vmstat 1 > ${RESULTS_DIR}/stat/vmstat-${i}-${j}-${k}.txt & - iostat -xn 10 > ${RESULTS_DIR}/stat/iostat-${i}-${j}-${k}.txt & - ${JAVA_BIN} ${JAVA_ARGS_KIEKER_DEACTV} ${JAR} \ - --output-filename ${RAWFN}-${i}-${j}-${k}.csv \ - --total-calls ${TOTAL_CALLS} \ - --method-time ${METHOD_TIME} \ - --total-threads ${THREADS} \ - --recursion-depth ${j} \ - ${MORE_PARAMS} - kill %mpstat - kill %vmstat - kill %iostat - [ -f ${BASE_DIR}/hotspot.log ] && mv ${BASE_DIR}/hotspot.log ${RESULTS_DIR}/hotspot-${i}-${j}-${k}.log - echo >>${BASE_DIR}/kieker.log - echo >>${BASE_DIR}/kieker.log - sync - sleep ${SLEEP_TIME} - - # No logging - k=`expr ${k} + 1` - echo " # ${i}.${j}.${k} No logging (null writer)" - echo " # ${i}.${j}.${k} No logging (null writer)" >>${BASE_DIR}/kieker.log - mpstat 1 > ${RESULTS_DIR}/stat/mpstat-${i}-${j}-${k}.txt & - vmstat 1 > ${RESULTS_DIR}/stat/vmstat-${i}-${j}-${k}.txt & - iostat -xn 10 > ${RESULTS_DIR}/stat/iostat-${i}-${j}-${k}.txt & - ${JAVA_BIN} ${JAVA_ARGS_KIEKER_NOLOGGING} ${JAR} \ - --output-filename ${RAWFN}-${i}-${j}-${k}.csv \ - --total-calls ${TOTAL_CALLS} \ - --method-time ${METHOD_TIME} \ - --total-threads ${THREADS} \ - --recursion-depth ${j} \ - ${MORE_PARAMS} - kill %mpstat - kill %vmstat - kill %iostat - [ -f ${BASE_DIR}/hotspot.log ] && mv ${BASE_DIR}/hotspot.log ${RESULTS_DIR}/hotspot-${i}-${j}-${k}.log - echo >> "${BASE_DIR}/kieker.log" - echo >> "${BASE_DIR}/kieker.log" - sync - sleep "${SLEEP_TIME}" - - # Logging - k=`expr ${k} + 1` - echo " # ${i}.${j}.${k} Logging" - echo " # ${i}.${j}.${k} Logging" >>${BASE_DIR}/kieker.log - mpstat 1 > "${RESULTS_DIR}/stat/mpstat-${i}-${j}-${k}.txt" & - vmstat 1 > ${RESULTS_DIR}/stat/vmstat-${i}-${j}-${k}.txt & - iostat -xn 10 > ${RESULTS_DIR}/stat/iostat-${i}-${j}-${k}.txt & - ${JAVA_BIN} -jar dist/KiekerTCPReader.jar >${RESULTS_DIR}/worker-${i}-${j}-${k}.log & - sleep 5 - ${JAVA_BIN} ${JAVA_ARGS_KIEKER_LOGGING} ${JAR} \ - --output-filename ${RAWFN}-${i}-${j}-${k}.csv \ - --total-calls ${TOTAL_CALLS} \ - --method-time ${METHOD_TIME} \ - --total-threads ${THREADS} \ - --recursion-depth ${j} \ - ${MORE_PARAMS} - kill %mpstat - kill %vmstat - kill %iostat - pkill -f 'java -jar' - rm -rf ${BASE_DIR}/tmp/kieker-* - [ -f ${BASE_DIR}/hotspot.log ] && mv ${BASE_DIR}/hotspot.log ${RESULTS_DIR}/hotspot-${i}-${j}-${k}.log - echo >>${BASE_DIR}/kieker.log - echo >>${BASE_DIR}/kieker.log - sync - sleep ${SLEEP_TIME} - -done -zip -jqr ${RESULTS_DIR}/stat.zip ${RESULTS_DIR}/stat -rm -rf ${RESULTS_DIR}/stat/ -mv ${BASE_DIR}/kieker.log ${RESULTS_DIR}/kieker.log -[ -f ${RESULTS_DIR}/hotspot-1-${RECURSION_DEPTH}-1.log ] && grep "<task " ${RESULTS_DIR}/hotspot-*.log >${RESULTS_DIR}/log.log -[ -f ${BASE_DIR}/errorlog.txt ] && mv ${BASE_DIR}/errorlog.txt ${RESULTS_DIR}/ - -## Generate Results file -# Timeseries -R --vanilla --silent <<EOF -results_fn="${RAWFN}" -output_fn="${RESULTS_DIR}/results-timeseries.pdf" -configs.loop=${NUM_LOOPS} -configs.recursion=c(${RECURSION_DEPTH}) -configs.labels=c("No Probe","Deactivated Probe","Collecting Data","TCP Writer") -configs.colors=c("black","red","blue","green") -results.count=${TOTAL_CALLS} -tsconf.min=(${METHOD_TIME}/1000) -tsconf.max=(${METHOD_TIME}/1000)+200 -source("${R_SCRIPT_DIR}timeseries.r") -EOF -# Timeseries-Average -R --vanilla --silent <<EOF -results_fn="${RAWFN}" -output_fn="${RESULTS_DIR}/results-timeseries-average.pdf" -configs.loop=${NUM_LOOPS} -configs.recursion=c(${RECURSION_DEPTH}) -configs.labels=c("No Probe","Deactivated Probe","Collecting Data","TCP Writer") -configs.colors=c("black","red","blue","green") -results.count=${TOTAL_CALLS} -tsconf.min=(${METHOD_TIME}/1000) -tsconf.max=(${METHOD_TIME}/1000)+200 -source("${R_SCRIPT_DIR}timeseries-average.r") -EOF -# Throughput -R --vanilla --silent <<EOF -results_fn="${RAWFN}" -output_fn="${RESULTS_DIR}/results-throughput.pdf" -configs.loop=${NUM_LOOPS} -configs.recursion=c(${RECURSION_DEPTH}) -configs.labels=c("No Probe","Deactivated Probe","Collecting Data","TCP Writer") -configs.colors=c("black","red","blue","green") -results.count=${TOTAL_CALLS} -source("${R_SCRIPT_DIR}throughput.r") -EOF -# Throughput-Average -R --vanilla --silent <<EOF -results_fn="${RAWFN}" -output_fn="${RESULTS_DIR}/results-throughput-average.pdf" -configs.loop=${NUM_LOOPS} -configs.recursion=c(${RECURSION_DEPTH}) -configs.labels=c("No Probe","Deactivated Probe","Collecting Data","TCP Writer") -configs.colors=c("black","red","blue","green") -results.count=${TOTAL_CALLS} -source("${R_SCRIPT_DIR}throughput-average.r") -EOF -# Bars -R --vanilla --silent <<EOF -results_fn="${RAWFN}" -output_fn="${RESULTS_DIR}/results-bars.pdf" -outtxt_fn="${RESULTS_DIR}/results-text.txt" -configs.loop=${NUM_LOOPS} -configs.recursion=c(${RECURSION_DEPTH}) -configs.labels=c("No Probe","Deactivated Probe","Collecting Data","TCP Writer") -results.count=${TOTAL_CALLS} -results.skip=${TOTAL_CALLS}/2 -bars.minval=(${METHOD_TIME}/1000) -bars.maxval=(${METHOD_TIME}/1000)+200 -source("${R_SCRIPT_DIR}bar.r") -EOF - -## Clean up raw results -zip -jqr ${RESULTS_DIR}/results.zip ${RAWFN}* -rm -f ${RAWFN}* -zip -jqr ${RESULTS_DIR}/worker.zip ${RESULTS_DIR}/worker*.log -rm -f ${RESULTS_DIR}/worker*.log -[ -f ${BASE_DIR}/nohup.out ] && mv ${BASE_DIR}/nohup.out "${RESULTS_DIR}" - -# end diff --git a/bin/2014-icpe/r/bar.r b/bin/2014-icpe/r/bar.r deleted file mode 100644 index eda349a94f8df9ac5e8b0a6d03dc94dd0f7104d0..0000000000000000000000000000000000000000 --- a/bin/2014-icpe/r/bar.r +++ /dev/null @@ -1,80 +0,0 @@ -#rm(list=ls(all=TRUE)) -#data_fn="tmp/" -#folder_fn="results-benchmark-binary" -#results_fn=paste(data_fn,folder_fn,"/raw",sep="") -#output_fn=paste(data_fn,folder_fn,"/results-bars.pdf",sep="") -#outtxt_fn=paste(data_fn,folder_fn,"/results-text.txt",sep="") - -configs.threads=1 -#configs.loop=10 -#configs.recursion=c(10) -#configs.labels=c("No Probe","Inactive Probe","Collecting Data","Writing Data") -configs.count=length(configs.labels) -#results.count=2000000 -#results.skip=1000000 - -#bars.minval=500 -#bars.maxval=600 - -## "[ recursion , config , loop ]" -resultsBIG <- array(dim=c(length(configs.recursion),configs.count,configs.threads*configs.loop*(results.count-results.skip)),dimnames=list(configs.recursion,configs.labels,c(1:(configs.threads*configs.loop*(results.count-results.skip))))) -for (cr in configs.recursion) { - for (cc in (1:configs.count)) { - for (cl in (1:configs.loop)) { - results_fn_temp=paste(results_fn, "-", cl, "-", cr, "-", cc, ".csv", sep="") - for (ct in (1:configs.threads)) { - results=read.csv2(results_fn_temp,nrows=(results.count-results.skip),skip=(ct-1)*results.count+results.skip,quote="",colClasses=c("NULL","numeric"),comment.char="",col.names=c("thread_id","duration_nsec"),header=FALSE) - resultsBIG[(1:length(configs.recursion))[configs.recursion==cr],cc,c(((cl-1)*configs.threads*(results.count-results.skip)+1):(cl*configs.threads*(results.count-results.skip)))] <- results[["duration_nsec"]]/(1000) - } - rm(results,results_fn_temp) - } - } -} - -pdf(output_fn, width=8, height=5, paper="special") -plot.new() -plot.window(xlim=c(min(configs.recursion)-0.5,max(configs.recursion)+0.5),ylim=c(bars.minval,bars.maxval)) -axis(1,at=configs.recursion) -axis(2) -title(xlab="Recursion Depth (Number of Executions)",ylab=expression(paste("Execution Time (",mu,"s)"))) -for (cr in configs.recursion) { - printvalues = matrix(nrow=6,ncol=configs.count,dimnames=list(c("mean","ci95%","md25%","md50%","md75%","through"),c(1:configs.count))) - for (cc in (1:configs.count)) { - printvalues["mean",cc]=mean(resultsBIG[(1:length(configs.recursion))[configs.recursion==cr],cc,c(1:(results.count-results.skip))]) - printvalues["ci95%",cc]=qnorm(0.975)*sd(resultsBIG[(1:length(configs.recursion))[configs.recursion==cr],cc,c(1:(results.count-results.skip))])/sqrt(length(resultsBIG[(1:length(configs.recursion))[configs.recursion==cr],cc,c(1:(results.count-results.skip))])) - printvalues[c("md25%","md50%","md75%"),cc]=quantile(resultsBIG[(1:length(configs.recursion))[configs.recursion==cr],cc,c(1:(results.count-results.skip))],probs=c(0.25,0.5,0.75)) - printvalues["through",cc]=((results.count-results.skip) * 1000*1000) / sum(resultsBIG[(1:length(configs.recursion))[configs.recursion==cr],cc,c(1:(results.count-results.skip))]) - } - #meanvalues - for (cc in (configs.count:2)) { - rect(cr-0.3,printvalues["mean",cc-1],cr+0.5,printvalues["mean",cc]) - } - rect(cr-0.3,0,cr+0.5,printvalues["mean",1]) - for (cc in (1:configs.count)) { - lines(c(cr+0.41,cr+0.49),c(printvalues["mean",cc]+printvalues["ci95%",cc],printvalues["mean",cc]+printvalues["ci95%",cc]),col="red") - lines(c(cr+0.45,cr+0.45),c(printvalues["mean",cc]-printvalues["ci95%",cc],printvalues["mean",cc]+printvalues["ci95%",cc]),col="red") - lines(c(cr+0.41,cr+0.49),c(printvalues["mean",cc]-printvalues["ci95%",cc],printvalues["mean",cc]-printvalues["ci95%",cc]),col="red") - } - #median - for (cc in (configs.count:2)) { - rect(cr-0.4,printvalues["md50%",cc-1],cr+0.4,printvalues["md50%",cc],col="white",border="black") - rect(cr-0.4,printvalues["md50%",cc-1],cr+0.4,printvalues["md50%",cc],angle=45,density=cc*10) - } - rect(cr-0.4,0,cr+0.4,printvalues["md50%",1],col="white",border="black") - rect(cr-0.4,0,cr+0.4,printvalues["md50%",1],angle=45,density=10) - for (cc in (1:configs.count)) { - lines(c(cr-0.39,cr-0.31),c(printvalues["md75%",cc],printvalues["md75%",cc]),col="red") - lines(c(cr-0.35,cr-0.35),c(printvalues["md25%",cc],printvalues["md75%",cc]),col="red") - lines(c(cr-0.39,cr-0.31),c(printvalues["md25%",cc],printvalues["md25%",cc]),col="red") - } - for (cc in (2:configs.count)) { - labeltext=formatC(printvalues["md50%",cc]-printvalues["md50%",cc-1],format="f",digits=1) - rect(cr-(strwidth(labeltext)*0.5),printvalues["md50%",cc]-strheight(labeltext),cr+(strwidth(labeltext)*0.5),printvalues["md50%",cc],col="white",border="black") - text(cr,printvalues["md50%",cc],labels=labeltext,cex=0.75,col="black",pos=1,offset=0.1) - } - resultstext=formatC(printvalues,format="f",digits=4,width=8) - print(resultstext) - write(paste("Recursion Depth: ", cr),file=outtxt_fn,append=TRUE) - write.table(resultstext,file=outtxt_fn,append=TRUE,quote=FALSE,sep="\t",col.names=FALSE) -} -invisible(dev.off()) diff --git a/bin/2014-icpe/r/throughput-average.r b/bin/2014-icpe/r/throughput-average.r deleted file mode 100644 index 3b7ea72fd71a019196e882b008e4a9dce33fb839..0000000000000000000000000000000000000000 --- a/bin/2014-icpe/r/throughput-average.r +++ /dev/null @@ -1,47 +0,0 @@ -#rm(list=ls(all=TRUE)) -#data_fn="tmp/" -#folder_fn="results-benchmark-binary" -#results_fn=paste(data_fn,folder_fn,"/raw",sep="") -#output_fn=paste(data_fn,folder_fn,"/results-throughput-average.pdf",sep="") - -#configs.loop=10 -#configs.recursion=c(10) -#configs.labels=c("No Probe","Deactivated Probe","Collecting Data","Writing Data") -#configs.colors=c("black","red","blue","green") -configs.count=length(configs.labels) - -## We assume same amount of data in each category -#results.count=20000000 -buckets.count=1000 -buckets.size=results.count/buckets.count - -pdf(output_fn, width=10, height=6.25, paper="special") - -for (cr in configs.recursion) { - results.ts <- array(dim=c(buckets.count,configs.count)) - if (exists("results.temp")) rm(results.temp) - for (cc in (1:configs.count)) { - results.bucket <- array(dim=c(buckets.count)) - for (cl in (1:configs.loop)) { - results_fn_temp=paste(results_fn, "-", cl, "-", cr, "-", cc, ".csv", sep="") - results=read.csv2(results_fn_temp,quote="",colClasses=c("NULL","numeric"),comment.char="",col.names=c("thread_id","duration_nsec"),nrows=results.count) - if (exists("results.temp")) { - results.temp = data.frame(results.temp,results["duration_nsec"]/(1000)) - } else { - results.temp = data.frame(results["duration_nsec"]/(1000)) - } - rm(results,results_fn_temp) - } - results = rowMeans(results.temp) - rm(results.temp) - for (ci in (1:buckets.count)) { - results.bucket[ci] <- (buckets.size * 1000*1000) / sum(results[(((ci-1)*buckets.size)+1):(ci*buckets.size)]) - } - results.ts[,cc]=ts(results.bucket,end=results.count,deltat=buckets.size) - rm(results,results.bucket) - } - ts.plot(results.ts,gpars=list(col=configs.colors,xlab="Executions")) - legend("topright",inset=c(0.01,0.01),legend=c(rev(configs.labels)),lty="solid",col=rev(configs.colors),bg="white",title="Mean throughput of ...",ncol=2) - title(main=paste("Recursion Depth: ", cr),ylab="Throughput (op/s)") -} -invisible(dev.off()) diff --git a/bin/2014-icpe/r/throughput.r b/bin/2014-icpe/r/throughput.r deleted file mode 100644 index e1f21f74cab850ed7ed7bfb811529da5349f5399..0000000000000000000000000000000000000000 --- a/bin/2014-icpe/r/throughput.r +++ /dev/null @@ -1,40 +0,0 @@ -#rm(list=ls(all=TRUE)) -#data_fn="tmp/" -#folder_fn="results-benchmark-binary" -#results_fn=paste(data_fn,folder_fn,"/raw",sep="") -#output_fn=paste(data_fn,folder_fn,"/results-throughput.pdf",sep="") - -#configs.loop=10 -#configs.recursion=c(10) -#configs.labels=c("No Probe","Deactivated Probe","Collecting Data","Writing Data") -#configs.colors=c("black","red","blue","green") -configs.count=length(configs.labels) - -## We assume same amount of data in each category -#results.count=20000000 -buckets.count=1000 -buckets.size=results.count/buckets.count - -pdf(output_fn, width=10, height=6.25, paper="special") - -for (cr in configs.recursion) { - for (cl in (1:configs.loop)) { - results.ts <- array(dim=c(buckets.count,configs.count)) - for (cc in (1:configs.count)) { - results.bucket <- array(dim=c(buckets.count)) - results_fn_temp=paste(results_fn, "-", cl, "-", cr, "-", cc, ".csv", sep="") - results=read.csv2(results_fn_temp,quote="",colClasses=c("NULL","numeric"),comment.char="",col.names=c("thread_id","duration_nsec"),nrows=results.count) - results["rt_musec"]=results["duration_nsec"]/(1000) - results$duration_nsec <- NULL - for (ci in (1:buckets.count)) { - results.bucket[ci] <- (buckets.size * 1000*1000) / sum(results[(((ci-1)*buckets.size)+1):(ci*buckets.size),"rt_musec"]) - } - results.ts[,cc]=ts(results.bucket,end=results.count,deltat=buckets.size) - rm(results,results_fn_temp,results.bucket) - } - ts.plot(results.ts,gpars=list(col=configs.colors,xlab="Executions")) - legend("topright",inset=c(0.01,0.01),legend=c(rev(configs.labels)),lty="solid",col=rev(configs.colors),bg="white",title="Mean throughput of ...",ncol=2) - title(main=paste("Iteration: ", cl, " Recursion Depth: ", cr),ylab="Throughput (op/s)") - } -} -invisible(dev.off()) diff --git a/bin/2014-icpe/r/timeseries-average.r b/bin/2014-icpe/r/timeseries-average.r deleted file mode 100644 index a12eca249da53c89a3ce4417258a33855354a4ec..0000000000000000000000000000000000000000 --- a/bin/2014-icpe/r/timeseries-average.r +++ /dev/null @@ -1,51 +0,0 @@ -#rm(list=ls(all=TRUE)) -#data_fn="tmp/" -#folder_fn="results-benchmark-binary" -#results_fn=paste(data_fn,folder_fn,"/raw",sep="") -#output_fn=paste(data_fn,folder_fn,"/results-timeseries.pdf",sep="") - -#configs.loop=10 -#configs.recursion=c(10) -#configs.labels=c("No Probe","Deactivated Probe","Collecting Data","Writing Data") -#configs.colors=c("black","red","blue","green") -configs.count=length(configs.labels) - -## We assume same amount of data in each category -#results.count=2000000 -buckets.count=1000 -buckets.size=results.count/buckets.count - -## Configure Timeseries -#tsconf.min=0 -#tsconf.max=50 - -pdf(output_fn, width=10, height=6.25, paper="special") - -for (cr in configs.recursion) { - results.ts <- array(dim=c(buckets.count,configs.count)) - if (exists("results.temp")) rm(results.temp) - for (cc in (1:configs.count)) { - results.bucket <- array(dim=c(buckets.count)) - for (cl in (1:configs.loop)) { - results_fn_temp=paste(results_fn, "-", cl, "-", cr, "-", cc, ".csv", sep="") - results=read.csv2(results_fn_temp,quote="",colClasses=c("NULL","numeric"),comment.char="",col.names=c("thread_id","duration_nsec"),nrows=results.count) - if (exists("results.temp")) { - results.temp = data.frame(results.temp,results["duration_nsec"]/(1000)) - } else { - results.temp = data.frame(results["duration_nsec"]/(1000)) - } - rm(results,results_fn_temp) - } - results = rowMeans(results.temp) - rm(results.temp) - for (ci in (1:buckets.count)) { - results.bucket[ci] <- mean(results[(((ci-1)*buckets.size)+1):(ci*buckets.size)]) - } - results.ts[,cc]=ts(results.bucket,end=results.count,deltat=buckets.size) - rm(results,results.bucket) - } - ts.plot(results.ts,gpars=list(ylim=c(tsconf.min,tsconf.max),col=configs.colors),xlab="Executions") - legend("topright",inset=c(0.01,0.01),legend=c(rev(configs.labels)),lty="solid",col=rev(configs.colors),bg="white",title="Mean execution time of ...",ncol=2) - title(main=paste("Recursion Depth: ", cr),ylab=expression(paste("Execution Time (",mu,"s)"))) -} -invisible(dev.off()) diff --git a/bin/2014-icpe/r/timeseries.r b/bin/2014-icpe/r/timeseries.r deleted file mode 100644 index 01ea156b1c511596bf20ffa4f32cb8ea21fe6bc6..0000000000000000000000000000000000000000 --- a/bin/2014-icpe/r/timeseries.r +++ /dev/null @@ -1,44 +0,0 @@ -#rm(list=ls(all=TRUE)) -#data_fn="tmp/" -#folder_fn="results-benchmark-binary" -#results_fn=paste(data_fn,folder_fn,"/raw",sep="") -#output_fn=paste(data_fn,folder_fn,"/results-timeseries.pdf",sep="") - -#configs.loop=10 -#configs.recursion=c(10) -#configs.labels=c("No Probe","Deactivated Probe","Collecting Data","Writing Data") -#configs.colors=c("black","red","blue","green") -configs.count=length(configs.labels) - -## We assume same amount of data in each category -#results.count=20000000 -buckets.count=1000 -buckets.size=results.count/buckets.count - -## Configure Timeseries -#tsconf.min=0 -#tsconf.max=50 - -pdf(output_fn, width=10, height=6.25, paper="special") - -for (cr in configs.recursion) { - for (cl in (1:configs.loop)) { - results.ts <- array(dim=c(buckets.count,configs.count)) - for (cc in (1:configs.count)) { - results.bucket <- array(dim=c(buckets.count)) - results_fn_temp=paste(results_fn, "-", cl, "-", cr, "-", cc, ".csv", sep="") - results=read.csv2(results_fn_temp,quote="",colClasses=c("NULL","numeric"),comment.char="",col.names=c("thread_id","duration_nsec"),nrows=results.count) - results["rt_musec"]=results["duration_nsec"]/(1000) - results$duration_nsec <- NULL - for (ci in (1:buckets.count)) { - results.bucket[ci] <- mean(results[(((ci-1)*buckets.size)+1):(ci*buckets.size),"rt_musec"]) - } - results.ts[,cc]=ts(results.bucket,end=results.count,deltat=buckets.size) - rm(results,results_fn_temp,results.bucket) - } - ts.plot(results.ts,gpars=list(ylim=c(tsconf.min,tsconf.max),col=configs.colors,xlab="Executions")) - legend("topright",inset=c(0.01,0.01),legend=c(rev(configs.labels)),lty="solid",col=rev(configs.colors),bg="white",title="Mean execution time of ...",ncol=2) - title(main=paste("Iteration: ", cl, " Recursion Depth: ", cr),ylab=expression(paste("Execution Time (",mu,"s)"))) - } -} -invisible(dev.off()) diff --git a/bin/r/response-time-of-chunks-of-calls.csv-30-November-2016.pdf b/bin/r/response-time-of-chunks-of-calls.csv-30-November-2016.pdf deleted file mode 100644 index 855827cf1f674b1746ab47d0535b326d790139b3..0000000000000000000000000000000000000000 --- a/bin/r/response-time-of-chunks-of-calls.csv-30-November-2016.pdf +++ /dev/null @@ -1,496 +0,0 @@ -%PDF-1.4 -%âãÏÓ\r -1 0 obj -<< -/CreationDate (D:20161130160916) -/ModDate (D:20161130160916) -/Title (R Graphics Output) -/Producer (R 3.3.1) -/Creator (R) ->> -endobj -2 0 obj -<< /Type /Catalog /Pages 3 0 R >> -endobj -7 0 obj -<< /Type /Page /Parent 3 0 R /Contents 8 0 R /Resources 4 0 R >> -endobj -8 0 obj -<< -/Length 23609 /Filter /FlateDecode ->> -stream -xœÕ½Ë²-Ùy×?O±›`ƒ‡™9ïn’!3‚t„D¨A±QK$è]EJöÛ;ÿû¸X8”v¨óE®5w^¿œsfŽÝõqüÓÇ¿|ùÿò1Î׫Ü÷ü:ûGëÏ×õ|<ç|ÏÇo¾ÿøO?~ù³Ÿþæ/ÿüã/~þåþz]×Çÿÿó¿ø?¾\_×øøï_þöï>®¿ÿrüÕû¿úrË>þú˺¿®öñ\××g|üðe=_¯ññ<íë蟂m½Kç×µ çyñþº›`“6î³¥ Åö®Û5¾îmø®±¶ìKÏÔ¥cö¯´Ü¾ÞŽã(žfxîßÕÕÒ†àÕß6Û0ÜoËO—ÿ¼8¿Þû]Ú¿öÛp\ö‡|é~ýîúz7ÝÀóö·åûýp7\²’ëë£K÷×ë]Év}¦a¿ô»Ïe(‡æÝ±[[Öã&(°Mýð}Î¥{²]†çèêò‡öõµÝöÝÛpÚæÇÒ#Çèݲ[WçyÆ×uÇÖ¦îÇð\ö‡´©G6E·wަHWãÅ=ôÃz¸÷»–îIûCík·£;îËÖJÿn—?¨û¹ö®‡{ùÒe›¯Çw¯—ýnØìè¿»[qÝïyu¼©)‡]v¬mÑ”Ã.M5_:¥åúðÙÖ”nÑ’-ÓiÎGÏI=U^<M7ðèßÝrRȇçc8ìä×3öÅm›ßv= Óp<¶7šáîºTà¹äSrPÆ4ì¶ùzi¼¸Ž®Æ-«qn9Gdél†o“²7Öm¸†nÙuGÏ‚çÚþá÷šØººÎ/.;ùõô>ïkG_/œ›ýsNÛ±ÖT“½¢g»â{Á= sN?ú·á±£é&¼l¯sãÅa×þî†Û¢÷Ý…¶cŸe8nݱô•©É9y–#ÏöûÛò½E.ŠË6êÚ_ïËÖùöÇŽ /UõÝvÖ½;XÔgû‹ª¾G¶SqÚæwYûR -·éܬmÝyÂb¿û)«þ»oÛZÙa#Xxl݄Հw|þQ¾GãnÎê@ß-ÂÛvñmÜÌ‚ÃT-¬ìro;¶_WÞ®Ia1á5ìŒ^vÌšßPÊþhÎ*Ãw·lçeûcÛ÷§éв°ûðêÎÓöÇjίåÞrÙú-UbœöÂâDáé|ìÚ]¶¿¶ZQŽÏã<ìÌðÏoõâ{[õöŽˆQþž^ÂÃNŽÖœ÷¨ëù9¼œ»)Ìö¿ÜL×¥|›?n= Ÿ{øù"'Ê´ÓÜ–?²#U·³*ò±+YxÙþ8ºþïIÊñ¾›ŸÍ—ó´óï~œ_OŠUŽžw7QÞvÅ -ϧnA¡J[>Ì•®áa74ß¾¡¶|oʾ~ÓtÙåz5V_v¿ž^Þv~Øù}/3¦+R¸Ûú®í¬ÎœbRáÒ”ý1œ»ív9/»^üøõ滚çvVq^".ãå7mÿ¹äD¼{G¸YÇÁ¶çåiç‡ïËÇöÇe|›>o»ÕOÛßÚ>Öy²óý½»¿+"Ûk×ËË¢ÐvÅú<ÒË’ÏÛùñž8"Ñw¹]ŠEöǼýüÐýñ˜ÛŽŸùæÑ£ëËݤþ÷‡©ô¶Îp·óY»7«Áñ}¦Ùô¶{©°êtX¿KØ}:íï-ëKN» -»OO,ŸvG±ãÿ²w'í||Þë}ëöÎí,>}ÿÓ–ó‘>ŲÎÚýëR†_VŸ^ñ÷Žùtùþ{wìmç‡ßËÃö‡ý½—÷cÇK¿o¢®ãÝnóiw?¶Û|zâûøô¶Ž½q¿àüi*Ù?vþ¶f>vkVŸvëèOëÛþ}ù˜?º-ïâSõëí<nOWŸ¾—ù¿ õi‹óõåa矯ϰ~æ OëhÞ¾ÿ_Ÿ>Î{Tàn+úšv=¾Ü¯m×ÃËûÒëÏ×o›Oo9íµ¿™Û¿Å§ê7=¿Û‘ÏÛ}ñ²øôÕ®/í^e7òî—ìø{,9í_ÑÝïh̶ïå×§wß~¿yYû·ß»öìïÙü|íz!Èß·ûÛËGÚ×ÓVø‘ãùùÇ|:¬‡,üúô]þ¬p“—ã7¶³÷?ýóM|*íÛý½wóiø¬«xïy¹_~Å&ëg×{r e¹ÝŸúˆ^¨vÿ„ú®Oñ©ì»_¼ÜlÛñîz eý·µ¿Ô§ÒþvŸ>>¦ž¶¿w°øô]n×ßû‡Ä§ÂÛy^Úžïß->•í·ãßúô]nýŸ—ßûwlϱɟ±í—œX÷~|_~}*ë?Žó+=¾ÚþÛÐ=pù-"ÔÕ¸œ—ß¿ìóœXz>ßÎÝ×÷8¯fëkŸoæÓÇ÷çËï…%˯àytÙù7ºùtÅç»úôí–Ì`ñé³¼ùòëÓ:þï†?~~çqà|zã¬ã7¦ì¸:ÞCE%ëãûsŠOï©£á%NÖÏî7/¿>•Ã`ý›—·í»ß¼ÿ¸›^æ›—»íóëËâÓæãkùÃâÓ>l@"Üm}ð²øT“¶/;Rî·Ñ¿’ Ÿzüu~Â7Tþcýiè=ÿ†-tÃoØþy›O»ûüå3Ô'ÇþÞ#>•ÝbçßË>l·ãùò‘ë%îwþé»ÿlû^~}*±þÚÔyiÏ®‡©ƒIYMóÕËÝǘÓyßàŸ9ħ²~v|^î]÷w¿œÅ§ïr»Í©>+öߟêníÎë†ëqê…ïàfûÃ×g©OÓ7sYÿtúýcnõ©ø÷vŸ¦o^>Ö~7>êÓúû*n½lççóº¤#%ëcçûËã_-½åzÑÑá½tD}؜ŧïùvbùÂý±õiï±\' -d¹Ýï–ÎP蜇-oêS¹ìogñ©|~9«O›œæÂÝú§;þ^ŸBû]}šþY:ç¡—ý½!^NS»Ÿ,“^¶ÝY|:›w׌þ©]2Í6áz•y¶ß·ã%m¶?|-õé‰þËËÛ§øìûÛ|:ŠÅ§r_ÎË®G_~̧Ëû¿/w»ßúþ<áSë/ìK|ªë³Å§Ã§ë„Õ§±ö-Bµs97kÿγÃù$ónvül{eâm«oVð°ým×óËç†ñçnæÓ¸^¶ŠO–ëT¤°øôívØù/Óo?ßÕ§y?xY}:ÝO{„O}ý†ø´Î™ƒ[Ðß‘I¸c×ÓqŸŸ°–ñþ£Ý<á¥>ï/õ©ôWgñé{=\ñùcýß¾>ÍóëW]/‹OvÃ…ùtÄþ?r"—Ï^>¶?¬ÿð~ñAßIC úç2ŸÆñ”I¹÷³£âûßËîSëoÇ|Ú}¼õ²úôöþÇy̧1þ”©¹ß·ù™›;º~¾>Íú§ÃýsºõO·^n¶¾¾}ÚQ¬ûLÐIû—ïÏ£c¹ßš¤#òØö^ÎÚ? ¿*ùT"®'™¦³þ’ÿ½¥>í>±.<°ó²OÚøS¦ê¬ÿáû{[ÿ´Ëxÿ ‰(ñz|¹Óñ;Ñ?Õû«NLM]íÏ {ÿTçÔ…ôuàõTÿË'‚òþª¥QýqèeÿR;ƧæVuEn½_ó±™ènë×Ô§áO¨ù Ëü©1[ïw¾¾]}Ú}þN;6¾íÝy[첿?l¼Ùñщ;óé,>•ûýRžêS9nçnþH^ýû9ÂK}úÞÿÆãÜì~{ÝÎÓÆŸÍÖOžÚmÙÎâÓ¸_ê„vÿðn¬ñþÔ´ê³µÂâӸߋOÃïÒñ}ZÝ?…œÏúØfÖù&CïŸêù$,>>žÞv?Ôû×sëÀ+ûËÂÝæ›ìxÜù4Η[oÜzþ‹Oû±û¹ð²ëeØútó)p³ë{tgï˰ör>à™èjwõ¯}â1ý¡aæßS}ý]á±k| |lüéíð©_·®|_WDûgö÷¶ùô¶û—p·ù»~îm>õùÃç>æS ÷×§Ì×Íò‘\8—çl¹Ì×Ù|¤ö…<b{ž;|ª¾ŸÆøNxâþù:èéÀõªû³ð|ê~*|:œ¿O3ŸÞæC}âºôøŒá¼¿twõiôÏ„^/òô³ëü…ùEæë¦Žíú~ôÁ…j¥9Kÿô¬Xßi>ÍíŸæÓÛçËkÔøÆ;Âå+H -kÿt[ÿK&â®§|s½Æ'ÂâÓ~ÅúmëŸÆù-óu6_xßÎÓü1c¹Ž÷{Þ ¡>Þ·óAæëfõ_„ŧò¼Ì>[ÿ4üñ²>…Zî«v‡Omÿ·Çú§qýÈ|ݬñ”ð²þ¯©Oó|}Ù}ªó¡Â«ÃþnÝú§>!ÜVõ'„§]ßv?hÃ|êý]áöÀùû2ù´ ëŸÎØžiýÓðŸÌ×ÙøÙ÷ß4Ÿúó¨§èŸúö/óéãçƒÌ×Íêo>2_óoÂâÓsl~Qx?p¾¿"SŸŽXŸ£ýÓ÷þ§ýEañ©Ìëçe¾Îü¡ýuaõé¶ùáóMÏ;pŸ¾~°ý#óu¶§ß1Þ·ë·ß1jçW̧þ¢„ð´g©vÿ{ùŒšoxd¾Îú7þ÷›÷}ü |ìüðïwóiÿ—‡½NpÅr÷©·7b¼Ÿ¬ãýËæ£„Õ§Oìi>ë±OëŸëOëü©?…}d¾nWÿJ¸YÏ®?Ù‘æëÇþž(Õàrn£úçÂsÂù&e»Æ#O?æÓðëËÞ?õõÕ‰ÝºÞÆeó§q~KŽ?„}þÔöçûÁÇÆ[:Æþ©°ÎŸÆù+óu³æo…»/t~]ØÇû¶¤#~Ãù,+Þ %>à|ÝžãûË3Âm×xBX}:¼?5ôA‘ÜÆž`ñ©œFÁÓî_æwé˜/ÿ³óQÄã[áyÃù>¦÷Ã'2PêÞ-7ŸÚihìã}ßÞm> KÇå†þšlXÓûõ‡äÆ1pûŽì¨êo}ð§ÓâÚžˆý‚óU.ܧæ„էѵº´gç›uäêþ-ÂúÓMÿ+²ËÆŸvüçÃýÓ©¯hëvöùSëÊŽßàW™¯Ãûùl1jý™õç ÓÙÇûv?:ðÍù‚gŽxe>œÃžG-¿^öçQ6^™Ó|ê/h÷QóÂâSñíÏe>]ö<A¸ßÚòí]êÓ˜ïzæŽþ©]_2_7õ|´þ¨Ì×Ù󢵜µo×ç<6Þ÷÷ „}þÔÿþ1ŸÆù#óuK×Ç–Ë|÷׃v_·ùÔç„ݧ¶^Þú£K4ÈúÛýu=1Þ·ëãåþXÍ|êómÂÝÚ·í•ù:›ÿ0_®nýÓèïË|Ì -¯úïkXÿ4ÆŸ/»Oýï mÎÿ›o2_®iÏ÷/ï?¿¬ó§1~{ù¸ï¬ýe>ñÉZæÓ¸žd¾Îî‡vþ¬ýS;?—NôHÿÊÎÿ—uþtÄñщÎ{Äù/óu|-óuvÿ²ã·¯ð©ß[tûc#cŸ?µþÌ×-8_d¾nëñ·þÝËë‚ûá~l¼×ïÖê}b¼½ëŸ.›ïöñ¾í™¯³óyÞÎï?ôyK°øTZû]}Ï…Ç„ñªÌ×mðçÖŽ˜LZÿãåq×ó;a?õùãgkÇ(çÇ…ûÂÏO{㽽̧Óç#ö²þiŒ_öŠñ¾ÝoöŽùS;^[´ë°êqžúßû˜Oýù°ú4ÎÇ—¥ºÃ72_7áïÉ|ÎלËÞ—ê¾=/ËûR¿óœÛú§ÍÿÞËž' -ïUóÇÏщþØÏxØõbÇ÷ey_êÞÞŸ:úêbί -wܧÙóýfóyÌ×/ˆæûRÂëûÅéÓã¬ó§þácÂéóçàþ™æÓðÉ™6Þ¿ü~÷òÁñ—Í-çaíÛñyÙû§6þµn>®Ÿ—7íïcãýèÏÈ|½ßåûó¨O»÷Ûuå󍿬ïK]Öÿ^6_sìó·õOÛ¿Â ž‡ -¯»ÆÍÞ%Îñn³—‰eýüóOøTûãÂ>Þ÷ö›=Úö~€ð|ê~.¬ãýÇ|ÑÞõÕŸöùÓËñyT³{t ;ßz{Ãú§~¾5{UïÓÙß—šÛYÞG‹ùÓ&/¶Üåáîïw çe÷C_¿m>½¢½m>u -ûüé´ÏŸxu.çÖkþHØ_6õãyl¼ïÏwšÌ×ÙxÎö·‰4Ï/áóÔý¯É‹6~Ññ³°ûÔŽç}çó([þèûßG›z‚}¼ïO_TÏþ’p·ëå^»Æ×íî1Þ·ýõ²ø´·ø~WŸvï´{èóý{Ûý[¸Yÿ׎×=̧ù÷gΟ6g|Õ,/ó¿ÂÇžW.[¾¢:ƒ'íeã}ÿ¥½+æã};ßD„0_(¼îßc>=±>ÇžGÍØÞcó§õÚ{ãðùSkïщñÛ^»5^ð¾C“ùºçÿËÝž'žX¾žo6y[¾×ýU¸Áü·°÷O‡ý=Í6Èõb>’3íyƒmߣ՜>Ð_jæò~"<6øB^Œ„çÙííùx?Σóò=pù4ŸöØ_Óú§ÍÞïÞwõGÛ£y€:žeãýUËímïŸzÿZ¸ûûFÓyÙøè¶ýsìù~œ/»Ogwž®§GÄg±µËÞ—òþ‰ðÄýñò±4I³ÏßÑ?ÕþŽ°ÎŸÆý¢Ý6Þ÷ùèÖ{¾ïã?áaó vþ½¼{õ[kñ|_ïwÂ}×ü†ð¦õíñ<êçîÉŠå¼FõZÓSjÿË|݆ë¯|¾oËg¾Ü:þ½Ï£Ì_M'u>ÝþÞ²ñ¾ß…ç çÏËÚ?õþtkÛÆûÓÞ/Ö÷OŸ8^:ñ+Óvæë¦/>æøYx@]Ø}jþï—ùÔ“ ÂÒ?þ°ðÚpþ¿e×O¿íýS?Xxõš/’ Ô5à~ÔŸïkGØß—²ó·7ó©Ÿ„›õ?f,Ÿ|Þ›ù4|#óuüÕ»ùÔûÏÂ>Þ·ãÛ‡÷ýý"aeç[æÓ8ûŸÚñëÓžGEÁæüTëÚ‘Îñ©p·ëÅŽG×hSζnÙ¦ÛŸÿ -wx~&ìó§¾=K‹ùlaõiôú±ùÓÛæóÛмD¾'ìïŸj–ªÙƒæœ?>|1nóiœOã¶ñþ¶ñ¼ð¹à~9óiÜ߯ýSÛ?ã1Ÿúøº™Èêþ24ìTþ-žGuk¿Çûæáy'ÿSXßçþ½ÈRþš—È÷'š=ØÊùý6¦õOÃGcÆû§v3ú§v~i>þáXñþ©Ý?Ç2ŸÆõ$'V¯ùë64û¤çËrVŸv??‡¦Ÿôµûü±çûþ¾°¿Ö¦óîõ|°ÍËÆûáçyÙóý8?¦æ%òùv³C]ŸÓRPéy›Oã~+‰¥ý_»^æc>õù[aŸ?µõÍžG]îy±©Ãýk6{_ÊßÇi6ÐåæS{‘QŸ_çyChj^B¿oë7âù¾ùzj°F_Kyœ7žSó9Ÿ)ìýÓËŧñ¼½Íe> É|Ý‚þÆ\æSŸªM]ï ÷ú“sçxßö÷‰ñ¾ÿýÏ£ætž®¿uÅxßÎÿuÙûÑ?_Wøô‰ÏËûüϲù‡&óuö>¤¿Kó9_(ïKéú/ËG]ËÇ_ËóQþ|BxûxÜÚoö|ßß_ž÷8Îø<ªnýÓ8_W·ùÓðýêö|ߟçµ5¬ã“—ßÙ/UXßGëî‹5íyT\ßkÚó¨¸Ë|_ß¶ÿ,/‘ãÙµìýÓ8_ÖŠçû擵¬züþ-óuþþßå<vÍg ûxßÎÿåù(^&<l¾Ð|±ŽùÔŸ¯´}ÅûR¶|_áSûûû¢ùÓ¶5/‘ó5ÂžÏ ¯ çó~̧ÍÏÏý„OÍÇû1Ÿúû†m·èŸ®à6`<#óu|¸[ôOíxïÏ÷×tö÷ùÍ/[7<ßOoÛòQÈúþiød[>꺼ÿº§õOc¼º§½ýÃ=ã}~;>{Ñü©pÇñí¶¼DŸmù¨«{ÿl{>Êó`ÂÏ™¯³õÕù„ŸÁXùár‹KšåÝí¿#3jñq]:>">®ññæ¤,>®Á™þñq]ZñqmYÓ6¼Êïj·ÂW#âãÚ”&ѯÙI‹ëwçGÄǵeÙSצúGÄÇ+>^ßÕxP³u²šKÜâãwdf,>®I þññZgë`µÛNp‹ß‘±ø¸âþˆøxíIMñå:[|\q}D|<7Áâãú‡t©ÆÇU”Ï¿kññBëUÅJZ|qûŽÕ–K•«a=ªlÊP±EÏjññ<‚Ï#hñqD™ëk—ÝK=>Þ|êØâãy|->®ßõ4ùô–ÇGÄÇïæ±"‹ç´øømcш×wÅâãµÛÕnÐY|<Ïg‹WËÖ{Ц,>®KÏGÄÇóZ|<÷³ÅÇó¼òøxì‹çßµøxî ‹çkññ<(Ï-²øxîX‹çZ|\pT|\ÿÐüˆøx^8Ï3ÇâãµEÖWŠËÊâãµ ¯¥ÚQªÕ°~RsO[|\¯Áû#âãy|->žç•ÅÇ«eë"ÅUfññTÅÇëT_ÿˆøxîgç!ôøxþ)çšx|<wÇÇó@y|<÷‰ÇÇóPy|<·Ûããw”²ðø8üý–œÎ¡Á἟ºz=>žÇÓãã¹ù‡õáBoφC±3=>íOÒ¡ÇÇiù\¸¾3hûo…-.kñq列ŸQW˜ÇÇótõø8´·Ó‹¶='Ę<¶gÝ£ð™ÇÇó,õøxmÅÇóÊóøxmŸÅÇëøY|\ÙâÙÖ=Ê¿oññZ?‹ëùñp—dÆÃÝ’þ÷Zh2ãäáI㢴ãcñqØžª¼ >Ÿ!K°¥]‡ö¦ù2?oÝ£<¿,>žvÄÇï‡öwHÓâOµ{|öÏIo.ç¶q}Ž™3>ïññ¼,>^ç—ÅÇëü·øxo¯ýgññ:¯ãåññúþ -µx‡ÅÇëøY|\χéìÅøxùÅâ㵿->Û×ͤ¹=#Tj~°ø¸.¿½Ù >žw-ÃþšÙ•4^áS»ž,>ß_áÓâãu}Y|¼|`ñqݯïŸìRF\Ü}šË7ÜW=>^ç»ÅÇëóoþz¾ïøº^Û>õøõ]KÛ~çùmññZ?Û[¯Ÿ×ííÎmÂñ²øx‹×þòøxmOÏ>æåLûþŸîàðérŸÚò™>ÝÎáÓî¼ÑO¯ëÃâãu¿óøxïNŸc3âã-â2—Ãqrïr^ÁâÓ'â4|xññǧ×">Ž,>}ŽoÇÇŸŒ/[|üÙ¾ÿ=>þl?_<>þ_‹C{|:.âãõy}oU9–‹Oký47ªË‡s÷õ½—·oñj‹×úZ|—¯ëoñq»Ì>3>ŽË×…ëgññj_çItùqžƒ?lx^ããÂ-ââÓ÷7ÆÇ‹->^ëgñqä½áóÏõóøxîçþ÷øxî_çö{|<Ï'çöy|<÷¯ÇÇëó:寧¿œÅ§y|=>^lññj_ããÂæ‹«·ó™ø÷,>Ž<l_¯í³øxžïGÞ·ÏâãöÔñ3ããõy‹×öZ|¼ÖGããð}ëù`Ë->þlëy|¼Ž§ÅÇ“=>žÛçññ<ÞÏóÃâãu>z|¼ÚÓ÷òê|ðøx®ÇÇóü±ø¸òr>þ}‹çþñø8.ßö¯ÇÇk}4>®ÇÿqÞ¾¾¿iX|<÷·ÇÇëï[|¼ö‡ÅÇ«½>õ¸»ÅÇk{Wúô8O<ÿ<>^¼Ó§Ãyâõíññô¥ÇÇkÿœôé弬ÇÇs}<>ž~°ø¸^/Æwút9÷ ןÇÇ«=‹[ -æ3ãã¸|¡ÿ=>^Ë->žÛçññǧ÷">^ßïéSŒçñ÷øxmŸÅÇózöøxúÃããµÜâãy~{|<Ïçññøxí‹çñ°ø8lŸÅÇóøy|¼¾¿Ó§ö÷Oú4Ø}j×›ÇÇóûÏëÝãã¹þÏï{|<·Çããy~z|¼¾§Oíï=éÓá> >7Üÿ<>^í[|<‡ÇÇŸˆë{|¼>oññÜ¿¯å#}z9w¼=>^ë;çããÈËÎ?ëz|<ϧ¯=>^ëcññ<=>^ûÛâãµ?->^ÛgññZnññ:~'}qqò©ÇÇs}=>žëçñqäŽç³ÇÇóøx|¼ÚÒ§Á}çñqä†ý‹×ùáññj¯sÿÔããÈÏ?§?<>^¤O1>žÇÃããõ÷göO-ž¾Ò§Óy`ÿÆÞó¯óßããµ|³O->®çWÄÃojÿ¤OçÇ/âã±þ¿ññ8þ¯Ï[|<¶7âãñ÷">ëëññôKÄÇãüðø8pËþér³îŸ¯¿×Ó§·sø´9‡Oíóƒú§¯íéS[_‹×þ³øx\o¯ö->^íY|¼>¿Ì§~¿Œøxmï&ŸF|¼Ög§O1>^ÇÏâã¸<ú§7¾¨ññü{Ïõóøx-¿Ó§·søÔ>oññúü“ýÓˆ—‡O-ÞÝȧë3âãy¼=>ŽÜ&n_7Ÿ§y|¼ÖoPÿ4âãÕÞHŸb|¼ö׌þ©ŽÇ«<>^Ÿ·øx×öZ|¼–ïèŸ&‡O#.ŽýÓˆ#‡O-n}¥O/çæþxœÃ§öù;}zœžÏÏýíññú¼ÅÇ«=‹çöx|<îG¯å-}ñòÇÏããÈÏ‹ëñ±¸öˆþéqñãˆçõåññÜßÇåÏG3âãyþ{|¼¶g§O»sÃëåÙáÓËžÖqÖí9Îóæå÷‡ÇÇóïy|<×ßããy¼ÚMýSÓò ý±ˆWûOú4–‡O#.>½;žÏ¯õëéÓˆ“7ô‡ÇÇëï ö©ÇǑçÇùLl¦OoçqpýfúÔ¾¿Ò§ÍyæþðøxÞ/<>^ûw§O1>^ë²ËôÇ">žç£ÇÇsû<>žëãññ<<>žÛçññÜ߯ûƒÇÇ«½'Æûv½y|¼þ~KŸF\<Æû·sôOýž>ΟÇÇó|ñøx}¤Oƒ7Þ=>ž>òøxí‹×þ´ø8rôOçuc{;ÆûÏtn´?vú´;»O->íññ¼ßx|<Ï/'{|<·ÏããÙ¾ÇÇsÿy|<Ï?çö{|<—ÇÇsý=>^í?Ñ?õï·ìŸ6çãˆçñ±øx]¯¿×Ó§öùã}‹“z|<‡ÇÇóü²øxõG<>^ëgññú{“ÆûÏãïññú{+û§¯Ïïœ?=Î8ÞøxíO‹W{'}jñâ+}ºœqþ4âãy>y|<××ãã1_ññjÿIŸb|<÷‡Åǵ¿Ÿ?x½x|<·Çãã¹=¯õï4Þøxž¯åƒ}jññœß‰øxúÁããõ÷gú4–ûü©ÇËWút;wŸÏ‹89õO=>^Û»¹jñqõAÄÉç'ŸZ|œ–\_‹ëñ»^/ÏýëñqäãψçþõøxúÌããõý‡û§Ïëßâã°>-û§¶þ=}z9ãx?âãy>y|¼Öo¤OƒçbÆùS×õïññ¼><>^Û·Ò§¯õ[éÓˆ‡?è;×þÙ9jqü“>mÎï·¯í÷øxþ}çùâññ<žÏíñøxúÁããõý'û§Ó¹áýÅããÕÞ“>5néÓãýÓí|ð~ëññÚžž>Åøx^?ÏëÝãã¹->^>õøxµ?Ó§±|¡?<>^Û»x¼ïññúüæñ¾ÅÇËO?x|¼þþIŸçIíŸìŸZüø¢ùS×ö[|<ç#>žÇÃããÙ¾ÇÇ‹Ÿï7çqáß{§ֿóøx/#‡Omýzúôqî7/_Ø¿ñøxýý‘>]ÎÑ? >x=z|<¯Wû3}jë³Â§ÆÇkÿô©Å×wúô8Ú›ÇûÏëÍããµý'ú§;âá7\Ïþ`ÄÇãþññ¸^">û'âãÅ÷#>ëññ¸^#>û3âã±=¯ï·ô©Å±;=Šøxm_'Ÿz|\ÏçÛÇûNÄëgŽ÷ç÷ëýÒ>¿Ò§souýF|¼–ïôiwnàëˆÇùññ8ß#>^ûûäó¨á|àþññðYÄdz}‡ï#>žÇßããÕÞã}‹?[|<÷¿ÅÇó|Œøxý½–ó§s_¸~žïG|<ÏOçþôøxµ7ây”ÅQ=>žçƒÇÇk}fú4ââø|?â㹿=>^ë·Ò§Ëy^ØÞÊþ©ñ¦ùÓˆWû;}jûïÐüiÄÇóúñøx¶ïññlßããùyÇý4âãõý›ÆûÏíóø8r<º'ž¯ãáññj¿eÿ4–Ÿí[¾!·ÇÇóøy|<÷ÇÇó|ðøxµ?Ò§ÇçQ¯ý1©ññúüÊñþãŒó§‡ýma‡<ÞϦñ~ÄÇkûOú4âäsÁõúœìŸZ\ùÊçQÛ™|j/ŽÕ÷ÛMó§Ïõi7÷#>žëãññ\_çùçññܯï[ú¡Ö¿§O!>N¼h}Gút:·ÍËɧ¯Ï[|<ýâññÚž™ýS[ÿ•ýÓé<i,š?øx}Ûû§WÄÃwøÔâ˜Oÿz|¼ŽÇIŸZù¢ñ~ÄÇóóÏëßãã¹þ¯óÓãã¹?<>žÛãññúþCïKE|¼þ^ËþipøôqŽñ~ÄßÛ×Ó§ËùÜØžEšrÿz|<ÏÏôérx~x|¼–/š?øxµ·bþÔ÷÷Îþi0ùÔããõý“>Îmâöô©Å§-/‘Ÿ÷øxÞ¯<>žýçß÷øxúÊããy½x|<÷§ÇÇsÿx|<×Ïããy¾z|<¯ÇÇëó-çO½žïO@|¼î×í³å#ú§;âäöÇÈþ©Åµgút;SÿÔããõý™>µå+û§Çåñ<Êx³O=>žý;×ñ:4Þøø“qþ“Ï÷-n|åx9w\_g{ÏëÑããy|=>žÇÇãã¹½ÏóÛããõ÷[úô87ôÇÇñóûcÏóÑããõùžïOX{#û§çQ/þiÄÅ©jñqZŽÏ£">ž>òø8._·w‡OwÄÉ;úÃããõý“> Æ÷¥">ž×“ÇÇs}<>žßããù}‹çüÇÇõý숋c^"âã‘ðøxæi<>žï»{|<ß7øx¤S=>ŸoôþiÄÇóxy|<÷—ÇÇkûFöO·³”‹»¿~Vå%"îïó[ÙããíŠx·ÅÇ[”ñøøs"¾¾Â§Ç_1Þß/'Ÿz|<¯7×öììŸF\ü¡ýqÒ§/ÇùÓˆçrçùáññ¼_{|<ýéññ¼~=>ž>òøx®¯ÇÇëï?éÓˆƒ_Ø_÷øx^O¯ï·ô©µßÓ§ÛybÉâã9?äññÛºÁŸÏû«ÅÇ¡ýIÏ÷#>^ë3³jo¥OƒÃ§Á›Öw§O‡s§ö7ûÔããqü">Ž¿Pñq;í3>WÁªN—ã„>¹ÇÇŸmÍVõ¸|)`=>žXÃ+ÇqñaµÇDZ«åññÄêh9Ž‹pãJ.ê,îdENðø8 ލw°Võ¯ññ´ÇÇ´ìñqÀÙ¬¤ÇÇqÞÏãã‰Íúy|çüvu©û!ÜØrÏñ©cï„WrÐÍÞãã€þèD§Æö¤™¾=éÅsâk=›{Q»:QŽ[Þ9Åç8!Hw—ñõHžì<é•rr¬KñUsâ@ôT¿Iñ¡×ÌÏCOINuš¹ÏäñqÀ9®d§ç#§†GŽ[ÎÎ’mïȹ<_ŠC#âƒæSý$Å•ÃNÇ> ±“t²ˆ˜=>žxH}çúÎ!õE|åñqdÔ_ÄÇ‘ÇaFF|ññâFŒø8ò¦õåáPÄÇ‘ïà×ɯA2Œøxñ$F|y.æCí/RbÄÇ‘ï&+F|™^'÷ø8òhÌϹ/rcÄÇãŒøx-¿IGFAF|ññâF’Œø8òœÌ‡Úï$ʈ#j+#>޼i}'é2âãÈ›öÇâ×ÉïêS<ÇããÈϹ7i3âãÈm3/èÛD|Ýñqd´gÄÇëû7ù3âãÅO7ƒQ¡/n$ш#oZßNø8ò¢ö©4âãȋڟdÓˆ#“O=>ŽL>õø8ò™¸?7½N.ÿ ŸÊ?höésاÏaŸz|™|êññâ›}êñqdò©ÇǑɧ/nìS#ÏÍL>õø82ùÔããŃ}êñqdò©ÇǑɧ/^ìS#“O=>ŽL>õøxô!!>Þ#N¯“ÇròiÅÇíüªøxòœÌîÓñðv1χùPûOø4Ù}š¼ÑóîÈz ^Ô~ÆÇ“{c^´¾On›™|ZññäÖ˜ç`&ŸF|<—g|<ùPû‡z¤OÞ¸¾O7óÆõø8pŸÌ‹Ú§Éýa^Ô~Ÿ&·Å<i};Í3><;3ù´âãÉã0ÚOƒySû+|š<.æMë›ññä>˜í>Mî7óÂö#>Ü&óÜÌÛ¯øxòlÌ×7âãÀc3ÜOySûO¦þiÅÇ3>žÜ;ó¢õÍøxr;Ì‹Ú_ìÓŠ'“O+>î¼Ù§O&ŸV|<™|ññàŠ'“O#>ž|³O+>žL>…øxs&ŸF|<¹±O#>L>ø80ù4âãÀ÷GÅÇ“çÍL>ø80ù´âã΋}ñq`òiÅǓɧw>ìÓŠ'“O#>L>ø¸sÆÇ“ɧO&ŸV|<™|ññäÆ>ø80ù´âãÉäÓŠ;öiÅǓɧO&ŸF|<y±O#>L>ø¸ófŸV|<™|ZññdòéŽÛòŠ'“O+>žL>øxòÃ>øx2ù´âãÉäÓˆ'wöiÅǓɧwìÓŠ'Óx¿âã¾|²O+>î¼Ø§O&ŸV|<™|ññäÃýÓŠ'£O!>žŒ>…ø¸óM>…øxòÌèÓŒ£O3>žÜȧ޴¾|šñqàMë;ȧO^Ôþ$Ÿf|xÑú.òiÆÇ'ï&ŸB|<yvæCë{ȧOFŸB|<}šññä›|šñq`ô)ÄÇ“û`FŸB|<¹ßÌ‹ÚïäSˆ'ÏÍ|¨ýA>…øxò¡õäÓŒ» >þXÜ|‘O3>žŸ_äÓŒ÷üi}ùâãÉèSˆ'£O3>ž|“O!>ž<'ó¡öòiÆÇ®oÄÇѧwîäSˆ'ojO3>¼¨ýI>…øx2ù4âãÀäÓŠ;oöé“ññdò©œ8´?ûô9ìÓç°O+>žL>øxòÍ>ø80ù´âãÉäÓŠ;7öiÅǓɧO&ŸV|Üy°O+>žüâã¾|²O+>žL>øx2ù´âãΛ}ñq`òiÅǓɧ7Žø80ù´âãÎ7û´âãÉäÓˆ'?ìÓˆ“O+>ž<63Ž÷!>ž<:3Ås*>îËû´âãΓ}ñq`òiÄÇɧwÞìÓŠ'“O+>î|اO&ŸV|<™|Zñqç›}ñq`òiÅǓɧOnìÓŠ'“O#>L>ø¸ó`ŸV|<™|ññäÉ>øx2ù4âãÀäÓŠ;oöiÅǓɧOî‹™|ZññdòiÅÇoöiÅÇÿRñq_þ°O+>žLýÓˆ'7öiÅǓɧO&ŸV|Üy°O#>L>øx2ù4âãÉ‹}ñq`òiÅǓɧ&ŸV|<™|Zñq㈓O+>î|³O#>LýÓŠ'ãó¨ŒçòÆ>øx2ù4âãÀäÓˆ'öiÅÇ“çb&ŸF|<ײO+>î¼Ø§O&ŸV|<™|ññäÃ>øx2ù´âãÉäÓˆ'ßô†ÄÇs9ù´âãÉäÓŠ'“O+>žL>ø¸sgŸV|<™|ñq`òiÄÇ“'û´âãÉäÓŠ'“O#>ž¼Ù§&ŸV|<™|ñq`òiÅǓɧOþñqXN>øx2ù4âãÙ^cŸV|<™|ñq`òiÅÇû´âãÉäÓŠ;OöiÅǓɧ&ŸV|Üy³O+>žL>øx2ù´âãºâãÉø|?ãã¹ü&ŸB|<yQûùâãÉèÓŒ'7êŸB|<} -ññ䱘7ï ŸB|<ù÷ÆÇsÿLòiÆÇ“ù4ããÀ‹Ö7ããÉm3/jÿO!>ž<3ú4ããÀèÓŒÇöV|Ü—ßäÓŒ'?ôþDÆÇѧî‹yQû| -ññäEë;ȧ?ΓöÇ$Ÿf|øÄÇ}ù"ŸB|<ùPû›ú§OÞ´?ù4ããÀØ?…øx2ú4ããÉ7ùâãÉ‹ÚȧFŸf|¸ÝÌèSˆ;wò)ÄÇ“µ?ȧÞÔþ$ŸB|<™|ZññdòiÅÇ}ùfŸ>vH&ŸV|<™|úöiÅÇ+>žL>øxòÍ>øx2ù´âãÉøþ)ÄÇ}y£þ)ÄǓɧO&ŸF|<y°O#>žë3اO&ŸV|<™|ZññdòiÅÇ7ûÔããµ~›}ZññdòiÅÇ+>žL>øxòÍ>ø80ù´âãÉm1“O#>L>øx2ù´âãÉäÓŠ;s¤ â㹜|ZññdòiÅÇû´âãÉäÓ¾Ù§O&ŸV|<™|ññàŠ'ãû§oÎäÓq³OÇÍ>œs‚ø¸/اwnìÓŠ'“O+>žÜ;3ù´âãÉäÓŠ;OöiÅǓɧw^ìÓŠ'“OÇfŸV|<™|Zññäјɧ“PO&ŸÎ›}:oöiÅÇöiÅǓɧO&ŸV|<™|:;û´âãɇ֗Q&ŸV|<™|ZñqçÅ>øx2ù´âãÉäÓŠ;öiÅǓɧÆ÷' >žL>õø82æ%">^Ìù¨ˆ#S9ŽÅù¨ˆ#“O#>L>ø¸ó`ŸZ|ÚÏø¸•רøx²ÇÇý×Ä3>~ã¯W{œ‚ø¸ÿýÅ>øx2ù´âã·}ZññdòiÅǓɧO¾Ù§O&ŸV|<™|ZñqçÆ>Ý}ZññdòiÅǓɧOìÓ=اwžìÓŠ'“O+>žL>ø¸ófŸV|<™|Zñqeþõñß/ùOÅÇ—5ˆøx¡:"ЇX…Úã*TAª}xU8¡Ê!ÐûZ…cnlÙ;Z…ã"ܸ’/ìƒpáJz«°_„[öþUa›„sh9âã…³XɈŽMx`%#>^8áÆ–½KUØáÆ–=>^Ø;á•ôÁSa;„7ß{R…mÎIxpó½U8ƒ-{ªp,Â+éã¥ÂñnØüˆöE¸ åˆöF¸`%#>^Ø6á‚•Œøxak„s\Iï/΋ð`ËÞY*“pcË/7áÆ•ônRaŸ„7ßûH…ý!\Øò!õE|¼Õ—ñq`”_ÆÇQ‡ ˜ñq`t`ÆÇ“Y0ããÀ›Ö·“3>¼h}¹0ããÀ‹ÚŸ¤ÃŒÏÅ|¨ýEJÌø8ð¡õÝdÅŒZßCbÌø80ª1ããÀ(ÇŒ'ߤnj£ 3>Ü3:2ããÀm0ÏÉ|¨ýN¢Ìø8ð¡ö¹2ããÀ›Öw’.3>¼i,2fÆÇµ¿Iš^´¾‡¼™ñq`4gÆÇÑF{f|x^̇ÚÈ Þ¸¾F‹f|<¹“G3>¼¨ýA*Íø8ð¢ö'Ù4ããÀäÓg±OŸÅ>}ûôYìÓÇããÀäÓg³O#>L>øxpÄÇɧO¾Ù§&ŸF|˜|ññäÆ>ø8ðÜÌäÓˆ“O#>ž<ا&ŸF|˜|ññäÅ>ø80ù4âãÀäÓˆ'Ÿ¨¦›qq¼l¿fññõ[ññø~ÄÇɧO¾Ù§&ŸF|˜|ññäÆ>ø80ù4âãÀäÓˆ'öiÄÇɧ&ŸF|<y±O#>L>øxòfŸF|˜|ñq`òiÄǃ#>L>øxòÍ>ø80ù4âãÀäÓˆ'7öiÄÇɧ&ŸF|˜|ñq`òiÄÇ“'û4âãÀäÓˆ“O#>ž¼Ù§&ŸF|¸ßÌäÓˆ“O#>L>ø80ù4âãÉû4âãÀäÓˆ“O#>žÜÙ§Þ´¾ƒ}ñq`òiÄÇ©ññäÅ>ø80ù4âãÉ›}ñq`òiÄÇɧ޸80ù4âãÉ7û4âãÀäÓˆ“O#>žÜا&ŸF|˜|ñq`òiÄÇçÍL>ø80ù4âãÉ‹}ñq`òiÄÇɧO>ìÓˆ“O#>L>øx²ÇÇɧ&ŸF|˜|ññäÆ>ø80ù4âãÀäÓˆ'öiÄÇɧ&ŸF|<y±O#>L>øxòfŸF|˜|ñq`òiÄǃ#>L>øxòÍ>ø80ù4âãÀäÓˆ'7öiÄÇɧ&ŸF|˜|ñq`òiÄÇ“'û4âãÀäÓˆ“O#>ž¼Ù§&ŸF|˜|ñq猣O3>ž|“O3><3ú4ããÀèÓŒ'7òiÆÇ7o'Ÿf|xÓúòiÆÇµ?ɧ^´¾‹|šñqàIë»É§žùÐúòiÆÇѧFŸf|<ù&Ÿf|}šñqà>˜Ñ§î7ó¢ö;ù4ããÀs3jO3>|h}'ù4ããÀ‡öÇ"Ÿf|xSû›|šñqàMë{ȧFŸf|}šññä›|šñqà9™µÿO3>|p}#>Œ>Íøxr'Ÿf|xSûƒ|šñqàEíOòiÆÇɧÏbŸ>‹}*ÿ ý±Ù§ÇÇɧÏfŸF|˜|ññàˆ“O#>ž|³O#>L>ø80ù4âãÉ}ñq`òiÄÇɧOìÓˆ“O#>ž<Ù§&ŸF|˜|ññäÍ>ø80ù4âã+âî‡}ññàˆ“O#>ž|³O#>L>øxòÃ>ø80ù4âãÀäÓˆ'÷ð©ÇÃ;û4âãɃ}ñq`òiÄÇɧO^ìÓˆ“O#>L>ø80ù4âãÀäÓˆG|˜|ññä›}ñq`òiÄÇɧOnìÓˆ“O#>L>øxò`ŸF|˜|ññäÉ>ø80ù4âãÀäÓˆ'oöiÄÇɧ|ñq`òiÄÇ“oöiÄÇɧ&ŸF|˜|ñq`òiÄÇ“;û4âãÀ›Öw°O#>L>ø80ù4âãÉ‹}ñq`òiÄÇɧ&ŸF|˜|ññàˆ“O#>ž|sÿ4âãÀäÓˆ“O#>žÜا&ŸF|˜|ññäÁ>ø8ð\ÌäÓˆ“O#>ž¼Ø§&ŸF|˜|ññäÃ>ø80ù4âãÀäÓˆ'ßô†YÆÇɧ&ŸF|˜|ñq`òiÄÇ“;û4âãÀäÓˆ“O#>ž<Ù§&ŸF|˜|ññäÍ>ø80ù4âãÀäÓˆG'âã±<âãÀäÓˆ'ßìÓˆ“O#>L>øxrcŸF|˜|ñq`òiÄÇ“û4âãÀäÓˆ'OöiÄÇɧ&ŸF|<y³O#>L>ø80ù4âãÎFŸf|<ù&Ÿf|xQûù4ããÀèÓŒ'7òiÆÇo'Ÿf|xÓúòiÆÇ7µ?ɧ޴¾‹|šñqàEë»É§^Ôþ!Ÿf|xfôiÆÇѧO¾É§FŸf|xÜÌèÓŒ÷ż¨ýN>Íø8ð¢õäÓŒOÚ“|šñqàÙ™íE>Íø8ð¡ö7ù4ããÀ›Ö÷O3>Œ>Íø80ú4ããÉ7ù4ããÀ‹ÚȧFŸf|¸ÝÌèÓŒ's¾!ããÀ‡ÚäÓŒoj’O3>L>}ûôYìSùíÍ>}8ìññäÃ>ø80ù4âãÁ&ŸF|<ùfŸF|˜|ñq`òiÄÇ“û4âãÀäÓˆ“O#>žÌ ˆŒ“O#>L>ø80ù4âãÀäÓˆ'oöiÄÇɧã&ŸF|˜|ññä›}ñq`òiç SÆÇɧ&ŸvN3e|<¹³O;ç#2>žÌ‘¦Œ“O;§š2>L>ø80ù4âãÉœmÊø80ù´s¼)ããÀäÓÁy‰Œ“O‡œ2>L>œsÊø80ùtpÔ)ããÀäÓˆ's^"ããÀäÓˆ“Ogž2>L>œ—Èøx2Ÿ2>L>œ}Êø80ù4âãÀ£1“O'' 2>L>‚Êø80ù4âãÀäÓÉI¨Œ“O'‡¡2>žÌq¨ŒZ_NDe|˜|:9/‘ñq`òéä\TÆÇɧ“£Q&ŸNNGe|˜|ñq`|"ããÀäÓˆ“Oç£2>L>øx2ç£2>L>ø80ùtq>*ããÀäS?'~½ÛóQÀêÓ(§áññx_âãÉäÓÅù¨Œ'oöéâ|TÆÇ“9•ñq`òéæ|TÆÇɧ›ó&ŸnÎGe|˜|º9•ñq`òéæ|TÆÇɧOæ|TÆÇɧ&ŸnÎGe|˜|º9/‘ñq`òéæ|TÆÇþå?~üË—?ÿÅ—?ûéoþòÏ?~ùÓÿôË¿üÙÿþî”_ü×ɯق¿óËÿëk/ócjØé?|üì/þñß~ü?ÿäãÿôå?üB›ï×þÚºí1ËÒÙiào¾ÿéŸýãOßüë¯~øþã?ÿìW?~üÛOÿùO>~ý_?¾ûø%¶.`kÿ(¯sÈÿýËßþÝÇõñ÷_î¿zÿ÷O_nýËýeX—ÇFÖ?|é—’ÆŸÁýÖ™˜Oÿøoa~úç’¼ãzs±Çý¿óÇK_|‘å‘щÃ'ü-ºü„s}"žsÅ'‚ë1Íõt†OКזÔ'þ§Ï›©oG}†/Gýú×ü}'Íïÿ²dùÞ{q}û¹¾íû|Ÿðýþmß—géçÀ÷ç·}_æºÞ±j}ã÷—~³¾_Ø€Ÿ˜MpÿðaèGYÞo/·ã†µ\^Øyo�±Ü±–{ƒ±Úÿ#®úîò×{²ÿ¯÷7Hþ.¯`½·|ÛßümŸ0ŒÝRù +[–ïn–ùì÷˜ýæûÿôñ#jg¼½†oÓŽUè ·C:£BâÛ +ÔY,ÄwP‹(køºµPg°Ç!|û_2môv¢B‡ÌÒ¬û#*t î ¨cYÄ·ë…øåBÐØáÛí*ÔQ,b¿—´¬]ù¨Ð¡31ý#*t ÎExN¡Uè@œð@Ð86á¹�uàªó;û#*tÈôI[Q¡£PGˆýîP+t öN(§y¢ÎO!¶C¸n@¬ÊœÈý|D…Á÷&:ßžU¡Tß~âi€ÚÝE|;UˆoŸªP§¤‡´lâñ -ÍÞSŠ -ˆ}®¨ƒSÄÞ×�Ô -ˆm®P‡¥ˆï¨I'3öGTèló#*têñ1!¾}®B"¾ÃQÄ-k…Äw,Џe%»íg«Ð¡ç#*t ¾ãÐB†"ö‡PÔ—¨cPDQ ¨/Ð+t‹ü†>øúŒ -2‘p=΢¿bq""‹‹uJ,DÞÔ¾Ž@‰EƒÈâÁbqjôûŒ -2qк³¨°XG Ä"Cd±a±Ž@‰Å‡Ès1j_G ÄâD™ÈXÎ"Å©^ýŒ -Ä¢Edñb±Ž@‰ÅŒÈÛ· -Ä"Gäí[…bñãÒ‰áϨÐ!ýëRÖ(±(YY¬#Pb±$òœÌ‡Ú×(±˜YT¹4¨ý:d ß‚E–ÈbËbq"_"‹0‹uJÜ7ó¢öuJ,ÖDmn}ñê3*tÏé,âDs&[…bq'òÌbÏbÐA</æCík…øí, -ÝÓ+X…`ÐA,Ek…â>™µ¯:ˆÅ¥È"Ó½ü|± -íhñ3*t‹O‹õ‹ÄâSdñ)²ø´X+tÃ,>-Ö©/bñéÑå?£BG;ú¢ëgTè Ÿ"‹O‹uƉX|Š,>-Ö -Äýb^Ô¾VèhÇÇÿ^¡£}ðù:ˆÅ§ÅZ¡ƒX|Š,>-Ö -ýÒ`égTèÞ—óëS`ÐAüú”øõi¿T;ŸQ¡£_ÃïGV¡ƒx_ÈZ¡ƒøõ)±êöûçp2*t�Sòÿ+:ôÅÖϬÐÑôűϬÐ,Oœ‘} íl:e®yQûV¡YfôeF¯Ø*t ·Í,OHZÜ¿½BG[~ÿö -Èò„Yž[…d™ÁG>Ô¾Uè@–'$Èò„$Ù+t ËdyBbÁϬÐÑgE…dyBRl:eþ Yfð‹B²<!A–'$ÅV¡¹=Ìò„DN“å,SŸ]_ìøÌ -ÈòF$²<!)¶ -Èò„ySûV¡Yž Ë’b«Ðܳ<!´þÌ -ö ÷3+t Ëçd¯Ð,OHå òÁö½B²<!A–ÙÓb«Ð,OHä4¸å ‰=˜ýÌ -È2ƒ,OHŠB²<!A–'$ÅV¡Yž ‹O‹Br;ÌâÓ¡“µŸY¡cÞ6ˆ -ÈâSdñi±Uè@Ÿ"jß*t ‹O‘ŧÉ^¡y<ÌâөÚϬÐaV?³B²ø´Ø*t ‹O‘ŧÅV¡¹mfñi±Uè@nY|:õŜϬб.ïOx…dyâŒ,>-¶ -ÈâSdñi±Uè@7³ø´Ø*t ÷É,>•iD½¿{…Ž¥ÝÒϬÐ,>Mö -ÈâSdñi±Uè@n³øY%%[…dñéÒàÌgVèØzÛùÌ -ÈâSdñi±Uè@Ÿ"‹O‹BrÌâÓb«ÐÜofñéŽþWèØz[ùÌ -ÈâSdñi±Uè@Ÿ"‹O‹BòØÌâÓd¯Ð<³øtk0ô3+tìãý3¯Ð,>-¶ -ÈâSdíŸ&[…äv˜µo:Û`ŸÊø¦;‹OO÷þ˜Wè@Ÿ"‹O‹B²øY|Zl:ÇÃ,>-¶ -È}3‹OOTÐó -ï¬?æ:ŧÁQ¡Y|Š,>-¶ -È1ÏÁ,>-¶ -ÈÓÖW}ì:¤†NÅz…â×§ÄïµBñëSâ×§ÀZ¡ƒ¸OæEík…âþ0/Yßiý-¯Ð!…4ôú÷ -Äó k…âö0ÏÎ|&²Vè ‡ù`ûV¡ƒxæ×§òþ€‚WèËy\̯OµBñ+â×§ÀZ¡ƒøõ)ñ¢öµBq›ÌSÖwXË+tH¡½þ½BñëSâ3µBñØÌçBÖGuÄ£3oj_+t÷Ãüúô±í?£B‡®Ðùu¯ÐA¬OaƒBñëSâu#k…â×§Äs2j_+tO[ß|d}—_ÿV¡ƒø=Äû k…âñ0oj_+t÷ͼ¨}ÐAÜóëS-|1•µB‡¢Ðþ˜Wè ~} -¬:ˆßM<óëS`ÐAüîXâƒí[…â1™Å§Vxâ3*tHa íŸy…bñi±Vè Ÿ"‹O‹µB±øY|Z¬:ˆÅ§ÈâÓþ² -Râ>ÎâSdñ)²ø´X+t‹O‘µ¯:ˆÅ§È›Ú× -ÄâSdñiÖßò -úrK°øY|šl:ˆÅ§ÈâÓbÐA,>EŸ"j_+t‹Oe«;‹OGøË*t‹O‘ŧÅZ¡ƒX|м©}ÐA,>EŸk…âޙŧ£E…Ð!…z°øY|Z¬Ï˜‰Å§ÈâSäCík…bñ)²ø4Ù*t‹O‘ŧó²ä¼B‡f0ŸY…bñi±N$‹O‘ŧÅz# Ÿ"‹O‹µBqÛÌâÓùxË*tHa…+X|Š,>EŸk…bñ)ò¡öµB±øY|Z¬:ˆÇÍ,>Çû[V¡C -+˜Ï¬B±ø4Ù*t‹O‘ŧÅZ¡ƒ¸-fñi±¾©HÜfñ麽¿e:¤0‚õǬB±øY|Z¬:ˆÅ§È{!k…bñ)²ø´X'ˆû`ŸÊOzý[…)|`>³ -ÄâÓbÐA,>EŸ"j_+t‹O‘ŧÉV¡ƒxlfñéîö¢“WèÐB·³øY|Z¬Š‰Å§ÈâÓb};‰¸wfñi±Vè n‡Y|º§_ÿV¡C -è|½Wè ž‹Y|Z¬:ˆÅ§ÈâÓbÐA<³ø´X+t‡Y|zïoY…)L`>¶ -ÄâÓd«ÐA,>EŸë…IÜ6³ø´X+t‹O‘§µo׿UèÐBº=V¡ƒX|Š|dÐA,>EŸk…âq3‹O‹µBq_Ìò|ÿº½¿e:¤P€ùØ*t¿>Ö -Äò|Yžïk…âö0ÏÎ,Ï÷“Bñ8Ìò|ÿÚ~ýX…aëŸY…byX_ß%–çûÈò|¿X+t÷Á¼¨}ÐAÜofy¾ïoY…ŽfÓ�ŸQ¡ƒXžï#ËóýbÐA,Ï÷‘åù~±>Ø$›YÞ—*Ö -Ä£3ËûR÷ôñ–Uèh6ÌÿŒ -Äû.ö -Äò¾²¾7¬:ˆÛa^Ô¾Vè –÷¥§¯ö·¼B‡ñÕÇ^¡ƒXÞ—B>Y+tËûRÈò¾T±Vè ó¦öõEâ¾™å}´gø„Z…ŽfÃòϨÐA,ïKk…by_ -YÞ—*Ö -Ä3ÏÁ|°}«ÐA<ofy_ªi7ý3*tHÐ~gy_ -YÞ—*Öî‰å})dy_ªX+tË+¼È‹Ú× -ÄâSdñióëÅ+tHP~Lgñ)²ø´X+t‹O‘ŧÈâÓbÐA,ï£!jÛ+øÀc0‹Oûeý-¯Ð¡Áøæ,>EŸ&[…bñ)²ø´X+t‹O‘µ¯/>‹O‘'®¯Uè û,>íz›üŒ -ÄâÓbË7 ‹O‘Ï…¬:ˆÅ§È›Ú× -ÄâSäm/‘kË+tH]ûc^¡ƒX|Z¬:ˆå}4dñi±Vè Ÿ"‹O‘¶o:ˆçÃ,>>^ñ -úþuw‹ydÐA<fñi±Vè î›y_ÈZ¡ƒ¸7fñéXÖßò -<¿Ûf^²Vè nyæCík…ây3j_+tÉ,>Ýú[^¡CÞǶû‹Uè Þ Ø*t‹O‘ŧÅZ¡ƒX|Š,>-¶ r[ÌâÓb}[ÃlÓY|ºô´ûŒ -ÄâÓbÐA</æs#[¤ Y|Š,>-¶Tò¸˜Å§Ëç·½B‡Áogñ)²ø´Ø²MÈâSdñi±Å›Å§ÈâÓd«ÐAÜnæÙ˜Å§ëØû¡^¡CƒÞÛY|Š,>-¶ ²øY|ZlY'dñ)²ø´ØòȽ3‹O÷íç—UèðàögTè Ÿ[è Y|Š,>E>Ô¾ŸÅ§ÈâÓbË>!Å,>ÝËû[V¡£ËûcV¡ƒX|šl:ˆÅ§ÈâÓbA!÷Æ,>-Ö -Äm3/jߢP§{ß*t¯`ñ)²ø´ØâPÈâSdÉK[" -Y|Š,>-¶¼ò¸™Å§Çƒ|^¡CÞ×¶þ˜Uè ^Ù¢QÈâSdñi±¥£ÛbžØ*t·Æ<;ó‘÷Ë›÷·¬B‡¾</æ×§Àš"ƒy/d}ÐO<.æý k…â>˜—µ¯Ïç¼B‡¾¾œÅ§ãØûóQ¡C^ã·åV¡YÞ—B–÷¥ŠB²¼/…<³¼/Ul:Çf>Ô¾Uè@ycû^¡YÞ—BÞ¸¾^¡¹wæ…ûÃ+t ÷‹yQûV¡¹ 湘å}©¦¯1f…ŽÞ,‘:OG¶ -Èò¾²¼/Ul:å}4äMí[…dy_ -yÓúZ…äÞ˜¯UY¶ -¿UäâÛÓæQÕ¢éÓ’>œ5Ör4¯ÿ»Ÿ°Ÿæ1ÆOl}âQŸ0†OÈ3åkÔ'œñ6‹XŸ0†Ohê¸×'œñ¶îõ‰Ú–o(Lñ‡ª<þCfú4Y«C¬õ-ÕüûKŸË÷Çz¾ýûúöF·êsÿ;¾¿u¿Ê÷×lßþ}5«N1þ_®¶iÅÎèßòýî…€ônû~ÿoö×ß÷ãÇ?~ÿÝ?üðý¿þÍŸ|üéë…Ÿýß¿üõ?ýÛÿü¯¿úõV(æ¯ÿœÅüÝÇ/þêßWÔa׉³_iÿ±E<LE2[´¸XáâZ…‹K“.®T¸¸Páâ:…‹Ë’ZQD,ªµ¸Fáâ…VÔ¡.®O¸¸<¡u@ÄbZVÔ¡K.®Dº¸0á⺄‹Ë.®BjE7×$Ü\’psEB+ꀈõ³6—#Ü\Њ: bí¬Í¥7W"Ü\xÔŠ: bÙ¬ÍU7µ¢ˆ°Û\psB+ꀈáºÍÕ7´¢…\zpsåÁÍ…7×µ¢ˆX%ëpÑÁÃ5F¨C!W<\pðp½A+ꀈÕ<\kЊ: b¥ÁÃ…×<\VÔŠ:r‘ÁÃ5—µ¢ˆX`ðp}ÁÃå¨"<\[ðpiA+êPÈ…×<\VЋ:Óϰ^\VЋ:�sQ/ê@L?ÃzqYA/ê@L?ÃzqYA/ê@L?ÃzqQ/ê@L?ÃzqYA/ê@L?ÃzMþÖkòϰ^\FÔ‹:�sYA/ê@L?ÃjEˆégX/.+èEˆégX/.+èEˆégXo.#êEˆégXo.+èEˆ)„|sYA/ê@L!d+ê@L!ä›Ë -zQb -!ß\VЋ:ÓϰÞ\FÔ‹:ÓϰÞ\VЋ:ÓϰÞ\VЋ:ÓÏZ[QbúYk+êPlEˆég¨1ý¬µu ž3ý¬µu ¦Ÿµ¶¢ÀÖÚŠ:ÓÏZ[QbúYk+ê�<øg¨ñ¢ö'ÿ¬µu &Ÿ>‹}ú,ö鳨§ÏbŸZQbò©u�>ìS+ê@L>µ¢ÄäS+ê�ÌeD½¨1ùÔŠ:“O¨pcŸZQbúYk+ê�ÜÙ§VÔ˜|jEˆÉ§VÔx²O—õ¢À‹}jEˆÉ§VÔ˜|jErRíÿ·E€É§^Ô™|êEŠ;ûÔ‹: “O½¨2ùÔ‹:Oö©u@&ŸzQdò©u@&ŸzQdò©u(>ìS/ê€L>õ¢ÈäS/êP|³O½¨2ùÔ‹: “O½¨CqcŸzQdò©u@&ŸzQdò©u@&ŸzQ‡âÉ>õ¢ÈäS/ê€L>õ¢Å›}êEɧ^Ô¹ßÌäS/ê€L>õ¢ÈäS/ê€L>õ¢ÅûÔ‹: “O½¨2ùÔ‹:wö©u@Þ´¾ƒ}êE©êEɧ^Ô¡x±O½¨2ùÔ‹:oö©u@&ŸzQdò©uHö¢ÈäS/êP|³O½¨2ùÔ‹: “O½¨CqcŸzQdò©u@&ŸzQdò©u@ž73ùÔ‹: “O½¨CñbŸzQdò©u@&ŸzQ‡âÃ>õ¢ÈäS/ê€L>õ¢Å7ýŒ@u@&ŸzQ‡â‡}êEɧ^Ô™|êEŠ;ûÔ‹: “O½¨2ùÔ‹:Oö©u@&ŸzQdò©u@&ŸzQdò©u(>ìS/ê€L>õ¢ÈäS/êP|³O½¨2ùÔ‹: “O½¨CqcŸzQdò©u@&ŸzQdò©u@&ŸzQ‡âÉ>õ¢ÈäS/ê€L>õ¢Å›}êEɧ^Ô™|êE‚£¨2ý«u(¾ùgX½¨2ý«u(~øgX½¨2ý«u ¦Ÿaµ¢À†ÕŠ:ÓϰZQâ>™égX¨1ý«u�^ü3¬VÔ˜~†ÕŠ:ÓϰZQbúV+ê@L?ÃjEЍ1ý«u�¾ùgX¨1ý«u ¦Ÿaµ¢À†ÕŠ:ÓϰZQbúV+ê@L?ÃjEˆégX¨ð$ŸzQbúV+ê@L?ÃjE€7ÿ«¥)ˆég¨1ý¬µu(¶¢Äô³ÖV￾ٵ¶¢Äs2ÓÏZ[QbúYk+ê�Üøg¨1ý¬µu ¦Ÿµ¶¢ÀƒÖÚŠ:ÓÏZ[QbúYk+ê�¼Ø§ÏbŸÊ?hlö©u &ŸZQàÃ>µ¢ÄäS+ê@L>µ¢À7ûÔŠ:“O¨1ùÔŠ:�7ö©u &ŸZQbò©u�ìS+ê@L>µ¢À“}jEˆÉ§VÔ˜|jE€7ûÔŠ:“O¨1ùÔŠ:[Qbò©u�¾Ù§VÔ˜|jE€ö©u &ŸZQbò©u�îìS+ê@L>µ¢ÄäS+ê�<Ù§VÔ˜|jEˆÉ§VÔx³O¨1ùÔŠ:�ö©u &ŸZQbò©u�¾Ù§VÔ˜|jEˆÉ§VÔ¸±O¨1ùÔŠ:“O¨ð`ŸZQbò©u�žìS+ê@L>µ¢ÄäS+ê�¼Ù§VÔ˜|jEˆûb&ŸZQbò©u�¾Ù§VÔ˜|ê??…L>µ¢ÄäS+ê@L>µ¢À}jEˆ7ï`ŸZQbò©u &ŸZQàÅ>µ¢ÄäS+ê@L>µ¢ÄäS+ê@L>µ¢ÅVÔ˜|jE€oö©u &ŸZQbò©u�nìS+ê@L>µ¢ÄäS+ê�<اVÔx.fò©u &ŸZQàÅ>µ¢ÄäS+ê@L>µ¢À‡}jEˆÉ§VÔ˜|jE€ozÃÌ‹:“O¨1ùÔŠ:“O¨1ùÔŠ:�wö©u &ŸZQbò©u�žìS+ê@L>µ¢ÄäS+ê�¼Ù§VÔ˜|jEˆÉ§VÔ˜|jEˆÉ§VÔøfŸZQbò©u &ŸZQàÆ>µ¢ÄäS+ê@L>µ¢Àƒ}jEˆÉ§VÔx²O¨1ùÔŠ:“O¨ðfŸZQbò©u &ŸZQ‡d/ê@L?ÃjE€oþV+ê@L?ÃjEˆégX¨1ý«u ¦Ÿaµ¢À†ÕŠ:ÓϰZQâñ0ÓϰZQbúV+ê�¼øgX¨1ý«u ¦Ÿµ¶¢À‡ÖÚŠ:ÓÏZ[Q‡b+ê@L?kmE€oþYk+ê@L?kmEˆég¨p㟵¶¢Äô³ÖVÔ˜~ÖÚŠ:�þYk+ê@L?kmEˆÛÃL?kmE€ÿ¬µu ¦Ÿµ¶¢Äô³ÖVÔøðÏZ[QbúYk+ê@L?kmE€oþYk+ê@¼¨ý‡|êEˆÑ§^Ô˜~ÖÚŠ:ÓÏZ?œoð¢Äô³ÖVÔ˜~ÖÚŠ:�OþYk+ê@L>}ûôYìSùíÍ>}8ìàE€ûÔŠ:“O¨C±u &ŸZQà›}jEˆÉ§VÔ˜|jE€ûÔŠ:“O¨1ùÔŠ:�s‹:“O¨1ùÔŠ:“O¨1ùÔŠ:�oö©u &Ÿ6ŽCxQbò©u &ŸZQà›}jEˆÉ§ƒL^Ô˜|jEˆÉ§ÓL^Ô¸³O;ç#¼¨0Gš¼¨1ù´sªÉ‹:“O¨1ùÔŠ:�s¶É‹:“O;Ç›¼¨1ùtp^‹:“O‡œ¼¨1ùtpÎÉ‹:“OG¼¨1ùÔŠ:�s^‹:“O¨1ùtpæÉ‹:“Oç%¼¨0Ÿ¼¨1ùtpöÉ‹:“O¨ñhÌäÓÉ (/ê@L>‚ò¢ÄäS+ê@L>œ„ò¢ÄäÓÉa(/ê�Ìq(/ê@|h}9åEˆÉ§“ó^Ô˜|:9åEˆÉ§“£Q^Ô˜|:9åEˆÉ§VÔߟð¢ÄäS+ê@L>]œò¢ÄäS+ê�Ìù(/ê@L>µ¢ÄäÓÅù(/ê@Üo.ò°h}9Eɧ‹óQÔ™|º8Eɧ‹óQQÔ™|º8Eɧ^Ô¡˜óQÔ™|º9Eɧ›óQQÔ™|º9Eɧ^Ô¡˜óQQÔ™|êEɧ›óQQÔ™|º9/Eɧ›óQQÔ!ø÷uøæ´yØMøáÃ9.)•ðÛŸ˜ôb)|bk¢>aŸgÊï1ÍO8ã'ŽÞÅëÆð íÇÀ_q†Oøºç'`[þuØþ~—³[Š\ßR’À¿ýºiOûö×o*é`ß—w%ZóïSIÿþÖwMìûóÛ¿/}û'Öÿ›J:Ø÷µú†ÿý-ß>Ö…]ú& |ûçÿöÃÇ_þÅÇ/ýùùý/µzÃ/ýo?þ+VnðæëBùíCÿ?¾P¶>>éÓKëÃâ?µÌÏo¾O<¯îß{^]ï6HÓ7éþtùwÿœÖçίèô÷ÿûwîßú3þÇñwê;:“xþÐwð¸À±€C$IÙ·§Öm€!‡å?|÷Ë´Ý/Gâ¾ä/ýò»ÏÏŸ>~õÓÇwÿð¿ùþ¾û×ïÿþã¿ýê»ÿí÷ÿ?ôw,AÖ4Ø%ç‡ïþ¯oøúÖðëß÷ãÿýÇ:èôý¿ÿÕ·´ S:ò;ÊЯòë·ý:̰·†¶¾ü‡ç×ïVìÑs¤ë¬ÿ£sõ¿{¸û~�§ÈïÿÊ»ÿ/þ»t¶¦ëœ°—ZÁ+¿þ/?}ôßþäÝ—?ûN®×Ÿ²²Êq�-‘òè¸2ŽŸVsùæƒXmüôä~™–øòÿ�ñgóendstream -endobj -9 0 obj -<< /Type /Page /Parent 3 0 R /Contents 10 0 R /Resources 4 0 R >> -endobj -10 0 obj -<< -/Length 3537 /Filter /FlateDecode ->> -stream -xœ¥›MoÇ„ïü{”¡ûûãj# " ñføØÁ2èÿüTÍtÏT ŽÉ|ÜÜæ<]Ë]ÖËa|¼yÄǻǿŸ¾]ÿ}õáïþúñÍÛ§øBxù÷í7{ -Ͻ>þóôÝ÷ðøñ)>Þà¿wO‘ŸðøëS/Ï%<FNéñžÔÇAíñóS¯Ï±”Oªu}æA³ÜÔžsRêñ¦þ¦RJ£Ý4žSQjù¦ù¢ÒºêvR¿÷a_õ"¹jÐ̗шûªËI=Üki_õ<©t][W}PÖ«5ù -E¯”§®éU㬛ҺêvÒºêNºÎ:ŸÔÃý8œõ¸×ú¾êµ6ä$ì¬AíÎoØYƒòT’«ža_u>©]›w~g•ä¬gÒ«žvÖ ¹ê™ù…äªgá3ZH®ÔeO;kк굦WÝöUç“Úß¼Î:Tš’^õ°«¾Îšiι¯:Ÿ”eϹ¯š»^ŸJ”Ó&Î$«×yÏ…mÊ''½v¢\<qèÎvèÄåÙ±ó0\ -íÀºúÂ¥PÎ$ÅáCSÀñwCSè®0\al…Sw¾BÈ»ì¯6Öûû¨ -1n…¹Pb2`©†ª3?¸¿Ð•BY¨ -±˜ÐB1¬ÙpÊáÄ+…¼°I¾ÑS�É7^)œ8¶BZØ‚¡) ….‚žB -¦‚)�§<ESäùß«q+œ«HAw¾R(G¾ŸÀ)›PÒ•Âá›ÊVH»ä›<`M†šBj®à)¤¾òB}"M)èΞpêÎÓ¦)ä+…¼°Þ¯lÄ);gOØ$ßì)�K1\ -ñÀ¼òBU�ªBF -ÍÐB6Ô€Kaè)�—¹Šî7m¢) ùþÍž°NCS˜®à)”` -À 5…yµŠMò-i+l,’/pH¾)CU�NÝÙS�vÝÙS�šBu…æ -HAw¾RÈK¶Õ!ù–±6Ö)®€ªa—|+RH†ª�ó~§«W -s¡*Ôd -@U�ÝùJ!/¬ÃV—Âù…ÊVˆM¡º‚§�\ -áÀÆÜï¯{¥p"R(òÉW -—‰žp)ìÕÙ¯6vÙ¹y -ÀluÈS´Å°±Éji+¤…%Ùª*´ü§¡¦�œ’o+¦�4¤ M)Ü -¶+…°°ÉKP»RØh -žB®€º¡¦ÐB1T…L¡{ -À!ùöÈË»Øä)Ú‘‚îì)�‡<sº§�T…î) ëfy bõ•·î)�Ë44…¶66É—8šBw¤ ;{ -À©;_)¤…§B>Žnx -@U�Ùy\)Ä…Mòžëð±s‡ä‹ -åÉ?< *°ËÏÏãJá\E -ÁЪ+x -À&‡ƒ‚îÜ—Â…]wö€µšÂÜ -U9–a8ä%½8ÉÎÓS`ON†ª�ìòâ†råp€ª�œºó•B_(œ8= )x -(ɦÐtЧ§ÀÖ54娇ã)�eYu繈 í8LCQ Ê*Kز ¥@,A›t>’‚¥@¬ÕPRHìÎI[\¡ºBu…ºNl{¼³Ñúðl”ˆ]w®0\aè¼$K(Ó©=`醪€²¬ -ÑS`wކyªÚql†õn©Ä©;{ -ìÎr8hÇašBÝsŸ¯âÂ&‡= )x -hǦ0öäd£)Ì=üÙ¨ -hǪ< *°;gCU`w–|“§�캳§�T…ä)°;Gæ;{ -ÀÒM¡¹‚§Àî|ÿüLÌÃVMaèüŠh -cNœ:ò$ªBö€ª�²söØåpò•ÂFÁUíXæWDU`w>êeÂBS¨:ü!šBÕùUÊž»s4œº³§�ìºó•ÂFþe—ØUÁS@;ݰTCMÝ9ªPJ2 * Ëð‡X³NÝÙS�Êð'•ê -Õª+4Wh{r²Ñúþä¼ÐÆVØh -Ãæžœllr8hÇ2ü!ª»³ì\=vç`(SÄ„²œåp€]wΦÀîœUey)´…šÚqéž»³*´=üÙ(ó+âÔÃé®Ð]ÁS`wN†SÇS�¶»Â§v¥ÐÊüŠ8仌ÝYš§�T”åÜUÝ9ª»³î\LØäpÐŽe~E,ÅV‡îì)�ë4\ -Ç{7ʲ)\)œG7\aìÉÉFS˜{ø³QÐŽC5TvgQ`w†ª�œº³§�캳§Àî UeY€Mw®®PuøC4…¶ÒBSh®ÐurB”ùUbwN†¦0t~•º§�T…á)°;Ë“ŸÝYvÑ€2¿"ªÊ²L‰š»s2”QP–S7”)bB;º³§Àî¬ -W -q¡)4þ¤á)àƒ~ÿ~!á -C‡?DS˜:‚#j -hǪÀîœUeY†?DÁUa&S`w–Ãawކª�”áOšž°éÎU§ˆDSðP–ã=%&Ön«¦Ðu~E4…á -žpèáLœE!³;gCQ Êü*K( -DQÈ(Ë2E$vÝÙR –i()d”åÔM¡ºÂNáøÁ†(󫌲‡¡)4þäÐ]¡o…ó4†+Œ°WÇýþ›ÃÔA(Q†?9z -ìÎÑPS@YŽ÷”˜¨ -@U`wΆªÀî5 ̯rô€ÈeÔ=9IM¡êð'ǦSDbm¶j -Ý<vgÉX†šÂÔáQS`wN†ª�T”e™œU(ó«œ<vgÝ9›P†?DU@YVvçû—§9])ô…EwöP–£îì)�§N×É Ñ†ˆ¦0tø“Ó•BZ(ßœ=vgyŠûýûýœ= ̯ˆªÀÂqthǪ¯òBU@YNÅP¡™ÝY'{ -@þäÜ\¡m…ºpêátWè:üÉùJ!.,ÝVMaêMbÄvO‰3»³(�eøCT´cþå¶<âR8ŒŠ§Àî, -hÇróQ€CwöØuçªwºMÁS@;6…¦“¢¦Pºˆ¦0tøC”õˆ2¿ÊìÎÙPjÐQ€2üÉ5êýzDU¨ÑØ£aÓ³)�eøCTvçlh -UçWÄ<M¡éð‡h -mŽwœÚ]¡»Â°'Pn!#ÊÍK¹z -ìÎ’o¦�T…æ) «B‹z#Q¦ˆ™ÝùžOUíXFpDM(ßÜ<vçh8ugO(÷_åæ)°;gCÁevg=Oí8tÃR Ç}‹`fwÖÙ®0M¡{ -@™_e´cÁUÝYvîÉ€MwΦ�T…î)°;'ÃM¡êýWDSh:ü!Ê ”h -]''DS:‚#Ê|Ä¡‡ã)°;CU@Y–ùQ†?yDS`wN†ª€²¬ -ÃS@;–QS`wvçh(#8¢Ü•Gu…ê -ž»s2”ÉIž>hº³§�,ÅVMaº‚§�”\FY–áQn!ËìβóôØeç™ô.8¢* Ë䄨 -ìκó•B\(â)T½…Œ¨)°;gCþ岌²,÷_O…|®WðØUaòES˜:ü)ÁR Êüª„¨wÁE()”e™_›îl)eøC”»à -»³îl)M¡êä„(ó«ÂîœM¡éð§„î -]çW%W®0öä¤8]aêüЍ -(˪ƒ)°;'CÁUe9uCMíX†?DU`w–ÉžP€SwöØugOÝ9Èe\)ô»+tW:‚#–dh -S‡?DS˜¦<vgQ`w–cgw¶:îá|Iž°éΞ»s²UU@YV`톦PuøCìòýËî¬;7Wh:¿*(Ë©¶*[ þK²Õ¡;_)¤…¦p¥pʲ*°;ËádO(â* ,«Böس¡¦Àî, -(ËqªpêΞ»³îì)�‹<ù2‚+¹ëŽ(·•|¥–h«2‚+(ËQž¢ùJa¯ª»s6Tvç`¨)�¡À0{@`–çd(,b×=`m†æPÝÁc`y†2ƒ#Ê=dm9UCS®à1�Maêè„h -S§?¥z,Ïr8Õc�Ê�‹¨ -h˪Àò,/ ÕS`y¾ÿœ‘ا`ѱ6CS¨::!šBÓÑšNJí:ƒ#š‚§Àò|?ûßú¦†/ûÃTìßß?Öþ'þüxûÑòIí¸ÝŠ«ë~û½¼ð^_÷õìõ…÷úúýÁ^_(ëgO¹ÖO¼×ír¯«¿×¿~Y‡óÇß8œ?üòôÕŸÒ#>^þùˆÇÍ=áúçdtYT|cà˾¼¼ -¯/ïžþørìüé‡ò/B†>6…Ïxôq_Z“G—Ïzô<~#p?º}Î£ŽžäÑãsÍW¤ WÃýð:ïsÞ?NâOúhŸÌë£å(…þZ=nÜÏ×òÂ{wõàÚ½¾ð^çoPwöúBY?/çZ¿¯NÝEørx“ààà˜PÿÏçË'Ë¿I“y\¿}öŸÜƒw@æ¶Ÿt_¸Ç<î�áùK÷àü&]O_Ûã<ëõûTð>½ìl<ÞùøÒ|~òG¸?ù| üÝßéÇM€Á·S\ñw¯þòË?½ÆkÒãÕ¯¯¿¼¼ù?Õñ!®’÷Ö|¨¿ÿǯ/ÿzÿÓ‡þíÓÃP„Qendstream -endobj -11 0 obj -<< /Type /Page /Parent 3 0 R /Contents 12 0 R /Resources 4 0 R >> -endobj -12 0 obj -<< -/Length 4157 /Filter /FlateDecode ->> -stream -xœ¥›M¯&7…÷÷W¼ËdÁ¥í*mA€ˆdvˆ -A"b"¡,àçSåúðñP3šgÜíöñq»»Îí[^_½Êë»×ßß~ç~úÃïõ³×Ï¿~{ÞŸçyÙßeÿýõÏ+ÿ;Úëoøãëyýù¼¾’?ß½=ìõ›·Áïü¼æx_íõQiÌלÚö··ÑÞËØmlÔÚ&2’ÿUÚGöwª›†Ñ(§m¼?kÓ2â‰m³ûÕ…æ{µ>§Q§Óçz¬Ïb¤£–qV£1sœóÁQù¨‹Ñ:}Σ®FÃf¢+Õ=j¹Â0â‘ãòQï#)FMF>ê}$ǨɈŽZæº#ù¨§‘Žz¾—ÝgÎ5ù¨7É\Ï3²£vš09×ͨCŸ9×ÍÈGýù¨udë‰Q£Æy½s=Õ÷%s]re-›k÷oUõʹF>êÝ‹Ì5#)F½ûdí;Ï»æZhœ5±r®«‘zù -Ù}ö=ê西÷uÎ˹žF|VòʹÞ4}Ô69×›VŒºÑYB>jKy]�Ѩ¨ãžê•á:‹¹<1ߥ8úÐçÆœñáèƒ/Žó¬òä¤WÇ^rüåÉi¯Ž® P%È icÛü®R„£èeò±çœ}“?´“3æœrœ8qÝ(º„é¸\(MèŽ&§Ü.6:³QÒk-[‚èíŽ}ËJ Õ‘±çtÁP\¨Ç”’.Ç“SÒ…â8:´Š-$4ÇuÖ|)éBsìºJȑ̆¹à7})3$TÇþJº`]‰.´. õ ÕÑ%LG—`å½®#A°ŸGP©UÝ9=›á‘à¤Ü©J¥K‚ K`ǵŽÝ•CBà�k»%ˆào½]¨ý–.Ž@ŽîÂpœ89âBsÓ…î¸`åÔuKX!aO¥ÓQ%ˆ|v\gC.”.tÇ>àÜta82ìTC‚õL!a:º„âèöl¸pvfE—°§Äì9] Çõ€¢ÛÁn›› C\€iäó\Qœ™.c[Wë‚ý™–K˜ËqØÝÃàÇ%X«`ƒÉátaK`qögüÜš#Ÿ—<ÅYÏíÌâ‚MÎrl09‚Vß.ð—Órl°D¹…„=9ÜC;ö]¥ìÈÒëyn òŸÓ±-8C‚]W\�LN`å´t¡:ÎuÎmæÂÞ ;LNKÈ‘éj®K.Áô -6Øš¹;Rã@Žž’…„éhZ IÖ•¸°'§-G“À†CoÁÊŽ&!Ñ$8†u8š„JŽ«†~®¸`=ïQõpÁºlÖsu4 ~pq ‰&Ázî5$G¶ž›£K0¤÷²àÜp![ö.ø¨8$XkÓw¶3ªÈqZÏÛ”Þo âÂî¹YÏáuG—@Ž.Áp†„êØÆ…èBøB—°q<—„‘.G—°õŽ¢‡!š?·ê«cÎäHØq>Ðz» è]‚õÌ!a:ŽÝ3ÙÁéB ¯Ñ)x]Bst 6#$âBÒøQ‰°øGºÐ,þ‘.tG—°çy¦ÕÑ%ã„É™éÂtìàﬗ-‡ËYf3]°V - Ã’àµ&&88\ð®Ä…çB†%*8arf¿’ KØ;’üã©pîp ~°lkàï¼]lýÂ÷¯ÈS.˜@-‘a‰ -2,þu» uqm¢Z'Ãæ¶Â…lu v!òćA!!Z-¾1 +\ @püBé;2ln+\°GŠd—Ð;ìÏ+]hŽ;ÃJöW*åKBº¸À_-Á_¿UªãçìüŠà‚¢:{õIȱ`ºÀŽ|üUºJȱ587]°V Ãqœû·Juü,87]˜Ž³CWÝã?·ß†<ÞUº'gÞfHŽ‹`é;޳¹Õ’.G>‹_qž%Z¥X®éÂV¤µsƒ«Ç=~pº`äO¢I r\ç¦Ýq<ÐÚ<9ña´@Žü-éBsì09%]¨Ž´ààtÁzž!_xIX[%¢R?Ðs}. ‚(Akgº°W8¸zøcî×t!Zø[é’ Ø`ñ×ta¯ A‚`‡û·¶[Bóð'qžý¹jíŒÒ…=ÏZ;Ÿ-H‘æÕzI˜þØÊ©·Z;W¸îí‚`‡É¡t¡9r¿pÂäPºØ`ºÀŽ;¥{ê¤:.íB” µs…sÙÿPº°Juü`ÏéBà<ïÏ•ú-¡‡v\pÿÒí ¼çpÁ»šþøÁé‚]w…vìp!©ŽŸq!CÏœ.ìžµv†ÅÏéBu\à/§ì8à#Õqi×Ú$hí“Ã|Iìà/§Õ‘t•.عý–Ð=9ñsÓÃáá?Žî_©Ž,QN×)ªË'g…}vW©Ž-ü¡æˆ.hí“ÓÒ…Àþ\¸`•b™Æ…{¾]ÐÚ¹^¸À_)–MvxÐKuüÀýÛÚ-¡…;·{øã§ÃqÁâo႟;B‚µÞ.h팦''ŽéBu´ð‡¶¿=\0SùŠè‚ÖÎåBtAÐ%عÕßÄaåôt!%ôp¡>Žü•êØ’*ŽÌWëÄžÓ…À˜ž.lSú ì8à-HkgxÄhíŒ=ß.H±\ááÕÃ3EªãVθ]ÐÚ¿ÖÎpÿ -6ØÜln£^LÎ K‚ÖΰøÇí‚Ë–¨`‡çïh·„áOà„÷+añ~Kè·„áâ€ûWkgì9]ˆÖ [ÐX·„6Ît¡:ò©R!9©3]XŽ vþ™.ØÁ5$tG” µs½°Á]&ùU•b¹ÂäÌtÁÙ"¿ªŽLNì9]èŽm^áOó+Eì¥h¦Íò+Å %€Ë.a9âB’êøáÞ¯Öí‚Ëvþ•.Çþ®t!‚«Z;cÏšã„ûw¥Õ±Ãΰ҅îù•"¡UŠe“`Û—`ƒ•³ú-a`~¥\]ó+ÅK 6ªÉ 9B~EZ;Ÿ^ò+Åyî_zÒr„NI±L5’ë9](ŽŒ=‡d×e” xIh!M-GˆàHŠe/ #8zÆ-a`øCÏå‚"¯«užÅOOºÐ;ô\ŒàùD4Šób$ŲIØOvEˆàLŽÖÎáÂ^„¤µ3LN¹]œZoMÂ~¯#Á_ar!‚£Ò1ETlýju 6ÈØ’ÖÎÏ…þ(Îc^˜_)¢Z;ƒ¿õ¹$¢)–˸%®sÿRMŠãÀž #8E”P SD’bò+Å~Þܨ†û=VÂÅq^IŠeˆà!U„üŠêÀüJñ’0#üiŽw™àÄÉY·„v+=„*B§8N}D”.TÇ=Sº`=WLÇ©bHªc”@éÂpD R,W¾‚PÒÚ¹À0Ú-¡…;¸c§èùÕã¸`g œâ�ibªÈãj…‘¤X†üJ±Ÿ=ií|^! zæç’ ÕqžùvAkg:;!×K‚Öΰø¥:~°g - î_NȱcÏ ƒPEH!%©ŽìÏ‚ {¾]àáÏpà/ÏÀŽ<®ÖKŠä$"8jO„?Í‘Îû•"äWÔÒ…éØÎˉâ‚ÖÎ09‚œP#̯¹_Á‘ÖΰøßæWŠ4¯Ö÷¯TÇž¿c~¥¸`skéB I°ÜÒ…åœâ<?<¥–.£…?vötQB. RC~¥ˆ.hí/¸PÅ‘¤:öðg8Bªõt¡:BЍèɉÜ0¿R09½ßz„?Ý"8êó+EÈr©O̯¹]^!´v†û·¯[‘ƃA¨"JêÂÅFBG£bªØÁß‘.4Gˆà'^ˆCBwìØ3cŠHR,ln#]0EÃEH/ #’“À»è˜þG“`Ó®µ3NÎÂN±?W+Jb™Æ…þÐLºcƒžgº`çÖK¼]ê"8EÆQH°q„?ìØáýY"8šéBq¼$Ü.hí‹_kgðw¦Åò+š·‚_)BŠHZ;ÃówÞ..¸¥X&ØÖƒ)"ií›Û*Á).xĬt!%HuüÀ䢱çÛAˆà/ -$4GtAkg”Ð1‚S¼$Fqô t?ÖÄðG‘ùBˆàHkgðW°¿‚ëÜ¿ü<Á)ŽSð“.tG K±\煽ù„œ"DpŠó,QÖÚ{fŒà!¿b)–é¬EHYkçz!DpŠÁñ3n ¿¿â']hŽ_)zrbS·n ¿¿R„‘¥X†ðG]ÐÚ¹ÂÁéB´ÎóS�–b¹bÏ·R?09%]„üŠãBRlçÍŠœpi·„†á—ÛOD£8OÊÄe„„@t¡LŒà¹^_±Ëðý•"º ù׳\Åqê_ÖÚ¹ÀÁ?äS„ﯸ¦äØtu» µ3H¨„A(K±ù•bƒû·2~BÆR,ÃWpŠüÕÚ¹À˜Óvœ09uà'dŠ'gb~¥È†1#ü±Ö…A¨bÃÉIöbb™`r´v†É¡‚ò)ÂWpŠsBW¿¿RìpÿjíþÒí‚ÖÎ AŠå2/D ‚ðýSº0!üaê˜å*2Ü¿‚–œôgc¸°ª£…?ûëh&sÁ5@‘χ¸Šó|ˆËR,— áBâ‚ÉÑÚùü|A]ÐÚùƒÓ…@‘ fì‰1› þͺbg@òèdVGÓ0š£¥?û+^æ°a×KŠžþGHBY‹g؃¸Ý:~ɧß)B€Å<ð38EøŽyâ—|ŠkTp,˜Ê…é¢K„ô‡Ûƒ1¢â€¥Ónù¼@+¢©–Q‚ÏØs¸à=S¤?ËÑ$õÌ!a:BŒ¨xIh(^z¤?Á)ÂXÜÒ…áxI˜·„´õëÿü‹©ÏÿÅTéì×Ç/ïßðo¯¯?i6êûs+mõïí£Ùñ´ûw=ÑîxÚýçÑîíV§d»ái¿†›£?í?ûà“óÍÿfr~øæû·Ÿþ²¾ÊëÃ_^eÜóä_ÆRËJéÃûÜ__<_¾>|÷ö‹»çÿ~ªþFÈÄsëógïïÒ:œÍŸuöÚ?8g÷Ï9{×èΞŸs¶îH޼<çô¶ö;Âþeá/#lt§¿>i.» ßtZõä‘ÍŽ§}5³Ýñ´ëOK -g»#´Ûp²ýŒµƒàŸÀ<ÈCB\{ßûë忞[ì;£O'îGŸ¯_.Š÷ùçûõ|úŸÎ×ß'ï±d?1ÞoÔ7–è<Ù6¸ŸtºÛÁŸ`l{Þÿ}gï/˜¦>>e´øâ×ßÿùÛ/Eÿë‹~ùÇׇ¯~¤lùçê{k›&ûã·úþÃ_?~ûChÿÝÛ¿�Þm“Qendstream -endobj -13 0 obj -<< /Type /Page /Parent 3 0 R /Contents 14 0 R /Resources 4 0 R >> -endobj -14 0 obj -<< -/Length 3210 /Filter /FlateDecode ->> -stream -xœ¥›K‹\çEçý+jhRþÞ©MbHÀQÏŒÁrÀ ’ŸŸ}nUwíu&Mµtûž®U[õاoçË÷—|ùpù×Ó÷?ß|þûŸ¿½|÷î)]SJ—|ü}»ýé_g¿üûéÇŸ.éòþ)_¾×ŸO9¾àò×§Ù®Mç”|éò1p®üíiökžÀÞ»]Ö¼–ƒÆµ;8®3ÎkÚÀ¶€k®kiÀQ ÷5eàÃà@7X B7n›¼2„Ó&¯a›@WX -BWX -ºPP…N¦ „‚RX@((ŸÌ„Ã'3!˜ÂNPöt…4¹øz +ì…Í„®°•BºÂnñ]A8}2SB)ìq(ŽýúDÙAØ‹ao(„tƒœ”B'»Cð.ÎÁc;3Š`7 ^ׇœFðÀxÆ\™:ý¤ÓO:ý¤£P™:Êe’©3CÇx|ÖÉg]7æï“âñùù¸W2|r¦O>Å“}ēᓕO!ÃGŸ|ÊGLåÓÈôQ>˜ÊG<0ÿ”˜>§|ò:ù¬¸¦ò™dø”DŸrÊGÝ(gýñï®SÏ CG¼0þ:åOiÔOÌ?Å#î…L:`úÌ“Ï)1}O&ÓGñ`þ)1|ê)1|ÄÛç×Lñðùõ”¸Ù«Y=ây`¥M=¥#†MU:ÃN?…SN%S¦ŸdNáˆ)£p:¹5òÂüS8â¾ÉÔÙ¡†OKô÷L†OS8‹ŸVèÓŽ:Æ0tÄãuÄÓ®vŠGLS<mœtæŸâ·J¦Ï:ùœâÓGñt2|ºâ)døˆ—Ïï§xÄðé§xÄð/Ì?å#ÞèÓOùô~ò¹åóò‘2X>U/1wV>ÓŸòéÊÇþ{õ#GÙ<ðÇQ.ŽÛžøýHÆqÚäqäâØpÙÌÈ!á8ìa+@Wõš7Є®0„PPᓃÇ<ƒŒa,:(† „ƒbh@w˜ “1Ýa*†öèLÅP® \>™1]a2UwWˆ&°m &˜BTyWP -¥à“™BTy›¼˜‚ЄË&/¦ 6y1…¨òè -êî®°˜‚ТÊW ”BB¡S)¡ - -ó:}2Sö„¦Sˆ*Ÿ€m]Aݽt +D•/@Wº‚º{ž@WnŸÌ¢Êûd¦ „‘Âã½@å#69dQ拌A‡›Gs(êêiÍ!p CÄh -%!†@Sœ>1ö4… ¾�¡Ð©Ð©Ð©0bå…Ë(G(L*,*,*¬Øä<pSaÇ2ê3S¶ tõsWÈL!ÚzÖ tUñ<€®EÝ'3…¨é®Ðc‰ã…Û¨2…hè>™)}Ÿ‡E‡ÛG8ìXE9ºƒš·;Æ t‡¨åèÑÊÐcNŸÌ„®PCôñômM)ÌA؃Ì!šxքÊ“#VìœÈ„¶×,•1]AhÛÀRC´o›\ƒÐ*cP·v…Ê¢y›Bï„B“#:˜BtîÜ>™)§Of -Q·+ -› -LAUÚ„]!zvº‚ÐSº‚:tn@Wˆ†í“™‚pød¦ „Sˆn]€#¡0c‰ä…E¦¥Ú¶¯÷}VT™c}ôò1"Ø%¢QWÿrÑ3,:ƒP}váôÑ"ºtº…š³[t¡žœÝW`%JtBaÄÆèBº�·OfÂa“G‚‚ÐE®:]Aè -êÌu�]!*tºBThŸÌ„Pè±Mq„BÝЙ‚°o &˜B4è -ì…+!GWPGv…É¢A›B4ètáöÉLAè› 2CTètufwÍ¢BW ƒÓ7(ÓåK @(,_•É„®°CTè -´JYŒAhK @WPgv…U º�]AèÛÅ¢Ò\|4cPKN ‡NÆ „Ãð JYŒA7¦OfÑ¡ÐcPi†cPKv…èÐè -*Ͷ -t¡+lÆÚ¢Cg +—Of -Âá“™Btè„ Âð J ¦/¡°¨À„PؾA 4…ºM!Ж@5!…@S4…ªÎl -Ó'#…À¶RxýÜPUš‹ntètètèt¾ -„Ãð-PM““‹‹Ë·@5m*lßÕÌ¢Cg +¨4»BfBWˆ]®:]Aè -™)¡Ð}ƒ…îK 𙂰 f(¼¾4ÃaÑaù -%Û·@îº�ÝAèº?¶B tá¶÷àZ˜C”hÍ„îP˜ƒZ³;D‰öÉÌ!:tÂaÐ9·?:Ów(~qÛñƒ$Í„ËG3‡(ÑæP™C”è´JÌAh{ @wˆ]€ƒj²+TÆ tµæÒ€Pè¾ -„B§cBaø¥VÆ%Ú'3a›@(l*0…(ѰØö@î žl{ @wˆíÏáÆ¢F›„ŠrZ@—.Í¢Fûdæ „sPQ†Ãð%J ç5:¡°¨À„PؾD t…žpMX°;mT{Æ5zÁ.Ñ3$¢EgàðÑÌAh› @—ˆ]è¾Ì -¬‡á› @(ßÕ΄±S|ýìÐ.ІÄòEJíL"z´Í B—BMÙ%sˆmÑ£ÐsPSNè -B¿æ«E:·fÂé£Dé -„ääâÃò5J ÇEº¸Ò)‡ ‡É„~ÍZUY¶EJ KD•¶Ñ“A‡fB—˜Ñ¤p$ ºï‚=ue(0‡hÒ®0}‘…å» @(,ßÕ¹©°©ÀT]a%_¤ÔÅ¢I +¨:»Âb -êÊ®°˜B4i«‰&í£ƒpûhÆ „cˆ&]€Û'3Ý>™1[zѤ3 -סUugÛºCTé -t‡¨Ò6z3¡;¨,§ôëé‚—f¾žƒÊ3˜Cté -쇉봂!±(Á ¢L»ÃŽŽpؾj 9Ú:¨%ähæÐÔžm£8|2rlh --ºtšB :®1†ÃðuP †¯ƒZšt˜tXtXtX¾KiiÓaû:(ÐÔžmè -Q¦Ð/ú^öi¢©?ŸÍ T˜SúÁn‘™„Ð-„ÛGwZtßµÌ ¢O' ¡þ¡Â‡åÛ”@(lßBaC¡0ˆ¨Ó¦u:]AhKVƒpødÆmº�]AõÙ„}¡Ð}!…A¦ „ÂômJ –/„¡°|!Ô -SB)¨=»B”i›\™‚ÐB® öì -•)D™®@Wˆ2m -jÏy]A¸}2Sˆ2í“™‚ -Ãw))<ž¢âÑœÀ-“WrÞáî“ì&Q©+ÐM¢R' ›—nG‘Qya©×Xª¼^ï,•ØxžÛç5ªˆm9“NfÅ:m±è™¨I—´]‹b]€¶£œþm_¬Baûn¨u†½Ú&w†!t…ž¡ í -Q«}r…BÔêtõhWèLA…îk•@(ß Baøn¨u¦µÚ˜B”ê‡Â»/ýJnzë¯äjþ<>Q~¼Üçßð·Ë»Óá㺬8z¿TÿåðÇï—ÿ¼¿ããøý/ÇïhÇoååõø Çqw_ïýãø·Ï÷ççÏ_xp>ÿüéé›?©ý^žÿyÉÇ5@éõ¯«áªé‰¡oûüñòUúúòüáéÏÇäß?5~Ëdù¹%½áìãúµag·7½<Îo9û(îÅÎ^o9;^‘’ßóœ§÷î/u/7Œ¡×öì|<ûÂåq|{ê×ã7|?.Òx¿ããøý¥ùåøË+õãøí½Ü?×7ç?ØC¡w‹XŠÄ§Êz{ôÆ—¼ß?[ÕzÞÏ^o>;.Ñé·³÷ƒûݳã*õ~vyûÙûøÝ«ãìÆÔïÏÒ§¦úÊûkÌosC|ûâ¾|ñíïÿ~Z—8 V¼wê¾þøÕ_>½ÿåk½�]¾úÏ×?]ž¿ÿ¥uS÷ò¸4sÒyÿë?>=ÿúñ—Ï/ö?<ý¥´endstream -endobj -15 0 obj -<< /Type /Page /Parent 3 0 R /Contents 16 0 R /Resources 4 0 R >> -endobj -16 0 obj -<< -/Length 3122 /Filter /FlateDecode ->> -stream -xœ›MoÇE÷ü³´¡««º¾¶6’ Àw†W¶X°Z$??÷‡œ{Ñ,$ð¸ÕÏuúŠCÞÇÑqyw9..ÿ|øööë«Oÿó×—oÞ?”ÇRÊ%ÿÍßô_g¿üëá»ï/åòãÃqy§_ÿË_æùx–Ëšµ\>šæºÑ/³?3©÷¤}Þi<¶š4;ÍDz“Ε´ÆÖc=“F»Ó~,GÒ멯§^%O-ŠS‹ö}æ:òÔ¢yŸ¹jžZtΤ8õjyjQœzyjQÛIyj=ë‘”§î85žµ(Og½’òÔzÖ1ÏZ4b&žµ(Og½KžZÔϤ8õÖ³>’âÔ»æ©7žµ(N½õ¬[RœzŸþ§Í˜‰g-ÊSãYïSÇ3ñ¬EçHÊS/œÏzoœZÏz%Å©¢‡Ýqnã®xÞÆ8úQðÄqxãÊÉxèÆ‘“ñØm¡Ð©Ð©Ð© ‡_€PÐãŸ@(L*,*,*¬Ç“7”BL>˜‚°7`*¦pT(ÏL…C)T`*Sá` -B((…¥“™‚päd¦ „S8”BBA)L`*Ô…Ê„©PǺ©P•Â�¦‚påd¦ L…Êê áÌÉLAØ+ -ƒ -L¡N*0!”„‚RÈÉLA˜ -)SA¸crc -“Sž'0ZƒBc -ÂThJa�¡ - -LA¥ÐPP -9™)ûBaS)œ -Â~�SáT -˜ -g…ÂÉ„©p6˜ -“™‚pæd¦ „S8”BNf -³¡°¨À„PP -˜ -])T`*WLîLA˜ -)SA¸r2SöL…~B¡3…Þ©À„Rhú —Z³b˜—cè“ï¼±$üÂuÖ++ˆÎ „°`BX(ˆ|>B8cò`Â^€Ä8,‘˜AŒ -áY© ql`*Sa0!Ä„‚‚ÈɃ -Š!'3!˜ÂXTP -¥pSa(L¦ L…©0¦RhÀT®œÌ„©0™‚ên*¸ýæd¦ <7 -ƒ -LÁ¸¡0© -J!'3Wᘼ˜‚0„+&/¦ 1y17☠-jÁ©°˜‚0\‹ -J¡�¡Ð©À„PP -…ù8s2Sö„¦SpK.ÀXSAÕ¸v`*¸*W`*SAýø˜ÀTîœÌܘs2SB)¨'CaäJäØLÁŹ�¡°¨À„Pع1†BUAŽŽ1Œ±Ó©)C¡¤`ãÌÉHÁØ;0ªësB¡S¡S¡Saä†Ç…™;#&V®LjÙTعê©SƲǘ -êË©p0×çØ60TL×çœÌ\ŸS¡çòÄ…ž«Ÿz0×çœÌ„P` -*ÈPX¹<1Baçþǘ -*È©P™‚0\Ÿ0\Ÿ0„3'3a*T¦àú|�GNf -þ¶s�¡0¨À\Ÿ°- VîŒPX¹ÿ©•)S¡1a*cyRSp}ŽÉ)S¡1äThLÁõ9\Ÿ -=÷?F(t*0×ç¸s2SΜÌ\Ÿ -› -LA9„±<1¦‚ës¦‚0N¦ Lä㦂ësNf -‘“™‚ -LÁõ¹GBaæþÇ…E¦àúœ -;—'ÆTPAŽý1\Ÿcrg -®Ï˜ -êË© œ9™)¸>W`*¨/§Bg -*ÈP` -®Ï©0rÿc„ÂÈýOíLA¦àî\;'3aìê` -ÂØÿSÁÝù�¦‚0T–Û�¦‚»s¦‚»sNf -B(ô\ž¡ÐsÿSSö „¤SpwnÀ~�¡°sÿcLµãT˜LÁÝ9Ü0„;'3áÌÉLÁÝù�¦‚Êr*GNf -îÎ …A¦ ”Âë^©ª-·=é°rûc„ÃÊíOŒA˜‹1¸<7`¬NêbÂØþ3µåTXŒÁ幆ðbÂtP]®‡žë#:˜ƒ#w'u1}0s2cp{.@(l*0õãTp{®ÀTP]Žõ1„©°ƒÛs(¸=ÀT®œÌ„#'3…Ý©ÀT—¡0rwb„ÂÌõ -‹ -LA…»c(4·çc¬ZA -ÆP0†BS]ãÌÉHÁxn`(4Õå:€PèTèTèT¹þ1Baäú§•I…I…E…E…•»“V6v®ÚÁÜž`*¨.§ÂÁ„©àöÜ€©àö\€© L…ƒ)¡Ðswb„BÏõØ�…‘ë#&˜‚Ûsž…ëc*¸=W`*SAu9v'ÆTîœÌÜžs2S¦Be -ªË©àöœ“™‚¿Ö ˜‚ -3w'F(¬\ÿ¡°rýÓ*Sp{…ÆÜž0v'1a¬Œ©àö\© ~œ -)SAu¹ž@(ô\ÿ¡Ð©À„P¹;i)¸=çäk -¯ßa˜Ï‰ËpØt`®Ï0ö?ÆtPAŽý1\Ÿs2cp}ä²€© \9™1¸>çdÆ „cPA†ÂÈå‰ -3÷?F(,*0!v.OŒ©ÐK ŒýOëLA˜ -)¸>À‘“™‚ðÀTp}n@(t*ô\ž¡0rÿc„ÂÈýOëLA¦ „ÂÊåIëLÁõ9&¦ L…ÁTSa0×çPp}.ÀTPA.˜ -ÂTLÁõù�îœÌ„3'3…1rÿc„¤SPA†ÂÊå‰ -;÷?F(l(L¦ LäXžSÁõ9&O¦ 9™)Sa2×ç -…žû#˜‚ës*Ì\ž¡°rÿc„ÂÊýO›LÁí¹�SAu9VÉåI[LÁí¹SAu9SP=N…Å\žCÁåù�¦‚pçd¦ „Spy®À“™‚>9™)Ï…M¦ LµåØÿSÁå¹SÁå9&o¦ LÕãÒ©àòœ“™‚°o :˜‚Ësö…™ë#˜‚Ës*l…럳 c¬Î‚Œ¡`…Sm9Œ#'#ãÙ€¡pº<`(¡Ðsub„ÂÈí -#·?g™T˜TXTXTX¹:9˦ÂÎí1Ô–Sá` -.Ϙ -ÂTP[®˜ -ªÇ如ËsNf -ÂTîœÌ\žs2Spy.@(L*0Õc(¬\¡°sûc„†Be -.Ï¡àò|�SAÛŸ³2áÈÉLÁå¹SAm9„}¡Ðsûc„ SBaæêÄ…•Û#VnÎÊ„P` -jË©àò“SÆöǘ -j˩И‚Ës¦‚Ës(¨-˜ -“™‚ËsNf -B(Œ\œ)GNf -îÎ -› -LA˜ -îÎ ˜ -îΘ -ÂT8¯)8›W–CpóòäõͼfY¼¾™×<w2£Æ -ÈNFá]€çÂcæ -ȘQ¸@W`F!œù„vîOŒPع:;£pŽÉQS¡3 -5æTpÎÉ -.И -j̩Й‚ -=×'F(ŒÜb¡0rtv¦à -LÁú®ðþÿòOT5^¿…üx¹ÍÆ_.ï?»üLãú®+_½½óþåò ï×ooïy¹~ÃûõÛ^®ß0®?w•×ëÏx¿Žã¾žþ~ýë§ÛÃùáÓo<œO?üúðÕŸêå¸<ýãr\ßãS^{fõYÕ}bèûôñòEùòòôááO×É¿«ÿmÈÊ{kyÃÝ×·§¸û|ÓÝûúcûÝã-w_{z»×[îö+RÉ“å~{ßþ>á¶ýxyÆ—Nöùõõþe•úzÝïÕ‹ÀËõÆuuévܯ?ãýº—cz¸/×ox¿~;ÐËõ8_ê‡óâQèk…†ùÜéÓîúôêo=¼ß¿ÛïÞÏwŸo¾ÛïKPú׻Ǜï¾-N¯w¯7ß}ýn®]ïÞŸ¥~û,}8õþäí5æ¯_æÂKÄ—?üü‚÷?Z_ßÅ$XþÚ©³~÷Å_~ýñ§/õtùâß_~yz÷_JëCÒïêÓ_Küù×§Ÿ?þôéEýÛ‡ÿ� -Ï~Gendstream -endobj -17 0 obj -<< /Type /Page /Parent 3 0 R /Contents 18 0 R /Resources 4 0 R >> -endobj -18 0 obj -<< -/Length 3863 /Filter /FlateDecode ->> -stream -xœ¥ÛËŽdG…áy=EíésâS#@Xɸg–È6‹6€·g¯µ##ÖnY H\>ÒYíΓ'£¢ïÇûñÃãïo_®öÓŸ~÷ùã×_½]ÏZêãz^×µþó«_ÿÑþß^ÿ|ûú›Çõøîí~|aÿþáíÆ?ðøÃ[/Ïr=rÎÏv=Þƒ}¼ø×·^Ÿw¬5pa{æØoa^3°ŒÀф㙰ry¶âlÙ8ž³ƒóyÝL8dÂâ¸<á ‡SV·'vYy$O8,= %ã›3f&”òÌʼn„ÍÂažHØ´)´@$§®ìS"aÓ¦€•¦O"¡LŒŠUèS¶$ô)™pÈ„ÅyyÂa-LxѦp"¡Z~Î31¡Vü‰!6m -9 ›?%„]Wö)‘ DBíÏÜÀÆ„v=íI¶)ô)KDÂæ`‚ ›“ Â<‘ðâ}Ùj4"Z}ö¼<=í“P³cÛg¡f‰xµCÝÂú>uÑìÏî®ìé÷óžËèQ£çØÆrE£çØÓ£Ñ£a}Ÿ=êéë¯ï×Çc—ÆÚ–{ß>uÍÑìÙ¾½GÌžíä=âR£Ù³móIÑ豫$ÿÃè±ëâ䟗Ûç£FϱͧD£G=oµÏGÝÂú>5zÔ豋íÕéÁ»®åk¹]ÑìÙž¸Æ³çåty˜=bölßÏ4£Ù³móiÑè±+^)ËÃÖ·‹ZcOòù¨Ñ£FÏ1¯™Á½ª}>ꚢÑsÜØ£F])þ©³Ç®QWYf˜=Û6Ÿ;š=â9Ô>u×õ³ÏGÍñÔõ3çSp™º–-¬Øe©Ü4çlƒ ¶qFO°õ[¸àí"ØzÄ6Ÿm=Å.k}.O¬?ðf7ï³gÛæS£Ù#I=¼G\g4{¶§÷ˆûz>~¿åb]&îº\ïhôÛ|F4zŽ{ÔèQ£çØæsE£G=Ãú>»¬lw¬?1Øç£f˜=ÛÍ{Ä©}>ê’£Ù³=¼GŒžt½¾_Þ›{ÙÿùÛ|j4z¶«}aŠFzLµÏÇ^¦w^F9ûã>5zÔãVû|ìešêrµõíey—eôö¨Ñs\Ù£¶þciÙBìò›øò¯6žh5‡W ¥µ(-å“QZˆrêÊ‹²ËÊC±»ï<ëõ°;Ù;-ZÂá¥%&$(K -´„ÃŒ»¥%(§®ÌI(-áÐæ`+7|r"Án]_CÈ)([r -J$‘°9˜ ¬= ›Ÿ‘”Hx±_HÀèËÖ�Ϻlˆm-Ú2Ä [HðësÁÖ<Ãóñ_pÇúw0G‚;ÊÑ–ËŒFÏqc=Ç=jô¨Ñsl£ÑèQϰ>§Œ»ƒ,¼>»cô·3{Ä£«}>êVÔ>u¹£Ù³½G\{4{¶m>XŸ`Ýè±;¾ÆK!>ô_ÑèQ£çØç£FϱÍ'E£GÝÃú>umÑè9žì±;«-³‡ŸˆÌظ¢ËˆfÏö÷€`öl'ï³GÌžíŒ} `öˆgXßçƒ;´´ÜoÚßj§ÏG5zŽ{Ô-«}>êrE£çx°G5z2ßÃà‰ÜaùG‹ÉÝ•ídý¯µ½ðÄ>5zŽ}>jô¨{Xß磮5=v6oºxOÃûŽ›=ÛÕ{Äì³g»a³+˜=ÛÛ]Áì÷°¾ÏGÍžî·6°}fÅPê´ÏGÝ/ñíóQÛ…/=Ç7{ÔMŸ[wtžÑè9ÎØþ -FOå[¹›=¼lÀ>5{¶¹qÌñ¨jŸº…õ}>jöˆ{x¾á=âjëÛmM¯Ëè±™Ûû&¶Â‚ѳ¸GŒ5zŽol£ç8a+,=êÖ÷ùØÝÒ5—Ñc·%ÜŽ†Ñs\Ø£¶¹Øç£.-=Ç=jôwö¨óˆFÏñÀgÞÆÔeöTßêgRû|Ôìy9û|Ôì]?û|ÔM×Ï>uÑìá œÙc·£,£Gžã‚=¡`ôWìq£G=Âú>5zÔ3¬ïóQw¬_p†}>ƒÿ·»æhölOï³çe»Ð³G\j4{¶oÜȳG<Ãú>5zföÚdýí3"Ì-=j{ãû|Ô6h±ÏGõÏר£nW4zŽ;¶Âp›Qó2{&v�àá=böˆÙ³=±uÌž—í£ÿÕ¢Ù#º~õù¨Ù#žú|öÆb=x›çý1lb¼MûûKå|‚íF'ØzÄ=ÁÖ#®è .5ÚzÄ [aÁÖ<±~ó¼©r>xÛ-/£ç˜ó Fz^jÎ'¸éúó .%=Ç7{ÔíŠFϽ~ë–ZÂVßVó2{¶3ö€‚Ù#f϶ÏG͞튣`öˆGXß磮3=ø¼âæoêð¶è÷cÍçsÌ=àzG£çxb+,=Ûxc«ÑèQ£çøÆöO0zìmz¶å‰õ'ÞöaŸºµÏGÍ1{¶‹÷ˆ[Xßç£.9š=ÛÍ{ÄèÉÙ÷#`ôäõûÔÔ;ÞøƒÑs<ðBFzLµÏGžíáóQ£G=týáóÉüe¼»Úúö¶Ã߬Ãè9NìQ£ç˜{eÁèQ£ç¸àF<=ÇûdÁèQ°¾ÏÇÞæ¸³§Ï[æÙÔ>uÏjŸº^ÑìÙžÞ#nú|óòqIÑìÙæï`ñ6Âý=•¿±q£çØç£FÏqÆþR0zÔ#¬ïóQ·°¾ÏG5z*ÏçÀÍ{þظkfÏvÇ~Y0{¶‡÷ˆÙ#fÏöÄþR0{–3ör4{ÄÃÖ··ViŸO+¾?£GžãÄuOjŸºÌhôö¨Ñs\Ù£.þ|s.£ÛÀnø Œõ¬jŸ=Ç>5zÔ#¬ïóQ7]ÿöù¨Öç1%7{ž¾½GÌ1{¶ÞhƒÙ³ñA5˜=âÖ÷ù¨Ù³]±¿Œ\†¯ånë䯟|û|ÔµE£ç˜7Áè9ìQ—žã‰7ò`ôlcÿ�ëgýÃì¾ÿ³gûÆþR0{ij¨}>êÖ÷ù¨Ù#áùŠ÷ˆ[Xßç3“ïGÀÊËb^FÏqc=jôw<Q0zŽž8=êÖ÷ù¨Ñó:Ú3瓯õ«U§Õ8ðvÌùãÔž‡'Ïí©q|ò8ó𡺌h?<.<¼§ÆD»lr?"ãFë¯ýz˜=böl7ï³GŒpÇÝ{Ä=¬?¼G\z4{¶§÷ˆÑs_¾ß’7ŽxYË8̧FÏñÍã|jô¨ÑsìóQ£ç8ó(œ=êÖ÷ùàÄU_ƹ>ü>ˆ¯—âóQ³GÌžíæ=b…S³g»óhŸš=ÛÃ{Äì³g{ò(.Ci=iÝOæÊÇÁèQãhß±ÏG5zŽ{Ô-¬ïóQ—ž”ý÷‹8nÊžéG`ölWïã(œš=ÛGûÔìϰ¾ÏGÍžmŸš=b…³ËÈí}>{YóH5Œ£}ÛÍç£F=Ç7{ÔèQ£ç8ñhŸ=Ç<³Œ5zð²æë¥ù|üeëFGáŽ}>jí;öù¨kŽFÏ1Ïì·ð|ƒ=j…+É5ÃìéþûëŒýƒÍ1{^î>5{¶yæ%˜=â©ëwŸº…õ}>jôØË–û0zìeÄc*û)GûÔè9®<Ú§FÏqc=jôwUT£çx𨢚=ÛHnU¬ÓfæîóQ³GÌž—Çå=â^Õ>uMÑìÙNÞ#fÏvfO{ýy>ûcî=~c).<z©nWôjŸº‡õ}>ꚢgXßç£na}Ÿý±×rYG¯óòÈj.¸]ÑèÙžöË‚{Uó×=uýéóQ£Ç^F<z–gÆþþ^u™=â‘Ô>uÑìÙ®Þ#îáùš÷ˆëÍžíŽý²`ôŒËêñ-Ž^§õúŸ>5zŽ'ö—‚Ñ£žý¸\>u/jŸ=êy©{Ô ëßÀ[ö?ßÅ3·9š=ÛÅ{Äì³g»b)˜=ÛüÅA0{Ä#¬ïóÁ_™ËèÁ1·ÏGõ¸Õ>uÑèÙ¶ï\£Ñs|³G]ïhôó`ÿ˜”e%ÅØo:c¿,GIÕ8JzÌùã(©z†õ9ŸàÖç|‚룱·áŽŒ¥eölï—Íží‰ý²`öˆ§®Ÿ.ï³gûÆa0{ÄëOß(‰óÁXjYnUíóQ£GžãÂuíÑè9®Ø/FÏqc=jôÜÃ÷ïKêØ_â½.³g{`¿,˜=âq©}>jöˆ§>_¾¼GÜuýìóQ?ÚÍßÏÁèIë÷sÅnôÑ£nUÙ£.)=ÇûeÁµGϰ¾ÏGÝÃú>5{†ÿ>Ý~s>Ùç£nEíóQ—;z\êÉuíÑèÙÆžãûeÅ·ÜèÉ·ŸÚ†Þÿ_×·Âù̵½¶"ÌØ]R–;°O!G£¬-pVaE‡²ë5T(Ë]ȳkÊ0bˆ #&Lì&)CÂÄÞØf½BBå%÷ð FM¨wHÀñ5KX_Ä¡8»èñï×”Ê1㟇0ù©qSC‹Ç•‡âÔ8´xÌÓ[Á8´¨a}N$8öŒzFèùêÿ?~þæøGüýq{†Î›Ù÷õο>¾úàaWãI><ºþ>ÉëáÅóø:öz|ñ<¾~ióz|Q÷Uûqçy<|»û»?þnýp¾ýég~8?}ûãÛg¿µïãÝ_7ƒ]û?Üö¡Ü>¤ÙÅžöÝûÇ'×§w?¼ýæWþå/ÅÉס_›®øjwlòÕ壾zò—-ç«ÛÇ|5·’|õø˜¯ÆêÒïü¾Î—Û§]ÿû+öS}ÿpñN¨q^<Ì£k®ó(N|Úkèõðây',ìåõø¢<î4÷ãÎó8ÿžúÜ/žÇ×·ûz\¾{ýÙÈäWòs²7›j˸•ÄϦ^ë_?÷óýÅ5pžýº¹HÿŸÁ/}²'óÃE¼v½´ÞŠýû‚uax‘ïUø4¶~4‘¯Ø¯Rÿ÷k‘'Îpo€ö-ýÉïüîûOíªñøä_Ÿ~óx÷ÅÙ~ó#$äV_èý÷þñß¿ÿÛ?>}ü -Ëý{/÷åÛ�§+Òendstream -endobj -19 0 obj -<< /Type /Page /Parent 3 0 R /Contents 20 0 R /Resources 4 0 R >> -endobj -20 0 obj -<< -/Length 3110 /Filter /FlateDecode ->> -stream -xœ¥›K‹\çEçõ+îP¤ü½ÃØ$&‚õÌx$'`á69¯Ÿ}êѵ—0ÆM½|u¿u·T}T•wG>>ÿ8}sûñŧ¿~ýåñÕûS:÷•ŽtN)~^eï¿ú‹þëìÇ¿Oß~w¤ãûS>ÞéÇÇSŽ_vüù4Û¹¥cÍsIÇsÐ\7úñ4û9O§Þv{Ð8×â4óƒæ9m§¶œÖxÐ:—æ4êƒö9e§—S_ÈN½’ŸZd§íÇÌ•ýÔ¢ù˜¹ŠŸZÔ¦“zU?µÈN½šŸZT·“ŸZÏz8ù©;Ng-òSëY/'?µžµÍij ›‰g-òSãYïä§õæd§ÞzÖÙÉN½‹ŸzãY‹ìÔ[Ϻ:Ù©w‹ßÑFvjÑ´™xÖ"?5žõ8õ8›‰g-jÃÉO½pj<ë½qj=ëåd§ÎI»íÜ»âyÚÑs´Ã.ŸŒ‡8|2{`]@(t*t*t*èá' ôø' -“ -‹ -‹ -ë¼}ò¦‚R°É™){ºBÎPÈL!([ºBV -è -BWÈLA¥Ð€PP ->™)‡Of -B(0…¼¨ -Ja]¡$(¦ t…’Ïe]¡(…táòÉLAè -…)”áôÉLAØ -ƒ -L¡L*0!”BBA)ød¦ t…Ê„® Ü6¹2á°É•)[ºBP¨LAè -U) ”BB¡S)¡ : -JÁ'3aß@(l*0…– ìè -M), +´…Æ„®Ðj|áè -Âí“™‚púd¦ „Shƒ -JÁ'3a«@(,*0!”BºBW -è -Âe“;SºBg -BW.ŸÌ„}]¡7(t¦Ð;.)´øs{g8(† „ƒbh@8L:0!ƒOfÂi“cöt…‘¡0Ã(P¶t…QÏy]Aè -ƒ1¡ 2 -JÁ'3áðÉLA¦0”ÂBA)4 +Ì…É„®0•Â�ºÂT -è -Âå“™‚Ð&SPÙu…è¾>™)ÛBaP)D®@(L*(…„‚RðÉL!аM^LAè -Âe“S›¼˜Bôátu`WXLAè -QŠ+ -J!¡Ð©À„PP -…yž>™)û�BaS)DGN@[€º‚Šqé@Wˆ¢\€® tµã<® Ü>™)D_öÉLA¦ –…ᑼ™BÔæ„¢SBaû^$Њê±ísM!Ð6:%!…@S( )šBàôÉH!°w )”(Ï…N…N…N…áû@(LßðBaRaQaQaù¤¤M…틞’™‚ÐV=® ¶ì -™)DyÎÀº® zœÐ¢<ûd¦åÙº¯N¡Ð}ñS2Sˆòì“™‚ -LAõ -ËW'Pؾý tÕcW(LAè -Qž+Т<' +§Of -BW(L!ÊsŸÌ„m�¡0¨À¢<'`]@(,ßþBaùö§¦ t…Ê„® ´ÕI©L!ʳM®LAè -•)¨»Be -QžM!ÊsB¡ûö' - -L!ÊsnŸÌ„Ó'3…(Ï…M¦ zì -B[ºB”çt¡+4¦ tÕãÜ€®åÙ'3áðÉLA¦å¹�GBaúö' -‹ -L!ʳ+l_º‚ê±m]!ʳMîL!Êsº‚Ú²+§Of -QžÐÔ–]¡3µc(0…èή0|û…áÛŸÒ™‚ -L!ºsnŸÌ„¶ý)ƒ)mûè -Ñ3Є® ²\Т;W +DwöÉLA…î«“@(tßþ”Á„}¡0©À¢;W`Ï@(lßþº‚Ú±+L¦ÝÙæe9ãè -Âí“™‚púd¦Ý9]AeÙ„Ã'3…èÎ…A¦ „ÂôÍI –/¡°|ùS&SºÂb -Ñ+Ð6'e1¡-]AeÙSˆî\€® t•å2Pè¾ü „B§SBaøæ¤,¦ /¦Of -Ñ -› -LAíØ¢; +¨,Ûò'Є®°™BtgSˆîœ® \>™)‡Of -Ñ -ƒ -Ã7'P˜¾ü „¢SBaûæ$Ðjtç -4…@[þÔ„M!Ъʲ)NŸŒÛšBUY.…N…N…N…áËŸ@(_þÔ4©0©°¨°¨°|sRÓ¦ÂöåOÍL!ºsº‚ʲ+d¦ t…èÎè -ÑЄ®™‚ -Ý7'Pè¾ü©™)û�BaR)DwNÀ¶€Pؾü t…èÎè -BWPY¶ÍI +·Of -Ñ}2SºBa -*Ë®ÝÙ'3…èÎ …A¦ „ÂôÍI –/¡°|ùSSˆîl -•)DwN@ÛœÔÊ„¶ü t…èÎè -jÇ®P™‚ÐT–KB¡ûò' - -LA…ᛓZ™BtgŸÌ„m¡°©À¢;g -]AíØ–?®ÝÙ'3…èΦ vœÐ„Ë'3…èÎ>™)¡ÀÔŽ¡0|s…éËŸ@(,*0!¶oN]¡'_þº‚Ж?µ3¡+t¦Ý9‡Of -Â6€®Ý¹¡Ð©Ð}s…áËŸ@(_þÔ΄P` -B(,ßœÔ΢;ÛäÁ„®0˜‚Ú±+¦ÝÙ¢;' +¨§ t¡+¦Ý9·Of -Âé“™Btç -„¤SP;†ÂòÍI ¶/¡°¡0™‚ÐÔŽmsè -Ñmòd -Âá“™‚Ð&Sˆî\€#¡Ð}ù…A¦ÝÙ¦oN¡°|ù…åËŸ:™Btçt•eWXÉ7'u1…èÎè -*Ë®°˜‚Ú±+,¦ÝÙ¢;g +·Of -B(0…èθ}2SÐÃ'3ak@(l*0¡+¨,Ûò'Т;W +Dw¶É›)]Aí8u +DwöÉLAØ7 - -L!ºsö„ÂôåO ˜BtgWØñ…#¶/ZB -¶üi )šB )4•eS>)¶ -4…Ý9M! -Ý7'P¾ü „ÂðåOK“ -“ -‹ -‹ -Ë7'-m*l_þº‚ʲ+d¦Ý¹�]Aè -*Ëe]Aí85 +DwöÉLAè -Âí“™BtgŸÌ¢;' &˜‚Ú1–oN¡°}ù… …¢;›Btçt¡-Za -Âá“™Btçt•eWö „B÷åO ˜‚ -Ó7'PX¾ü „ÂòåO+LA¦ ²ì -Ñmre -B[þº‚ʲ+T¦Ý¹]!º³)¨,çtáöÉL!º³Of -B(ßœ´Ê„Ã'3…èÎ…M¦ t…èÎè -ÑЄRxyŸnkŒAèQžÐ„ÓG3a@8t:0†(Ï ØÐcP[.…EÆ „ÂöÕI ¶oZgQžmrgBWè -jË®åÙ'3…(Ï è -jˮЙ‚ -ÝW'P¾ý „ÂðíOëL!ʳ+0…(Ï…÷Ÿ2õú™ÔÇϿ铩š?/}|>nó¯øãñþ³ËW—·[ÅÕÛîï—oø¸~{_Ïýú ×oÿ~p¿~C»~í)/ׯø¸Žã¾œþqý˧ÛÃùðéΧ?¾øc9òñô÷#_ÞÜ“^~º²º¬ªþ`èûô|¼Io§§?<]&ÿúñ‘å÷–ôŠ»/ïKvw{ÕÝûò/»Çkî¾tôbw¯×ܯHÉOžÓãö¾Gx>®tIU^Ÿ]ÎVè_®ÆG Òãò ×ã=lëqý†v}_>ÇôrýŠë±úië7|\¿÷~ÝNïÏÆÈïì9雈R—õïå÷ÓùŸì¯ÞŸ®÷ÛË«o·G¶ûííõ·«•—ûíãÕ·ÇN2Ýo_¯¾=þÎy{tùüÙïªÛ«À©é‹xÈ××°;^¾ñ-Eâý__Pÿï—ËÛ£+¾7ë°ß¾ùÓOßÿí^àŽ7ÿyûÝñôî7ZëKòòîÐt±þôÏç¯?üþÃÏ?ü뇟ÿ{÷ÿæô?°‘Qendstream -endobj -3 0 obj -<< /Type /Pages /Kids [ 7 0 R 9 0 R 11 0 R 13 0 R 15 0 R 17 0 R 19 0 R ] /Count 7 /MediaBox [0 0 504 504] >> -endobj -4 0 obj -<< -/ProcSet [/PDF /Text] -/Font <</F2 22 0 R >> -/ExtGState << >> -/ColorSpace << /sRGB 5 0 R >> ->> -endobj -5 0 obj -[/ICCBased 6 0 R] -endobj -6 0 obj -<< /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> -stream -xœ–wTSهϽ7½P’Š”ÐkhRH ½H‘.*1 JÀ�"6DTpDQ‘¦2(à€£C‘±"Š…Q±ëDÔqp–Idß¼yïÍ›ß÷~kŸ½ÏÝgï}Öº�üƒÂLX €¡Xáçň‹g`ð�l�àp³³BøF™|ØŒl™ø½º ùû*Ó?ŒÁ�ÿŸ”¹Y"1�P˜ŒçòøÙ\É8=Wœ%·Oɘ¶4MÎ0JÎ"Y‚2V“sò,[|ö™e9ó2„<ËsÎâeðäÜ'ã9¾Œ‘`çø¹2¾&cƒtI†@Æoä±|N6�(’Ü.æsSdl-c’(2‚-ãy�àHÉ_ðÒ/XÌÏËÅÎÌZ.$§ˆ&\S†“‹áÏÏMç‹ÅÌ07#â1Ø™Yár�fÏüYym²";Ø8980m-m¾(Ô]ü›’÷v–^„îDøÃöW~™ �°¦eµÙú‡mi�]ëP»ý‡Í`/�в¾u}qº|^RÄâ,g+«ÜÜ\KŸk)/èïúŸC_|ÏR¾Ýïåaxó“8’t1C^7nfz¦DÄÈÎâpù柇øþuü$¾ˆ/”ED˦L L–µ[Ȉ™B†@øŸšøÃþ¤Ù¹–‰ÚøÐ–X¥!@~�(* {d+Ðï}ÆGù͋љ˜ûÏ‚þ}W¸LþÈ$ŽcGD2¸QÎìšüZ4 �E@ê@èÀ¶À¸�àA(ˆq`1à‚D €µ ”‚`'¨u 4ƒ6ptcà48.Ë`ÜR0ž€)ð -Ì@„…ÈR‡t CȲ…XäCP”%CBH@ë R¨ª†ê¡fè[è(tº� C· Qhúz#0 ¦ÁZ°l³`O8Ž„ÁÉð28.‚·À•p|î„O×àX -?§€:¢‹0ÂFB‘x$ !«¤i@Ú¤¹ŠH‘§È[EE1PL”ʅ⢖¡V¡6£ªQP¨>ÔUÔ(j -õMFk¢ÍÑÎè�t,:‹.FW ›Ðè³èô8úƒ¡cŒ1ŽL&³³³ÓŽ9…ÆŒa¦±X¬:ÖëŠ År°bl1¶ -{{{;Ž}ƒ#âtp¶8_\<Nˆ+ÄUàZp'pWp¸¼ÞïŒÅóðËñeøF|~?ŽŸ!(Œ ®„HB*a-¡’ÐF8K¸KxA$õˆNÄp¢€¸†XI<D<O%¾%QHf$6)$!m!í'"Ý"½ “ÉFdr<YLÞBn&Ÿ!ß'¿Q *X*(ðV+Ô(t*\Qx¦ˆW4TôT\¬˜¯X¡xDqHñ©^ÉH‰ÄQZ¥T£tTé†Ò´2UÙF9T9Cy³r‹òåG,ňâCáQŠ(û(g(cT„ªOeS¹ÔuÔFêYê8 C3¦ÐRi¥´ohƒ´)ŠŠJ´JžJÊq)¡Ñèéô2úaúuú;U-UOU¾ê&Õ6Õ+ª¯Õæ¨y¨ñÕJÔÚÕFÔÞ©3Ô}ÔÓÔ·©w©ßÓ@i˜i„käjìÑ8«ñtmŽË9‡çÜÖ„5Í4#4WhîÓМÖÒÖòÓÊÒªÒ:£õT›®í¡ª½Cû„ö¤UÇMG ³Cç¤Îc† -Ó‘Ψdô1¦t5uýu%ºõºƒº3zÆzQz…zíz÷ô ú,ý$ýú½úS:!· ñ†,ÃÃ]†ý†¯ŒbŒ6u=2V30Î7n5¾kB6q7YfÒ`rÍcÊ2M3ÝmzÙ6³7K1«12‡ÍÌæ»Í‡-ÐNB‹‹LÓ“™ÃleŽZÒ-ƒ--»,ŸYXÅ[m³ê·úhmonÝh}džbhShÓcó«™-×¶ÆöÚ\ò\ß¹«çvÏ}ngnÇ·ÛcwÓžjb¿Á¾×þƒƒ£ƒÈ¡ÍaÒÑÀ1ѱÖñ‹Æ -cmfwB;y9v:æôÖÙÁYì|Øù¦KšK‹Ë£yÆóøóç¹ê¹r\ë]¥n·D·½nRw]wŽ{ƒû}žG“Ç„§©gªçAÏg^Ö^"¯¯×lgöJö)oÄÛÏ»Ä{ЇâåSísßWÏ7Ù·ÕwÊÏÞo…ß)´ÿ6ÿZ܀怩@ÇÀ•}A¤ AÕA‚Í‚EÁ=!pH`Èö»ó ççw…‚ЀÐí¡÷΅…}Ž ¯ aQÑ¿€º`É‚–¯"½"Ë"ïD™DI¢z££¢›£_ÇxÇ”ÇHcbWÆ^ŠÓˆÄuÇcã£ã›â§ú,ܹp<Á>¡8áú"ãEy‹.,ÖXœ¾øøÅ%œ%Gщ1‰-‰ï9¡œÎôÒ€¥µK§¸lî.îžoo’ïÊ/çO$¹&•'=JvMÞž<™âžR‘òTÀTž§ú§Ö¥¾NMÛŸö)=&½=—‘˜qTH¦ û2µ3ó2‡³Ì³Š³¤Ëœ—í\6% -5eCÙ‹²»Å4ÙÏÔ€ÄD²^2šã–S“ó&7:÷Hžrž0o`¹ÙòMË'ò}ó¿^ZÁ]Ñ[ [°¶`t¥çÊúUЪ¥«zWë¯.Z=¾Æo͵„µik(´.,/|¹.f]O‘VÑš¢±õ~ë[‹ŠEÅ76¸l¨ÛˆÚ(Ø8¸iMKx%KK+Jßoæn¾ø•ÍW•_}Ú’´e°Ì¡lÏVÌVáÖëÛÜ·(W.Ï/Û²½scGÉŽ—;—ì¼PaWQ·‹°K²KZ\Ù]ePµµê}uJõHWM{fí¦Ú×»y»¯ìñØÓV§UWZ÷n¯`ïÍz¿úΣ†Š}˜}9û6F7öÍúº¹I£©´éÃ~á~éˆ}ÍŽÍÍ-š-ep«¤uò`ÂÁËßxÓÝÆl«o§·—‡$‡›øíõÃA‡{°Ž´}gø]mµ£¤ê\Þ9Õ•Ò%íŽë>x´·Ç¥§ã{Ëï÷Ó=Vs\åx٠‰¢ŸN柜>•uêééäÓc½Kz=s/¼oðlÐÙóç|Ïé÷ì?yÞõü±ÎŽ^d]ìºäp©sÀ~ ãû:;‡‡º/;]îž7|âŠû•ÓW½¯ž»píÒÈü‘áëQ×oÞH¸!½É»ùèVúç·snÏÜYs}·äžÒ½Šûš÷~4ý±]ê =>ê=:ð`Áƒ;cܱ'?eÿô~¼è!ùaÅ„ÎDó#ÛGÇ&}'/?^øxüIÖ“™§Å?+ÿ\ûÌäÙw¿xü20;5þ\ôüÓ¯›_¨¿ØÿÒîeïtØôýW¯f^—¼Qsà-ëmÿ»˜w3¹ï±ï+?˜~èùôñî§ŒOŸ~÷„óûendstream -endobj -21 0 obj -<< -/Type /Encoding /BaseEncoding /WinAnsiEncoding -/Differences [ 45/minus ] ->> -endobj -22 0 obj -<< /Type /Font /Subtype /Type1 /Name /F2 /BaseFont /Helvetica -/Encoding 21 0 R >> -endobj -xref -0 23 -0000000000 65535 f -0000000021 00000 n -0000000163 00000 n -0000045902 00000 n -0000046026 00000 n -0000046138 00000 n -0000046171 00000 n -0000000212 00000 n -0000000292 00000 n -0000023974 00000 n -0000024055 00000 n -0000027665 00000 n -0000027747 00000 n -0000031977 00000 n -0000032059 00000 n -0000035342 00000 n -0000035424 00000 n -0000038619 00000 n -0000038701 00000 n -0000042637 00000 n -0000042719 00000 n -0000048866 00000 n -0000048961 00000 n -trailer -<< /Size 23 /Info 1 0 R /Root 2 0 R >> -startxref -49059 -%%EOF diff --git a/bin/r/response-time-of-chunks-of-calls.r b/bin/r/response-time-of-chunks-of-calls.r deleted file mode 100644 index 15a1185fe8baed3a8b986ce00d1b073bbcefadf5..0000000000000000000000000000000000000000 --- a/bin/r/response-time-of-chunks-of-calls.r +++ /dev/null @@ -1,187 +0,0 @@ -library("data.table") # fread (fast csv reading) - - -#filename = "response-time-of-chunks-of-calls.csv" -filename = "results-with-memory/raw-1-10-5.csv" -#filename = "results/raw-1-10-5.csv" -pdf(file=sprintf("%s-%s.pdf", filename, format(Sys.time(), format="%d-%B-%Y"))) -numFirstValuesToIgnore = 10000000 - -colors = c("red", "blue", "green", "black", "darkred", "darkviolet") - -# returns a data.table (by default) -## which enhances/extends a data.frame -### which in turn is a list of vectors. -#### Each vector in the list represents a row with its column values. -csvTable = fread(filename, skip=numFirstValuesToIgnore) - -rowCount = csvTable[, .N] -cat(sprintf("\nYour input file contains %d lines.\n\n", rowCount)) - -chunkSize = rowCount/1000 -cat(sprintf("The chunk size was set to %d calls.\n\n", chunkSize)) - -# csvTable with an additional column "id" which contains the row numbers (necessary for grouping; see below) -csvTable[, id:=1:.N] - -print(csvTable) - -# default column name: "V" followed by the column number -thread <- csvTable[["V1"]] -time <- csvTable[["V2"]] -memory <- csvTable[["V3"]] -gcActivity <- csvTable[["V4"]] - -# grouped*Time is a table with "id" and "V1" -groupedMaxTime <- csvTable[, max(V2), by=.((id-1)%/%chunkSize)] -groupedMeanTime <- csvTable[, mean(V2), by=.((id-1)%/%chunkSize)] -groupedMedianTime <- csvTable[, median(V2), by=.((id-1)%/%chunkSize)] -groupedMinTime <- csvTable[, min(V2), by=.((id-1)%/%chunkSize)] - -groupedMeanMemory = NULL -if (is.null(memory)) { - groupedMeanMemory <- list() -} else { - groupedMeanMemory <- csvTable[, mean(V3), by=.((id-1)%/%chunkSize)] -} - -groupedSumGcActivity = NULL -if (is.null(gcActivity)) { - groupedSumGcActivity <- list() -} else { - groupedSumGcActivity <- csvTable[, sum(V4), by=.((id-1)%/%chunkSize)] -} - -maxTimes <- groupedMaxTime[["V1"]] -meanTimes <- groupedMeanTime[["V1"]] -medianTimes <- groupedMedianTime[["V1"]] -minTimes <- groupedMinTime[["V1"]] - -meanMemory <- groupedMeanMemory[["V1"]] - -sumGcActivity <- groupedSumGcActivity[["V1"]] - -##### start plotting ##### - -# increase the width of the plot (margin) due to multiple y-axes -#5.1,4.1,4.1,2.1 # default margin in R -par(mar = c(5.1+3,4.1,4.1+2,2.1+5)) -# disable scientific number representation, e.g., 1e+07 -options(scipen=10) - -ts.plot( - ts(maxTimes), ts(meanTimes), ts(medianTimes), ts(minTimes), - gpars = list(yaxt="n", xaxt="n"), - col=colors, - type="l", - log="y", - xlab="Chunk", - ylab="Response time (in us) of a chunk" -) -# display x-ticks with "th" as suffix -ticks <- axTicks(1) -axis(1, at = ticks, labels=sprintf("%dth", ticks)) -# display y-ticks in micro seconds (so, we divide the current ticks by 1000) -ticks <- axTicks(2) -axis(2, at = ticks, labels=ticks/1000) - -if (!is.null(memory)) { -par(new=T) -ts.plot(ts(meanMemory), - gpars = list(axes=FALSE, xaxt="n", yaxt="n"), - col=colors[5], - type="l", - xlab="", - ylab="" -) -# display y-ticks in mega bytes (so, we divide the current ticks by 1024*1024) -ticks <- axTicks(2) -axis(4, at = ticks, labels=sprintf("%.0f", ticks/(1024*1024)), col=colors[5]) -mtext("Mean heap memory consumption (in MB) of a chunk", side=4, line=2) -} - -if (!is.null(gcActivity)) { -par(new=T) -ts.plot(ts(sumGcActivity), - gpars = list(axes=FALSE, xaxt="n", yaxt="n"), - col=colors[6], - type="l", - xlab="", - ylab="" -) -# display y-ticks -ticks <- axTicks(2) -axis(4, at = ticks, labels=ticks, col=colors[6], line=4) -mtext("Sum GC collection count of a chunk", side=4, line=6) -} - -# disable clipping (to not cut off the legends outside the plot) -par(xpd=TRUE) -legend("top", c("max", "mean", "median", "min"), - fill=colors, - horiz=TRUE, - title=sprintf("Each chunk of %d calls is aggregated via:", chunkSize), - inset=c(0,-0.16) -) - -legend("bottom", c("mean heap", "sum gc"), - fill=colors[5:6], - horiz=TRUE, - title=sprintf("Memory observations"), - inset=c(0,-0.35) -) - -# reset margin to default -par(mar = c(5.1,4.1,4.1,2.1)) - -i=1 -plot(maxTimes, col=colors[i], type="l") -plot(meanTimes, col=colors[i+1], type="l") -plot(medianTimes, col=colors[i+2], type="l") -plot(minTimes, col=colors[i+3], type="l") -if (!is.null(memory)) { - plot(meanMemory, col=colors[i+4], type="l") -} -if (!is.null(gcActivity)) { - plot(sumGcActivity, col=colors[i+5], type="l") -} - - -### experimental code ### -#print("experimental code follows...") - -#csvTable = fread(filename, skip=0, nrows=10) -#csvTable = fread(filename, skip=numFirstValuesToIgnore, select=c(1,2)) -#csvTable = fread(filename, skip=numFirstValuesToIgnore, select=c("thread","time")) - -#print(csvTable) - -# increase the width of the plot (margin) due to multiple y-axes -#par(oma = c(0, 2, 0, 2)) - -# returns the column named "thread" as vector -#csvTable[["thread"]] - -# returns the column with number 1 as vector -#csvTable[1] - -#numRows = csvTable[, .N] - -# default column name: "V" followed by the column number -#x <- seq(1:numRows) - -#groupedTime <- csvTable[,c(V2),by=V1] -#print(groupedTime) - -# x and y are each a list of values -#plot(x,y) -# y label is "-log_10(p)" -#plot(x,y, ylab=expression(-log[10](italic(p)))) - -# axis(..): side=2 means left side; side=4 means right side - -#labels <- sapply(ticks, function(i) as.expression(bquote(10^ .(i)))) -# labels <- c("a", "b", "c") - -# write pdf -invisible(dev.off()) diff --git a/bin/r/stats.csv.r b/bin/r/stats.csv.r deleted file mode 100644 index 6685418dc5438f25e9f40d84df70a68bb8f26e00..0000000000000000000000000000000000000000 --- a/bin/r/stats.csv.r +++ /dev/null @@ -1,94 +0,0 @@ -#rm(list=ls(all=TRUE)) -#data_fn="tmp/" -#folder_fn="results-benchmark-binary" -#results_fn=paste(data_fn,folder_fn,"/raw",sep="") -#outtxt_fn=paste(data_fn,folder_fn,"/results-text.txt",sep="") -#results_fn="raw" -#outtxt_fn="results-text.txt" - -configs.threads=1 -#configs.loop=10 -#configs.recursion=c(10) -#configs.labels=c("No Probe","Inactive Probe","Collecting Data","Writing Data (ASCII)", "Writing Data (Bin)") -configs.count=length(configs.labels) -#results.count=2000000 -#results.skip=1000000 - -#bars.minval=500 -#bars.maxval=600 - - -throughput = array(list(),dim=c(length(configs.recursion),configs.count)) -## "[ recursion , config , loop ]" -resultsBIG <- array(dim=c(length(configs.recursion),configs.count,configs.threads*configs.loop*(results.count-results.skip)),dimnames=list(configs.recursion,configs.labels,c(1:(configs.threads*configs.loop*(results.count-results.skip))))) -for (cr in configs.recursion) { - for (cc in (1:configs.count)) { - recordsPerSecond = c() - rpsLastTime = 0 - rpsCount = 0 - for (cl in (1:configs.loop)) { - results_fn_temp=paste(results_fn, "-", cl, "-", cr, "-", cc, ".csv", sep="") - for (ct in (1:configs.threads)) { - results=read.csv2(results_fn_temp,nrows=(results.count-results.skip),skip=(ct-1)*results.count+results.skip,quote="",colClasses=c("NULL","numeric"),comment.char="",col.names=c("thread_id","duration_nsec"),header=FALSE) - resultsBIG[(1:length(configs.recursion))[configs.recursion==cr],cc,c(((cl-1)*configs.threads*(results.count-results.skip)+1):(cl*configs.threads*(results.count-results.skip)))] <- results[["duration_nsec"]]/(1000) - - for (timeForRecord in results[["duration_nsec"]]) { - if (rpsLastTime + timeForRecord >= 1000000000) { - recordsPerSecond <- c(recordsPerSecond, rpsCount) - rpsCount = 0 - rpsLastTime = 1000000000 - rpsLastTime - } - while (timeForRecord > 1000000000) { - recordsPerSecond <- c(recordsPerSecond, 0) - timeForRecord = timeForRecord - 1000000000 - } - rpsCount = rpsCount + 1 - rpsLastTime = rpsLastTime + timeForRecord - } - } - rm(results,results_fn_temp) - } - recordsPerSecond <- c(recordsPerSecond, rpsCount) - throughput[[(1:length(configs.recursion))[configs.recursion==cr],cc]] <- recordsPerSecond - rm(recordsPerSecond,rpsLastTime,rpsCount) - } -} - - -for (cr in configs.recursion) { - printvalues = matrix(nrow=7,ncol=configs.count,dimnames=list(c("mean","ci95%","md25%","md50%","md75%","max","min"),c(1:configs.count))) - printthrough = matrix(nrow=7,ncol=configs.count,dimnames=list(c("mean","ci95%","md25%","md50%","md75%","max","min"),c(1:configs.count))) - for (cc in (1:configs.count)) { - printvalues["mean",cc]=mean(resultsBIG[(1:length(configs.recursion))[configs.recursion==cr],cc,c(1:(results.count-results.skip))]) - printvalues["ci95%",cc]=qnorm(0.975)*sd(resultsBIG[(1:length(configs.recursion))[configs.recursion==cr],cc,c(1:(results.count-results.skip))])/sqrt(length(resultsBIG[(1:length(configs.recursion))[configs.recursion==cr],cc,c(1:(results.count-results.skip))])) - printvalues[c("md25%","md50%","md75%"),cc]=quantile(resultsBIG[(1:length(configs.recursion))[configs.recursion==cr],cc,c(1:(results.count-results.skip))],probs=c(0.25,0.5,0.75)) - printvalues["max",cc]=max(resultsBIG[(1:length(configs.recursion))[configs.recursion==cr],cc,c(1:(results.count-results.skip))]) - printvalues["min",cc]=min(resultsBIG[(1:length(configs.recursion))[configs.recursion==cr],cc,c(1:(results.count-results.skip))]) - printthrough["mean",cc]=mean(throughput[[(1:length(configs.recursion))[configs.recursion==cr],cc]]) - printthrough["ci95%",cc]=qnorm(0.975)*sd(throughput[[(1:length(configs.recursion))[configs.recursion==cr],cc]])/sqrt(length(throughput[[(1:length(configs.recursion))[configs.recursion==cr],cc]])) - printthrough[c("md25%","md50%","md75%"),cc]=quantile(throughput[[(1:length(configs.recursion))[configs.recursion==cr],cc]],probs=c(0.25,0.5,0.75)) - printthrough["max",cc]=max(throughput[[(1:length(configs.recursion))[configs.recursion==cr],cc]]) - printthrough["min",cc]=min(throughput[[(1:length(configs.recursion))[configs.recursion==cr],cc]]) - } - resultstext=formatC(printvalues,format="f",digits=4,width=8) - throughtext=formatC(printthrough,format="f",digits=1,width=12) - print(resultstext) - print(throughtext) - write(paste("Recursion Depth: ", cr),file=outtxt_fn,append=TRUE) - write("response time",file=outtxt_fn,append=TRUE) - write.table(resultstext,file=outtxt_fn,append=TRUE,quote=FALSE,sep="\t",col.names=FALSE) - write("Throughput",file=outtxt_fn,append=TRUE) - write.table(throughtext,file=outtxt_fn,append=TRUE,quote=FALSE,sep="\t",col.names=FALSE) - - concResult <- "" - headResult <- "" - for (cc in (1:(configs.count-1))) { - headResult <- paste(headResult, configs.labels[cc], ","); - concResult <- paste(concResult, printvalues["mean",cc], ",") - } - headResult <- paste(headResult, configs.labels[configs.count]) - concResult <- paste(concResult, printvalues["mean",configs.count]) - - write(headResult,file=outcsv_fn,append=TRUE) - write(concResult,file=outcsv_fn,append=TRUE) -} diff --git a/bin/r/stats.r b/bin/r/stats.r deleted file mode 100644 index f16ac7a1cbb867f0786436e43d129c65c3a8a176..0000000000000000000000000000000000000000 --- a/bin/r/stats.r +++ /dev/null @@ -1,82 +0,0 @@ -#rm(list=ls(all=TRUE)) -#data_fn="tmp/" -#folder_fn="results-benchmark-binary" -#results_fn=paste(data_fn,folder_fn,"/raw",sep="") -#outtxt_fn=paste(data_fn,folder_fn,"/results-text.txt",sep="") -#results_fn="raw" -#outtxt_fn="results-text.txt" - -configs.threads=1 -#configs.loop=10 -#configs.recursion=c(10) -#configs.labels=c("No Probe","Inactive Probe","Collecting Data","Writing Data") -configs.count=length(configs.labels) -#results.count=2000000 -#results.skip=1000000 - -#bars.minval=500 -#bars.maxval=600 - - -throughput = array(list(),dim=c(length(configs.recursion),configs.count)) -## "[ recursion , config , loop ]" -resultsBIG <- array(dim=c(length(configs.recursion),configs.count,configs.threads*configs.loop*(results.count-results.skip)),dimnames=list(configs.recursion,configs.labels,c(1:(configs.threads*configs.loop*(results.count-results.skip))))) -for (cr in configs.recursion) { - for (cc in (1:configs.count)) { - recordsPerSecond = c() - rpsLastTime = 0 - rpsCount = 0 - for (cl in (1:configs.loop)) { - results_fn_temp=paste(results_fn, "-", cl, "-", cr, "-", cc, ".csv", sep="") - for (ct in (1:configs.threads)) { - results=read.csv2(results_fn_temp,nrows=(results.count-results.skip),skip=(ct-1)*results.count+results.skip,quote="",colClasses=c("NULL","numeric"),comment.char="",col.names=c("thread_id","duration_nsec"),header=FALSE) - resultsBIG[(1:length(configs.recursion))[configs.recursion==cr],cc,c(((cl-1)*configs.threads*(results.count-results.skip)+1):(cl*configs.threads*(results.count-results.skip)))] <- results[["duration_nsec"]]/(1000) - - for (timeForRecord in results[["duration_nsec"]]) { - if (rpsLastTime + timeForRecord >= 1000000000) { - recordsPerSecond <- c(recordsPerSecond, rpsCount) - rpsCount = 0 - rpsLastTime = 1000000000 - rpsLastTime - } - while (timeForRecord > 1000000000) { - recordsPerSecond <- c(recordsPerSecond, 0) - timeForRecord = timeForRecord - 1000000000 - } - rpsCount = rpsCount + 1 - rpsLastTime = rpsLastTime + timeForRecord - } - } - rm(results,results_fn_temp) - } - recordsPerSecond <- c(recordsPerSecond, rpsCount) - throughput[[(1:length(configs.recursion))[configs.recursion==cr],cc]] <- recordsPerSecond - rm(recordsPerSecond,rpsLastTime,rpsCount) - } -} - - -for (cr in configs.recursion) { - printvalues = matrix(nrow=7,ncol=configs.count,dimnames=list(c("mean","ci95%","md25%","md50%","md75%","max","min"),c(1:configs.count))) - printthrough = matrix(nrow=7,ncol=configs.count,dimnames=list(c("mean","ci95%","md25%","md50%","md75%","max","min"),c(1:configs.count))) - for (cc in (1:configs.count)) { - printvalues["mean",cc]=mean(resultsBIG[(1:length(configs.recursion))[configs.recursion==cr],cc,c(1:(results.count-results.skip))]) - printvalues["ci95%",cc]=qnorm(0.975)*sd(resultsBIG[(1:length(configs.recursion))[configs.recursion==cr],cc,c(1:(results.count-results.skip))])/sqrt(length(resultsBIG[(1:length(configs.recursion))[configs.recursion==cr],cc,c(1:(results.count-results.skip))])) - printvalues[c("md25%","md50%","md75%"),cc]=quantile(resultsBIG[(1:length(configs.recursion))[configs.recursion==cr],cc,c(1:(results.count-results.skip))],probs=c(0.25,0.5,0.75)) - printvalues["max",cc]=max(resultsBIG[(1:length(configs.recursion))[configs.recursion==cr],cc,c(1:(results.count-results.skip))]) - printvalues["min",cc]=min(resultsBIG[(1:length(configs.recursion))[configs.recursion==cr],cc,c(1:(results.count-results.skip))]) - printthrough["mean",cc]=mean(throughput[[(1:length(configs.recursion))[configs.recursion==cr],cc]]) - printthrough["ci95%",cc]=qnorm(0.975)*sd(throughput[[(1:length(configs.recursion))[configs.recursion==cr],cc]])/sqrt(length(throughput[[(1:length(configs.recursion))[configs.recursion==cr],cc]])) - printthrough[c("md25%","md50%","md75%"),cc]=quantile(throughput[[(1:length(configs.recursion))[configs.recursion==cr],cc]],probs=c(0.25,0.5,0.75)) - printthrough["max",cc]=max(throughput[[(1:length(configs.recursion))[configs.recursion==cr],cc]]) - printthrough["min",cc]=min(throughput[[(1:length(configs.recursion))[configs.recursion==cr],cc]]) - } - resultstext=formatC(printvalues,format="f",digits=4,width=8) - throughtext=formatC(printthrough,format="f",digits=1,width=12) - print(resultstext) - print(throughtext) - write(paste("Recursion Depth: ", cr),file=outtxt_fn,append=TRUE) - write("response time",file=outtxt_fn,append=TRUE) - write.table(resultstext,file=outtxt_fn,append=TRUE,quote=FALSE,sep="\t",col.names=FALSE) - write("Throughput",file=outtxt_fn,append=TRUE) - write.table(throughtext,file=outtxt_fn,append=TRUE,quote=FALSE,sep="\t",col.names=FALSE) -} diff --git a/bin/r/stats2.r b/bin/r/stats2.r deleted file mode 100644 index 7abb7c56a379b31f94d39a8b38a20ab11a4e99d9..0000000000000000000000000000000000000000 --- a/bin/r/stats2.r +++ /dev/null @@ -1,31 +0,0 @@ -#rm(list=ls(all=TRUE)) -results_fn="tmp/results-benchmark-binary/raw" -outtxt_fn="tmp/results-benchmark-binary/results-text.txt" - -configs.loop=10 -configs.labels=c("No Probe","Inactive Probe","Collecting Data","Writing Data","Reconstructing Data","Reducing Data") -configs.count=length(configs.labels) -results.count=100000000 -results.skip=50000000 - -printvalues = matrix(nrow=7,ncol=configs.count,dimnames=list(c("mean","ci95%","md25%","md50%","md75%","max","min"),c(1:configs.count))) - -cr=10 -for (cc in (1:configs.count)) { - resultsBIG <- c() - for (cl in (1:configs.loop)) { - results_fn_temp=paste(results_fn, "-", cl, "-", cr, "-", cc, ".csv", sep="") - results=read.csv2(results_fn_temp,nrows=(results.count-results.skip),skip=results.skip,quote="",colClasses=c("NULL","numeric"),comment.char="",col.names=c("thread_id","duration_nsec"),header=FALSE) - resultsBIG <- c(resultsBIG, results[["duration_nsec"]]/(1000)) - rm(results) - } - printvalues["mean",cc]=mean(resultsBIG) - printvalues["ci95%",cc]=qnorm(0.975)*sd(resultsBIG)/sqrt(length(resultsBIG)) - printvalues[c("md25%","md50%","md75%"),cc]=quantile(resultsBIG,probs=c(0.25,0.5,0.75)) - printvalues["max",cc]=max(resultsBIG) - printvalues["min",cc]=min(resultsBIG) -} -resultstext=formatC(printvalues,format="f",digits=4,width=8) -print(resultstext) -write("response time",file=outtxt_fn,append=TRUE) -write.table(resultstext,file=outtxt_fn,append=TRUE,quote=FALSE,sep="\t",col.names=FALSE) diff --git a/bin/r/stats3.r b/bin/r/stats3.r deleted file mode 100644 index 660cf0b2f4adef84d3a4d32a1c3c0b49e9c36fa1..0000000000000000000000000000000000000000 --- a/bin/r/stats3.r +++ /dev/null @@ -1,42 +0,0 @@ -#rm(list=ls(all=TRUE)) -results_fn="results/raw" -outtxt_fn="results-text.txt" - -configs.threads=c(1:6) -configs.loop=1 -configs.recursion=c(10) -configs.labels=c("No Probe","Inactive Probe","Collecting Data","Writing Data") -configs.count=length(configs.labels) -results.count=200000 -results.skip=100000 - -for (threads in configs.threads) { - resultsBIG <- array(dim=c(length(configs.recursion),configs.count,threads*configs.loop*(results.count-results.skip)),dimnames=list(configs.recursion,configs.labels,c(1:(threads*configs.loop*(results.count-results.skip))))) - for (cr in configs.recursion) { - for (cc in (1:configs.count)) { - for (cl in (1:configs.loop)) { - results_fn_temp=paste(results_fn, "-", cl, "-", threads, "-", cc, ".csv", sep="") - for (ct in (1:threads)) { - results=read.csv2(results_fn_temp,nrows=(results.count-results.skip),skip=(ct-1)*results.count+results.skip,quote="",colClasses=c("NULL","numeric"),comment.char="",col.names=c("thread_id","duration_nsec"),header=FALSE) - resultsBIG[(1:length(configs.recursion))[configs.recursion==cr],cc,c(((cl-1)*threads*(results.count-results.skip)+1):(cl*threads*(results.count-results.skip)))] <- results[["duration_nsec"]]/(1000) - } - rm(results,results_fn_temp) - } - } - } - for (cr in configs.recursion) { - printvalues = matrix(nrow=7,ncol=configs.count,dimnames=list(c("mean","ci95%","md25%","md50%","md75%","max","min"),c(1:configs.count))) - for (cc in (1:configs.count)) { - printvalues["mean",cc]=mean(resultsBIG[(1:length(configs.recursion))[configs.recursion==cr],cc,c(1:(results.count-results.skip))]) - printvalues["ci95%",cc]=qnorm(0.975)*sd(resultsBIG[(1:length(configs.recursion))[configs.recursion==cr],cc,c(1:(results.count-results.skip))])/sqrt(length(resultsBIG[(1:length(configs.recursion))[configs.recursion==cr],cc,c(1:(results.count-results.skip))])) - printvalues[c("md25%","md50%","md75%"),cc]=quantile(resultsBIG[(1:length(configs.recursion))[configs.recursion==cr],cc,c(1:(results.count-results.skip))],probs=c(0.25,0.5,0.75)) - printvalues["max",cc]=max(resultsBIG[(1:length(configs.recursion))[configs.recursion==cr],cc,c(1:(results.count-results.skip))]) - printvalues["min",cc]=min(resultsBIG[(1:length(configs.recursion))[configs.recursion==cr],cc,c(1:(results.count-results.skip))]) - } - resultstext=formatC(printvalues,format="f",digits=4,width=8) - print(resultstext) - write(paste("Threads: ", threads),file=outtxt_fn,append=TRUE) - write("response time",file=outtxt_fn,append=TRUE) - write.table(resultstext,file=outtxt_fn,append=TRUE,quote=FALSE,sep="\t",col.names=FALSE) - } -} diff --git a/bin/r/timeseries-average.r b/bin/r/timeseries-average.r deleted file mode 100644 index bd136daf39d52f0e86fd82ded57be053b2c6596a..0000000000000000000000000000000000000000 --- a/bin/r/timeseries-average.r +++ /dev/null @@ -1,53 +0,0 @@ -#rm(list=ls(all=TRUE)) -#data_fn="tmp/" -#folder_fn="results-benchmark-binary" -#results_fn=paste(data_fn,folder_fn,"/raw",sep="") -#output_fn=paste(data_fn,folder_fn,"/results-timeseries-avg.pdf",sep="") - -#configs.loop=10 -#configs.recursion=c(10) -#configs.labels=c("Method time (T)","Instrumentation (I)","Collecting (C)","Writing (W)") -#configs.colors=c("black","red","blue","green") -configs.count=length(configs.labels) - -## We assume same amount of data in each category -#results.count=2000000 -buckets.count=1000 -buckets.size=results.count/buckets.count - -## Configure Timeseries -#tsconf.min=0 -#tsconf.max=50 - -pdf(output_fn, width=10, height=6.25, paper="special") - -for (cr in configs.recursion) { - results.ts <- array(dim=c(buckets.count,configs.count)) - if (exists("results.temp")) rm(results.temp) - for (cc in (1:configs.count)) { - results.bucket <- array(dim=c(buckets.count)) - for (cl in (1:configs.loop)) { - results_fn_temp=paste(results_fn, "-", cl, "-", cr, "-", cc, ".csv", sep="") - results=read.csv2(results_fn_temp,quote="",colClasses=c("NULL","numeric"),comment.char="",col.names=c("thread_id","duration_nsec"),nrows=results.count) - if (exists("results.temp")) { - results.temp = data.frame(results.temp,results["duration_nsec"]/(1000)) - } else { - results.temp = data.frame(results["duration_nsec"]/(1000)) - } - rm(results,results_fn_temp) - } - results = rowMeans(results.temp) - rm(results.temp) - for (ci in (1:buckets.count)) { - results.bucket[ci] <- mean(results[(((ci-1)*buckets.size)+1):(ci*buckets.size)]) - } - results.ts[,cc]=ts(results.bucket,end=results.count,deltat=buckets.size) - rm(results,results.bucket) - } - ts.plot(results.ts,gpars=list(ylim=c(tsconf.min,tsconf.max),col=configs.colors,xlab="Number of method executions",axes=FALSE)) - axis(2) - axis(1,at=c(0,buckets.count/4,buckets.count/2,buckets.count*3/4,buckets.count),labels=format(c(0,results.count/4,results.count/2,results.count*3/4,results.count),scientific=FALSE)) - legend("topright",inset=c(0.01,0.01),legend=c(rev(configs.labels)),lty="solid",col=rev(configs.colors),bg="white",title="Mean response time of ...",ncol=2) - title(ylab=expression(paste("Mean response time (",mu,"s)"))) -} -invisible(dev.off()) diff --git a/bin/r/timeseries-threads.r b/bin/r/timeseries-threads.r deleted file mode 100644 index bffe674d89b167defd19ef108e36cc804464fe20..0000000000000000000000000000000000000000 --- a/bin/r/timeseries-threads.r +++ /dev/null @@ -1,44 +0,0 @@ -#rm(list=ls(all=TRUE)) -#data_fn="tmp/" -#folder_fn="results-benchmark-binary" -#results_fn=paste(data_fn,folder_fn,"/raw",sep="") -#output_fn=paste(data_fn,folder_fn,"/results-timeseries.pdf",sep="") - -#configs.loop=10 -#configs.recursion=c(10) -#configs.labels=c("No Probe","Deactivated Probe","Collecting Data","Writing Data") -#configs.colors=c("black","red","blue","green") -configs.count=length(configs.labels) - -## We assume same amount of data in each category -#results.count=2000000 -buckets.count=1000 -buckets.size=results.count/buckets.count - -## Configure Timeseries -#tsconf.min=0 -#tsconf.max=50 - -pdf(output_fn, width=10, height=6.25, paper="special") - -for (cr in configs.threads) { - for (cl in (1:configs.loop)) { - results.ts <- array(dim=c(buckets.count,configs.count)) - for (cc in (1:configs.count)) { - results.bucket <- array(dim=c(buckets.count)) - results_fn_temp=paste(results_fn, "-", cl, "-", cr, "-", cc, ".csv", sep="") - results=read.csv2(results_fn_temp,quote="",colClasses=c("NULL","numeric"),comment.char="",col.names=c("thread_id","duration_nsec"),nrows=results.count) - results["rt_musec"]=results["duration_nsec"]/(1000) - results$duration_nsec <- NULL - for (ci in (1:buckets.count)) { - results.bucket[ci] <- mean(results[(((ci-1)*buckets.size)+1):(ci*buckets.size),"rt_musec"]) - } - results.ts[,cc]=ts(results.bucket,end=results.count,deltat=buckets.size) - rm(results,results_fn_temp,results.bucket) - } - ts.plot(results.ts,gpars=list(ylim=c(tsconf.min,tsconf.max),col=configs.colors,xlab="Executions")) - legend("topright",inset=c(0.01,0.01),legend=c(rev(configs.labels)),lty="solid",col=rev(configs.colors),bg="white",title="Mean execution time of ...",ncol=2) - title(main=paste("Iteration: ", cl, " Threads: ", cr),ylab=expression(paste("Execution Time (",mu,"s)"))) - } -} -invisible(dev.off()) diff --git a/bin/r/timeseries.r b/bin/r/timeseries.r deleted file mode 100644 index caef9015b35193780bde9774c41f60fbd79e360f..0000000000000000000000000000000000000000 --- a/bin/r/timeseries.r +++ /dev/null @@ -1,44 +0,0 @@ -#rm(list=ls(all=TRUE)) -#data_fn="tmp/" -#folder_fn="results-benchmark-binary" -#results_fn=paste(data_fn,folder_fn,"/raw",sep="") -#output_fn=paste(data_fn,folder_fn,"/results-timeseries.pdf",sep="") - -#configs.loop=10 -#configs.recursion=c(10) -#configs.labels=c("No Probe","Deactivated Probe","Collecting Data","Writing Data") -#configs.colors=c("black","red","blue","green") -configs.count=length(configs.labels) - -## We assume same amount of data in each category -#results.count=2000000 -buckets.count=1000 -buckets.size=results.count/buckets.count - -## Configure Timeseries -#tsconf.min=0 -#tsconf.max=50 - -pdf(output_fn, width=10, height=6.25, paper="special") - -for (cr in configs.recursion) { - for (cl in (1:configs.loop)) { - results.ts <- array(dim=c(buckets.count,configs.count)) - for (cc in (1:configs.count)) { - results.bucket <- array(dim=c(buckets.count)) - results_fn_temp=paste(results_fn, "-", cl, "-", cr, "-", cc, ".csv", sep="") - results=read.csv2(results_fn_temp,quote="",colClasses=c("NULL","numeric"),comment.char="",col.names=c("thread_id","duration_nsec"),nrows=results.count) - results["rt_musec"]=results["duration_nsec"]/(1000) - results$duration_nsec <- NULL - for (ci in (1:buckets.count)) { - results.bucket[ci] <- mean(results[(((ci-1)*buckets.size)+1):(ci*buckets.size),"rt_musec"]) - } - results.ts[,cc]=ts(results.bucket,end=results.count,deltat=buckets.size) - rm(results,results_fn_temp,results.bucket) - } - ts.plot(results.ts,gpars=list(ylim=c(tsconf.min,tsconf.max),col=configs.colors,xlab="Executions")) - legend("topright",inset=c(0.01,0.01),legend=c(rev(configs.labels)),lty="solid",col=rev(configs.colors),bg="white",title="Mean execution time of ...",ncol=2) - title(main=paste("Iteration: ", cl, " Recursion Depth: ", cr),ylab=expression(paste("Execution Time (",mu,"s)"))) - } -} -invisible(dev.off()) diff --git a/build.gradle b/build.gradle index 041f1ac3cfe6a0d479a35e6c5254670e3be22137..73de2cfac6650d35d8bee3eb2464e0f9bcae0c8f 100644 --- a/build.gradle +++ b/build.gradle @@ -15,6 +15,7 @@ repositories { // You can declare any Maven/Ivy/file repository here. jcenter() mavenCentral() + maven { url "https://oss.sonatype.org/content/repositories/snapshots/" } } dependencies { @@ -27,10 +28,11 @@ dependencies { } subprojects { - repositories { - // Use jcenter for resolving dependencies. - // You can declare any Maven/Ivy/file repository here. - jcenter() - mavenCentral() -} + repositories { + // Use jcenter for resolving dependencies. + // You can declare any Maven/Ivy/file repository here. + jcenter() + mavenCentral() + maven { url "https://oss.sonatype.org/content/repositories/snapshots/" } + } } diff --git a/continuous-integration/executeRemoteMicroBenchmark.sh b/continuous-integration/executeRemoteMicroBenchmark.sh old mode 100644 new mode 100755 diff --git a/frameworks/Kieker/OverheadEvaluationMicrobenchmark/executeRemoteMicroBenchmark.sh b/frameworks/Kieker/OverheadEvaluationMicrobenchmark/executeRemoteMicroBenchmark.sh old mode 100644 new mode 100755 diff --git a/frameworks/Kieker/OverheadEvaluationMicrobenchmark/rerun-benchmark.sh b/frameworks/Kieker/OverheadEvaluationMicrobenchmark/rerun-benchmark.sh old mode 100644 new mode 100755 diff --git a/frameworks/Kieker/benchmark.sh b/frameworks/Kieker/benchmark.sh index f7ec6cbd74fffdcbb71a087ae7cc9baae8dc44f5..9745fc16ea916b6545499e3b835dc23711d0ba02 100755 --- a/frameworks/Kieker/benchmark.sh +++ b/frameworks/Kieker/benchmark.sh @@ -32,6 +32,15 @@ fi getKiekerAgent +RECEIVER_ARCHIVE="${BASE_DIR}/../../tools/receiver/build/distributions/receiver.tar" + +if [ -f "${RECEIVER_ARCHIVE}" ] ; then + tar -xpf "${RECEIVER_ARCHIVE}" +else + echo "Error receiver not found at ${RECEIVER_ARCHIVE}" + exit 1 +fi + PARENT=`dirname "${RESULTS_DIR}"` RECEIVER_BIN="${BASE_DIR}/receiver/bin/receiver" @@ -62,11 +71,11 @@ TIME=`expr ${METHOD_TIME} \* ${TOTAL_NUM_OF_CALLS} / 1000000000 \* 4 \* ${RECURS information "Experiment will take circa ${TIME} seconds." information "Removing and recreating '${RESULTS_DIR}'" -(rm -rf ${RESULTS_DIR}/*csv) && mkdir -p ${RESULTS_DIR} +rm -rf "${RESULTS_DIR}" && mkdir -p "${RESULTS_DIR}" # Clear kieker.log and initialize logging -rm -f ${DATA_DIR}/kieker.log -touch ${DATA_DIR}/kieker.log +rm -f "${DATA_DIR}/kieker.log" +touch "${DATA_DIR}/kieker.log" # general server arguments JAVA_ARGS="-server" @@ -95,9 +104,9 @@ WRITER_CONFIG[5]="-Dkieker.monitoring.writer=kieker.monitoring.writer.tcp.Single RECEIVER[5]="${RECEIVER_BIN} 2345" ## Write configuration -uname -a >${RESULTS_DIR}/configuration.txt -${JAVA_BIN} ${JAVA_ARGS} -version 2>>${RESULTS_DIR}/configuration.txt -cat << EOF >>${RESULTS_DIR}/configuration.txt +uname -a > "${RESULTS_DIR}/configuration.txt" +"${JAVA_BIN}" "${JAVA_ARGS}" -version 2>> "${RESULTS_DIR}/configuration.txt" +cat << EOF >> "${RESULTS_DIR}/configuration.txt" JAVA_ARGS: ${JAVA_ARGS} Runtime: circa ${TIME} seconds @@ -127,56 +136,56 @@ function execute-experiment() { kieker_parameters="$5" information " # recursion=${recursion} loop=${loop} writer=${index} ${title}" - echo " # ${loop}.${recursion}.${index} ${title}" >> ${DATA_DIR}/kieker.log + echo " # ${loop}.${recursion}.${index} ${title}" >> "${DATA_DIR}/kieker.log" if [ "${kieker_parameters}" = "" ] ; then - BENCHMARK_OPTS=${JAVA_ARGS} + BENCHMARK_OPTS="${JAVA_ARGS}" else BENCHMARK_OPTS="${JAVA_ARGS} ${LTW_ARGS} ${KIEKER_ARGS} ${kieker_parameters}" fi - - echo ${BENCHMARK_OPTS}" -jar MooBench.jar" + + echo "Run options: ${BENCHMARK_OPTS} -jar MooBench.jar" ${JAVA_BIN} ${BENCHMARK_OPTS} -jar MooBench.jar \ --application moobench.application.MonitoredClassSimple \ - --output-filename ${RAWFN}-${loop}-${recursion}-${index}.csv \ - --total-calls ${TOTAL_NUM_OF_CALLS} \ - --method-time ${METHOD_TIME} \ + --output-filename "${RAWFN}-${loop}-${recursion}-${index}.csv" \ + --total-calls "${TOTAL_NUM_OF_CALLS}" \ + --method-time "${METHOD_TIME}" \ --total-threads 1 \ - --recursion-depth ${recursion} &> ${RESULTS_DIR}/output_"$loop"_"$RECURSION_DEPTH"_$index.txt + --recursion-depth "${recursion}" &> "${RESULTS_DIR}/output_${loop}_${RECURSION_DEPTH}_${index}.txt" - rm -rf ${DATA_DIR}/kieker-* + rm -rf "${DATA_DIR}"/kieker-* - [ -f ${DATA_DIR}/hotspot.log ] && mv ${DATA_DIR}/hotspot.log ${RESULTS_DIR}/hotspot-${loop}-${recursion}-${index}.log - echo >> ${DATA_DIR}/kieker.log - echo >> ${DATA_DIR}/kieker.log + [ -f "${DATA_DIR}/hotspot.log" ] && mv "${DATA_DIR}/hotspot.log" "${RESULTS_DIR}/hotspot-${loop}-${recursion}-${index}.log" + echo >> "${DATA_DIR}/kieker.log" + echo >> "${DATA_DIR}/kieker.log" sync - sleep ${SLEEP_TIME} + sleep "${SLEEP_TIME}" } function execute-benchmark-body() { index="$1" loop="$2" recursion="$3" - if [[ ${RECEIVER[$index]} ]] ; then + if [[ "${RECEIVER[$index]}" ]] ; then echo "receiver ${RECEIVER[$index]}" - ${RECEIVER[$index]} & #>> ${DATA_DIR}/kieker.receiver-$i-$index.log & + ${RECEIVER[$index]} >> "${DATA_DIR}/kieker.receiver-${i}-${index}.log" & RECEIVER_PID=$! echo "PID $RECEIVER_PID" fi execute-experiment "$loop" "$recursion" "$index" "${TITLE[$index]}" "${WRITER_CONFIG[$index]}" - if [[ $RECEIVER_PID ]] ; then - kill -TERM $RECEIVER_PID + if [[ "${RECEIVER_PID}" ]] ; then + kill -TERM "${RECEIVER_PID}" unset RECEIVER_PID fi } ## Execute Benchmark function execute-benchmark() { - for ((loop=1;loop<=${NUM_OF_LOOPS};loop+=1)); do - recursion=${RECURSION_DEPTH} + for ((loop=1;loop<="${NUM_OF_LOOPS}";loop+=1)); do + recursion="${RECURSION_DEPTH}" information "## Starting iteration ${loop}/${NUM_OF_LOOPS}" echo "## Starting iteration ${loop}/${NUM_OF_LOOPS}" >> "${DATA_DIR}/kieker.log" @@ -184,7 +193,7 @@ function execute-benchmark() { for ((index=0;index<${#WRITER_CONFIG[@]};index+=1)); do execute-benchmark-body $index $loop $recursion done - + printIntermediaryResults done @@ -200,11 +209,11 @@ if [ "$MODE" == "execute" ] ; then else execute-benchmark-body $OPTION 1 1 fi - + # Create R labels LABELS=$(createRLabels) run-r - + cleanup-results else execute-benchmark-body $OPTION 1 1 diff --git a/frameworks/Kieker/labels.sh b/frameworks/Kieker/labels.sh old mode 100644 new mode 100755 diff --git a/frameworks/Kieker/runExponentialSizes.sh b/frameworks/Kieker/runExponentialSizes.sh old mode 100644 new mode 100755 diff --git a/frameworks/OpenTelemetry/benchmark.sh b/frameworks/OpenTelemetry/benchmark.sh old mode 100644 new mode 100755 diff --git a/frameworks/OpenTelemetry/labels.sh b/frameworks/OpenTelemetry/labels.sh old mode 100644 new mode 100755 diff --git a/frameworks/OpenTelemetry/runExponentialSizes.sh b/frameworks/OpenTelemetry/runExponentialSizes.sh old mode 100644 new mode 100755 diff --git a/frameworks/SPASSmeter/benchmark-causes.sh b/frameworks/SPASSmeter/benchmark-causes.sh old mode 100644 new mode 100755 diff --git a/frameworks/SPASSmeter/benchmark-tcp.sh b/frameworks/SPASSmeter/benchmark-tcp.sh old mode 100644 new mode 100755 diff --git a/frameworks/SPASSmeter/benchmark.sh b/frameworks/SPASSmeter/benchmark.sh old mode 100644 new mode 100755 diff --git a/frameworks/common-functions.sh b/frameworks/common-functions.sh old mode 100644 new mode 100755 diff --git a/frameworks/inspectIT/benchmark.sh b/frameworks/inspectIT/benchmark.sh old mode 100644 new mode 100755 diff --git a/frameworks/inspectIT/labels.sh b/frameworks/inspectIT/labels.sh old mode 100644 new mode 100755 diff --git a/frameworks/inspectIT/runExponentialSizes.sh b/frameworks/inspectIT/runExponentialSizes.sh old mode 100644 new mode 100755 diff --git a/frameworks/runAll.sh b/frameworks/runAll.sh old mode 100644 new mode 100755 index 2e8bc3fcec20b0de3459671a4c35dc6ba4fdb09b..2ac65a113c18f1b86fecaed2e7366f0218c3dd09 --- a/frameworks/runAll.sh +++ b/frameworks/runAll.sh @@ -1,11 +1,15 @@ #!/bin/bash echo "This scripts benchmarks all defined monitoring frameworks, currently InspectIT, Kieker and OpenTelemetry" +BASE_DIR=$(cd "$(dirname "$0")"; pwd) + +cd "${BASE_DIR}" + start=$(pwd) for benchmark in inspectIT OpenTelemetry Kieker do - cd $benchmark - ./benchmark.sh &> $start/log_$benchmark.txt - cd $start + cd "${benchmark}" + ./benchmark.sh &> "${start}/log_${benchmark}.txt" + cd "${start}" done diff --git a/frameworks/runR.sh b/frameworks/runR.sh old mode 100644 new mode 100755 diff --git a/tools/compile-results/build.gradle b/tools/compile-results/build.gradle index aaf434a860f4f820ac9b5241ebcc3d0cbbed6d87..4eadda0c1273832f443ccb50eb6f8712b7d2ca27 100644 --- a/tools/compile-results/build.gradle +++ b/tools/compile-results/build.gradle @@ -4,7 +4,7 @@ plugins { } application { - mainClass = 'moobench.tools.compile.results.CompileResultsMain' + mainClass = 'moobench.tools.results.SummarizeResultsMain' } dependencies { @@ -14,5 +14,8 @@ dependencies { implementation 'org.apache.commons:commons-csv:1.8' implementation 'org.slf4j:slf4j-api:1.7.+' - implementation 'ch.qos.logback:logback-classic:1.2.3' + implementation 'ch.qos.logback:logback-classic:1.2.3' + implementation 'net.kieker-monitoring:kieker:2.0.0-SNAPSHOT' + implementation 'net.sourceforge.teetime:teetime:3.1-SNAPSHOT' + implementation 'com.beust:jcommander:1.78' } diff --git a/tools/compile-results/src/main/java/moobench/tools/compile/results/CompileResultsMain.java b/tools/compile-results/src/main/java/moobench/tools/compile/results/CompileResultsMain.java deleted file mode 100644 index 1b52277ea138331c66b4e623f2a2e1c963d787ea..0000000000000000000000000000000000000000 --- a/tools/compile-results/src/main/java/moobench/tools/compile/results/CompileResultsMain.java +++ /dev/null @@ -1,206 +0,0 @@ -/** - * - */ -package moobench.tools.compile.results; - -import java.io.File; -import java.io.IOException; -import java.nio.file.Files; -import java.nio.file.Paths; -import java.util.Date; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; - -import org.apache.commons.csv.CSVFormat; -import org.apache.commons.csv.CSVParser; -import org.apache.commons.csv.CSVRecord; - -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.JsonMappingException; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.node.ArrayNode; -import com.fasterxml.jackson.databind.node.DoubleNode; -import com.fasterxml.jackson.databind.node.JsonNodeFactory; -import com.fasterxml.jackson.databind.node.LongNode; -import com.fasterxml.jackson.databind.node.ObjectNode; -import com.fasterxml.jackson.databind.ObjectMapper; - -/** - * Read the CSV output of the R script and the existing JSON file and append a - * record to the JSON file based on the CSV dataset. Further compute a list of - * the last 50 runs and the last relative values. - * - * @author Reiner Jung - * - */ -public class CompileResultsMain { - - private static final String NO_INSTRUMENTATION = "No instrumentation"; - private static final String PARTIAL_RESULT_FILENAME = "partial-results.json"; - private static final String RELATIVE_RESULT_FILENAME = "relative-results.json"; - private static final int WINDOW_LENGTH = 100; - private static final String BUILD_LABEL = "build"; - private static final String TIME_LABEL = "time"; - private static final String RESULTS_LABEL = "results"; - - public static void main(String[] args) { - try { - final JsonNode rootNode; - - File jsonMainFile = Paths.get(args[1]).toFile(); - - if (jsonMainFile.exists()) { - /** Read JSON file. */ - rootNode = readJsonFile(jsonMainFile); - } else { - rootNode = readJsonString(); - } - - String basePath=jsonMainFile.getParentFile()==null?"":jsonMainFile.getParentFile().getPath() + File.separator; - - File jsonPartialFile = new File(basePath + PARTIAL_RESULT_FILENAME); - File jsonRelativeFile = new File(basePath + RELATIVE_RESULT_FILENAME); - - JsonNode resultsNode = rootNode.get(RESULTS_LABEL); - - if (!(resultsNode instanceof ArrayNode)) { - System.exit(1); - } - - ArrayNode arrayResultsNode = (ArrayNode)resultsNode; - - long build = cleanupInputData(arrayResultsNode); - - /** Read CSV file. */ - final CSVParser csvParser = new CSVParser(Files.newBufferedReader(Paths.get(args[0])), - CSVFormat.DEFAULT.withHeader()); - List<String> header = csvParser.getHeaderNames(); - - JsonNodeFactory factory = JsonNodeFactory.instance; - - /** Put CSV data in main JSON. */ - for (CSVRecord record : csvParser.getRecords()) { - Map<String, JsonNode> recordMap = new HashMap<>(); - recordMap.put(TIME_LABEL, new LongNode(new Date().getTime())); - recordMap.put(BUILD_LABEL, new LongNode(build++)); - for (int i=0; i < record.size(); i++) { - recordMap.put(header.get(i).trim(), new DoubleNode(Double.parseDouble(record.get(i)))); - } - arrayResultsNode.add(new ObjectNode(factory, recordMap)); - } - - /** Produce alternative outputs. */ - JsonNode partialRootNode = createPartialResultList(arrayResultsNode); - JsonNode relativeRootNode = createRelativeResultList((ArrayNode)partialRootNode.get(RESULTS_LABEL)); - - /** Write JSON files. */ - new ObjectMapper().writeValue(jsonMainFile, rootNode); - new ObjectMapper().writeValue(jsonPartialFile, partialRootNode); - new ObjectMapper().writeValue(jsonRelativeFile, relativeRootNode); - } catch (IOException e) { - e.printStackTrace(); - } - } - - /** - * Cleanup and build number computation. - * NOTE: This method has a side effect on the input data. - * - * @param arrayResultsNode array node holding previous result data - * - * @return returns the next build number and cleanups the labels in the input data - */ - private static long cleanupInputData(ArrayNode arrayResultsNode) { - long build = 0; - /** Cleanup input data if necessary and determine highest build number. */ - for (int i=0;i<arrayResultsNode.size();i++) { - JsonNode node = arrayResultsNode.get(i); - if (node instanceof ObjectNode) { - ObjectNode objectNode = (ObjectNode)node; - - Iterator<Entry<String, JsonNode>> iterator = objectNode.fields(); - Map<String, JsonNode> map = new HashMap<>(); - while (iterator.hasNext()) { - Entry<String, JsonNode> entry = iterator.next(); - map.put(entry.getKey().trim(), entry.getValue()); - } - objectNode.removeAll(); - objectNode.setAll(map); - - JsonNode buildValue = objectNode.get("build"); - if (buildValue != null) { - if (build <= buildValue.asLong()) { - build = buildValue.asLong() + 1; - } - } - } - } - - return build; - } - - private static JsonNode createRelativeResultList(ArrayNode arrayNode) { - JsonNodeFactory factory = JsonNodeFactory.instance; - ArrayNode relativeResultsNode = new ArrayNode(factory); - - for (int i=0; i < arrayNode.size(); i++) { - JsonNode element = arrayNode.get(i); - Map<String, JsonNode> valueMap = new HashMap<>(); - - Double baseline = ((DoubleNode)element.get(NO_INSTRUMENTATION)).asDouble(); - - Iterator<Entry<String, JsonNode>> elementValueIterator = element.fields(); - while (elementValueIterator.hasNext()) { - Entry<String, JsonNode> value = elementValueIterator.next(); - if (BUILD_LABEL.equals(value.getKey()) || TIME_LABEL.equals(value.getKey())) { - valueMap.put(value.getKey(), value.getValue()); - } else { - valueMap.put(value.getKey(), new DoubleNode((value.getValue().asDouble()-baseline)/baseline)); - } - } - relativeResultsNode.add(new ObjectNode(factory, valueMap)); - } - - Map<String, JsonNode> map = new HashMap<>(); - map.put(RESULTS_LABEL, relativeResultsNode); - - return new ObjectNode(factory, map); - } - - private static JsonNode createPartialResultList(ArrayNode arrayNode) { - JsonNodeFactory factory = JsonNodeFactory.instance; - - ArrayNode partialResultsNode = new ArrayNode(factory); - - int start = arrayNode.size()>WINDOW_LENGTH?arrayNode.size()-WINDOW_LENGTH:0; - for (int i=start; i < arrayNode.size(); i++) { - JsonNode element = arrayNode.get(i); - Map<String, JsonNode> valueMap = new HashMap<>(); - Iterator<Entry<String, JsonNode>> elementValueIterator = element.fields(); - while (elementValueIterator.hasNext()) { - Entry<String, JsonNode> value = elementValueIterator.next(); - valueMap.put(value.getKey(), value.getValue()); - } - partialResultsNode.add(new ObjectNode(factory, valueMap)); - } - - Map<String, JsonNode> map = new HashMap<>(); - map.put(RESULTS_LABEL, partialResultsNode); - - return new ObjectNode(factory, map); - } - - private static JsonNode readJsonString() throws JsonMappingException, JsonProcessingException { - ObjectMapper mapper = new ObjectMapper(); - String value = "{ \"results\" : [] }"; - return mapper.readTree(value); - } - - private static JsonNode readJsonFile(File file) throws JsonProcessingException, IOException { - ObjectMapper mapper = new ObjectMapper(); - return mapper.readTree(file); - } -} diff --git a/tools/compile-results/src/main/java/moobench/tools/results/SummarizeResultsMain.java b/tools/compile-results/src/main/java/moobench/tools/results/SummarizeResultsMain.java new file mode 100644 index 0000000000000000000000000000000000000000..f12a6929338ea8eb5d9181840ff83071dc6cf0fe --- /dev/null +++ b/tools/compile-results/src/main/java/moobench/tools/results/SummarizeResultsMain.java @@ -0,0 +1,74 @@ +/** + * + */ +package moobench.tools.results; + +import java.io.File; +import java.nio.file.Files; +import java.nio.file.Path; + +import com.beust.jcommander.JCommander; + +import kieker.common.configuration.Configuration; +import kieker.common.exception.ConfigurationException; +import kieker.tools.common.AbstractService; + +/** + * Read the CSV output of the R script and the existing JSON file and append a + * record to the JSON file based on the CSV dataset. Further compute a list of + * the last 50 runs and the last relative values. + * + * @author Reiner Jung + * + */ +public class SummarizeResultsMain extends AbstractService<TeetimeConfiguration, Settings> { + + public static void main(final String[] args) { + final SummarizeResultsMain main = new SummarizeResultsMain(); + System.exit(main.run("summarize-result", "Summarize Results", args, new Settings())); + } + + @Override + protected TeetimeConfiguration createTeetimeConfiguration() throws ConfigurationException { + return new TeetimeConfiguration(this.parameterConfiguration); + } + + @Override + protected File getConfigurationFile() { + return null; + } + + @Override + protected boolean checkConfiguration(Configuration configuration, JCommander commander) { + return true; + } + + @Override + protected boolean checkParameters(JCommander commander) throws ConfigurationException { + if (!Files.exists(this.parameterConfiguration.getMainLogJson().getParent())) { + this.logger.error("Main log does not exist {}", this.parameterConfiguration.getMainLogJson().toString()); + return false; + } else if (!Files.exists(this.parameterConfiguration.getMainLogJson())) { + this.logger.info("Main log file does not exist, creating one {}", this.parameterConfiguration.getMainLogJson().toString()); + } + if (!Files.isDirectory(this.parameterConfiguration.getPartialLogJson().getParent())) { + this.logger.error("Partial log directory does not exist {}", this.parameterConfiguration.getPartialLogJson().getParent().toString()); + return false; + } + for (Path path : parameterConfiguration.getResultCsvPaths()) { + if (!Files.exists(this.parameterConfiguration.getMainLogJson())) { + this.logger.error("Experiment data file does not exist {}", path.toString()); + return false; + } + } + if (!Files.exists(this.parameterConfiguration.getMappingFile())) { + this.logger.error("Mapping file does not exist {}", this.parameterConfiguration.getMappingFile().toString()); + return false; + } + return true; + } + + @Override + protected void shutdownService() { + } +} diff --git a/tools/getConfidenceIntervalTable/getConfidenceIntervalTable.sh b/tools/getConfidenceIntervalTable/getConfidenceIntervalTable.sh old mode 100644 new mode 100755