diff --git a/.gitignore b/.gitignore index ff89d39d332c850925e8c78ed6c9cbbf0c4bd2fb..f636df0b8562ba294769ba8c516a1c31327c677e 100644 --- a/.gitignore +++ b/.gitignore @@ -13,7 +13,7 @@ frameworks/Kieker/scripts/benchmark/ frameworks/Kieker/scripts/data/ frameworks/Kieker/scripts/kieker-*-aspectj.jar frameworks/Kieker/scripts/receiver/ -frameworks/Kieker/scripts/results-kieker/ +frameworks/Kieker/results-Kieker/ frameworks/Kieker/scripts/benchmark_* frameworks/SPASSmeter/spassmeter.log frameworks/SPASSmeter/tmp/ @@ -24,7 +24,7 @@ frameworks/inspectIT/logs/ frameworks/inspectIT/tmp/ frameworks/inspectIT/zipkin/ frameworks/inspectIT/configuration.txt -frameworks/inspectIT/results-inspectit/ +frameworks/inspectIT/results-inspectIT/ frameworks/inspectIT/prometheus-2.28.1.linux-amd64/ frameworks/opentelemetry/results-opentelemetry/ frameworks/opentelemetry/opentelemetry.log diff --git a/frameworks/Kieker/labels.sh b/frameworks/Kieker/labels.sh new file mode 100644 index 0000000000000000000000000000000000000000..840ec0512d93a865bb92ea65e0070a93b448e6f3 --- /dev/null +++ b/frameworks/Kieker/labels.sh @@ -0,0 +1,6 @@ +TITLE[0]="No instrumentation" +TITLE[1]="Deactivated probe" +TITLE[2]="No logging (null writer)" +TITLE[3]="Logging (Generic Text)" +TITLE[4]="Logging (Generic Bin)" +TITLE[5]="Logging (Single TCP)" diff --git a/frameworks/Kieker/scripts/benchmark.sh b/frameworks/Kieker/scripts/benchmark.sh index 40748a8bdc92fe937118a6b00d23a21baedb45a1..02eb06a7496910b39d65e3571c48a9adb7123ada 100755 --- a/frameworks/Kieker/scripts/benchmark.sh +++ b/frameworks/Kieker/scripts/benchmark.sh @@ -18,6 +18,10 @@ fi source ../../common-functions.sh +# Only temporary fix: Overwrite Kieker results folder here +RESULTS_DIR=../results-Kieker +RAWFN=$RESULTS_DIR"/raw" + getKiekerAgent if [ -f "${BASE_DIR}/common-functions" ] ; then @@ -65,8 +69,6 @@ information "Removing and recreating '$RESULTS_DIR'" rm -f ${DATA_DIR}/kieker.log touch ${DATA_DIR}/kieker.log -RAWFN="${RESULTS_DIR}/raw" - # general server arguments JAVA_ARGS="-server" JAVA_ARGS="${JAVA_ARGS} -Xms1G -Xmx2G" @@ -85,22 +87,12 @@ declare -a RECEIVER declare -a TITLE # Configurations -TITLE[0]="No instrumentation" +source ../labels.sh WRITER_CONFIG[0]="" - -TITLE[1]="Deactivated probe" WRITER_CONFIG[1]="-Dkieker.monitoring.enabled=false -Dkieker.monitoring.writer=kieker.monitoring.writer.dump.DumpWriter" - -TITLE[2]="No logging (null writer)" WRITER_CONFIG[2]="-Dkieker.monitoring.enabled=true -Dkieker.monitoring.writer=kieker.monitoring.writer.dump.DumpWriter" - -TITLE[3]="Logging (Generic Text)" WRITER_CONFIG[3]="-Dkieker.monitoring.enabled=true -Dkieker.monitoring.writer=kieker.monitoring.writer.filesystem.FileWriter -Dkieker.monitoring.writer.filesystem.FileWriter.logStreamHandler=kieker.monitoring.writer.filesystem.TextLogStreamHandler -Dkieker.monitoring.writer.filesystem.FileWriter.customStoragePath=${DATA_DIR}/" - -TITLE[4]="Logging (Generic Bin)" WRITER_CONFIG[4]="-Dkieker.monitoring.enabled=true -Dkieker.monitoring.writer=kieker.monitoring.writer.filesystem.FileWriter -Dkieker.monitoring.writer.filesystem.FileWriter.logStreamHandler=kieker.monitoring.writer.filesystem.BinaryLogStreamHandler -Dkieker.monitoring.writer.filesystem.FileWriter.bufferSize=8192 -Dkieker.monitoring.writer.filesystem.FileWriter.customStoragePath=${DATA_DIR}/" - -TITLE[5]="Logging (Single TCP)" WRITER_CONFIG[5]="-Dkieker.monitoring.writer=kieker.monitoring.writer.tcp.SingleSocketTcpWriter -Dkieker.monitoring.writer.tcp.SingleSocketTcpWriter.port=2345" RECEIVER[5]="${BASE_DIR}/collector-2.0/bin/collector -p 2345" RECEIVER[5]="${BASE_DIR}/receiver/bin/receiver 2345" @@ -184,13 +176,6 @@ function execute-benchmark-body() { fi } -function printIntermediaryResults { - for ((index=0;index<${#WRITER_CONFIG[@]};index+=1)); do - echo -n "Intermediary results "$TITLE[$index]" " - cat results-kieker/raw-*-${RECURSION_DEPTH}-${index}.csv | awk -F';' '{print $2}' | getSum - done -} - ## Execute Benchmark function execute-benchmark() { for ((loop=1;loop<=${NUM_OF_LOOPS};loop+=1)); do diff --git a/frameworks/Kieker/scripts/config b/frameworks/Kieker/scripts/config index d499e03a3f4fe87c2e7fed6af4ce4562f156b64a..6486f0fa674fb30bb592722319b024be9e97dae6 100644 --- a/frameworks/Kieker/scripts/config +++ b/frameworks/Kieker/scripts/config @@ -4,10 +4,9 @@ # path setup JAVA_BIN="java" -RSCRIPT_PATH="${BASE_DIR}/stats.csv.r" +RSCRIPT_PATH="../../stats.csv.r" DATA_DIR="${BASE_DIR}/data" -RESULTS_DIR="${BASE_DIR}/results-kieker" AGENT="${BASE_DIR}/kieker-1.15-SNAPSHOT-aspectj.jar" BENCHMARK="${BASE_DIR}/benchmark/bin/benchmark" diff --git a/frameworks/common-functions.sh b/frameworks/common-functions.sh index 43909b470d59c8aa9f3a8e67087ff0ffa6902d45..dfabac2003231c52ee4f54c464c154d5434f006e 100644 --- a/frameworks/common-functions.sh +++ b/frameworks/common-functions.sh @@ -110,21 +110,33 @@ function stopBackgroundProcess { } function writeConfiguration() { - uname -a >${RESULTS_DIR}configuration.txt - ${JAVABIN}java ${JAVAARGS} -version 2>>${RESULTS_DIR}configuration.txt - echo "JAVAARGS: ${JAVAARGS}" >>${RESULTS_DIR}configuration.txt - echo "" >>${RESULTS_DIR}configuration.txt - echo "Runtime: circa ${TIME} seconds" >>${RESULTS_DIR}configuration.txt - echo "" >>${RESULTS_DIR}configuration.txt - echo "SLEEPTIME=${SLEEPTIME}" >>${RESULTS_DIR}configuration.txt - echo "NUM_OF_LOOPS=${NUM_OF_LOOPS}" >>${RESULTS_DIR}configuration.txt - echo "TOTAL_NUM_OF_CALLS=${TOTAL_NUM_OF_CALLS}" >>${RESULTS_DIR}configuration.txt - echo "METHODTIME=${METHODTIME}" >>${RESULTS_DIR}configuration.txt - echo "THREADS=${THREADS}" >>${RESULTS_DIR}configuration.txt - echo "RECURSION_DEPTH=${RECURSION_DEPTH}" >>${RESULTS_DIR}configuration.txt + uname -a >${RESULTS_DIR}/configuration.txt + ${JAVABIN}java ${JAVAARGS} -version 2>>${RESULTS_DIR}/configuration.txt + echo "JAVAARGS: ${JAVAARGS}" >>${RESULTS_DIR}/configuration.txt + echo "" >>${RESULTS_DIR}/configuration.txt + echo "Runtime: circa ${TIME} seconds" >>${RESULTS_DIR}/configuration.txt + echo "" >>${RESULTS_DIR}/configuration.txt + echo "SLEEPTIME=${SLEEPTIME}" >>${RESULTS_DIR}/configuration.txt + echo "NUM_OF_LOOPS=${NUM_OF_LOOPS}" >>${RESULTS_DIR}/configuration.txt + echo "TOTAL_NUM_OF_CALLS=${TOTAL_NUM_OF_CALLS}" >>${RESULTS_DIR}/configuration.txt + echo "METHODTIME=${METHODTIME}" >>${RESULTS_DIR}/configuration.txt + echo "THREADS=${THREADS}" >>${RESULTS_DIR}/configuration.txt + echo "RECURSION_DEPTH=${RECURSION_DEPTH}" >>${RESULTS_DIR}/configuration.txt sync } +function printIntermediaryResults { + for ((index=0;index<${#TITLE[@]};index+=1)); do + echo -n "Intermediary results "${TITLE[$index]}" " + cat $RESULTS_DIR/raw-*-${RECURSION_DEPTH}-${index}.csv | awk -F';' '{print $2}' | getSum + done +} + + +FRAMEWORK_NAME=$(basename -- "$BASE_DIR") +RESULTS_DIR="$BASE_DIR/results-$FRAMEWORK_NAME" +RAWFN=$RESULTS_DIR"/raw" + # Initialize all unset parameters if [ -z $SLEEP_TIME ]; then SLEEP_TIME=30 ## 30 diff --git a/frameworks/inspectIT/benchmark.sh b/frameworks/inspectIT/benchmark.sh index c0211262ab9e6115b283d005d253b1160a83861a..49fbb001d6163c253d3839e489a26b0bac73ab7d 100755 --- a/frameworks/inspectIT/benchmark.sh +++ b/frameworks/inspectIT/benchmark.sh @@ -2,22 +2,22 @@ function runNoInstrumentation { # No instrumentation - echo " # ${i}.$RECURSION_DEPTH.${k} No instrumentation" - echo " # ${i}.$RECURSION_DEPTH.${k} No instrumentation" >>${BASEDIR}inspectit.log + echo " # ${i}.$RECURSION_DEPTH.${k} "${TITLE[$k]} + echo " # ${i}.$RECURSION_DEPTH.${k} "${TITLE[$k]} >>${BASE_DIR}inspectit.log ${JAVABIN}java ${JAVAARGS_NOINSTR} ${JAR} \ --output-filename ${RAWFN}-${i}-$RECURSION_DEPTH-${k}.csv \ --total-calls ${TOTAL_NUM_OF_CALLS} \ --method-time ${METHOD_TIME} \ --total-threads ${THREADS} \ --recursion-depth ${RECURSION_DEPTH} \ - ${MOREPARAMS} &> ${RESULTSDIR}output_"$i"_"$RECURSION_DEPTH"_noinstrumentation.txt + ${MOREPARAMS} &> ${RESULTS_DIR}/output_"$i"_"$RECURSION_DEPTH"_$k.txt } function runInspectITDeactivated { # InspectIT (minimal) k=`expr ${k} + 1` - echo " # ${i}.$RECURSION_DEPTH.${k} InspectIT (deactivated)" - echo " # ${i}.$RECURSION_DEPTH.${k} InspectIT (deactivated)" >>${BASEDIR}inspectit.log + echo " # ${i}.$RECURSION_DEPTH.${k} "${TITLE[$k]} + echo " # ${i}.$RECURSION_DEPTH.${k} "${TITLE[$k]} >>${BASE_DIR}inspectit.log sleep $SLEEP_TIME ${JAVABIN}java ${JAVAARGS_INSPECTIT_DEACTIVATED} ${JAR} \ --output-filename ${RAWFN}-${i}-$RECURSION_DEPTH-${k}.csv \ @@ -26,7 +26,7 @@ function runInspectITDeactivated { --total-threads ${THREADS} \ --recursion-depth ${RECURSION_DEPTH} \ --force-terminate \ - ${MOREPARAMS} &> ${RESULTSDIR}output_"$i"_"$RECURSION_DEPTH"_inspectit.txt + ${MOREPARAMS} &> ${RESULTS_DIR}/output_"$i"_"$RECURSION_DEPTH"_$k.txt sleep $SLEEP_TIME } @@ -34,8 +34,8 @@ function runInspectITDeactivated { function runInspectITZipkin { # InspectIT (minimal) k=`expr ${k} + 1` - echo " # ${i}.$RECURSION_DEPTH.${k} InspectIT (Zipkin)" - echo " # ${i}.$RECURSION_DEPTH.${k} InspectIT (Zipkin)" >>${BASEDIR}inspectit.log + echo " # ${i}.$RECURSION_DEPTH.${k} "${TITLE[$k]} + echo " # ${i}.$RECURSION_DEPTH.${k} "${TITLE[$k]} >>${BASE_DIR}inspectit.log startZipkin sleep $SLEEP_TIME ${JAVABIN}java ${JAVAARGS_INSPECTIT_ZIPKIN} ${JAR} \ @@ -45,7 +45,7 @@ function runInspectITZipkin { --total-threads ${THREADS} \ --recursion-depth ${RECURSION_DEPTH} \ --force-terminate \ - ${MOREPARAMS} &> ${RESULTSDIR}output_"$i"_"$RECURSION_DEPTH"_inspectit.txt + ${MOREPARAMS} &> ${RESULTS_DIR}/output_"$i"_"$RECURSION_DEPTH"_$k.txt sleep $SLEEP_TIME stopBackgroundProcess } @@ -53,8 +53,8 @@ function runInspectITZipkin { function runInspectITPrometheus { # InspectIT (minimal) k=`expr ${k} + 1` - echo " # ${i}.$RECURSION_DEPTH.${k} InspectIT (Prometheus)" - echo " # ${i}.$RECURSION_DEPTH.${k} InspectIT (Prometheus)" >>${BASEDIR}inspectit.log + echo " # ${i}.$RECURSION_DEPTH.${k} "${TITLE[$k]} + echo " # ${i}.$RECURSION_DEPTH.${k} "${TITLE[$k]} >>${BASE_DIR}inspectit.log startPrometheus sleep $SLEEP_TIME ${JAVABIN}java ${JAVAARGS_INSPECTIT_PROMETHEUS} ${JAR} \ @@ -64,15 +64,15 @@ function runInspectITPrometheus { --total-threads ${THREADS} \ --recursion-depth ${RECURSION_DEPTH} \ --force-terminate \ - ${MOREPARAMS} &> ${RESULTSDIR}output_"$i"_"$RECURSION_DEPTH"_inspectit.txt + ${MOREPARAMS} &> ${RESULTS_DIR}/output_"$i"_"$RECURSION_DEPTH"_$k.txt sleep $SLEEP_TIME stopBackgroundProcess } function cleanup { - [ -f ${BASEDIR}hotspot.log ] && mv ${BASEDIR}hotspot.log ${RESULTSDIR}hotspot-${i}-${j}-${k}.log - echo >>${BASEDIR}inspectit.log - echo >>${BASEDIR}inspectit.log + [ -f ${BASE_DIR}hotspot.log ] && mv ${BASE_DIR}hotspot.log ${RESULTS_DIR}hotspot-${i}-${j}-${k}.log + echo >>${BASE_DIR}inspectit.log + echo >>${BASE_DIR}inspectit.log sync sleep ${SLEEP_TIME} } @@ -81,27 +81,12 @@ function getSum { awk '{sum += $1; square += $1^2} END {print "Average: "sum/NR" Standard Deviation: "sqrt(square / NR - (sum/NR)^2)" Count: "NR}' } -function printIntermediaryResults { - echo -n "Intermediary results uninstrumented " - cat results-inspectit/raw-*-"$RECURSION_DEPTH"-0.csv | awk -F';' '{print $2}' | getSum - - echo -n "Intermediary results inspectIT Deactivated" - cat results-inspectit/raw-*-"$RECURSION_DEPTH"-1.csv | awk -F';' '{print $2}' | getSum - - echo -n "Intermediary results inspectIT Zipkin " - cat results-inspectit/raw-*-"$RECURSION_DEPTH"-2.csv | awk -F';' '{print $2}' | getSum - - echo -n "Intermediary results inspectIT Prometheus " - cat results-inspectit/raw-*-"$RECURSION_DEPTH"-3.csv | awk -F';' '{print $2}' | getSum -} - JAVABIN="" -RSCRIPTDIR=r/ -BASEDIR=./ -RESULTSDIR="${BASEDIR}results-inspectit/" +BASE_DIR=$(pwd) source ../common-functions.sh +source labels.sh checkMoobenchApplication @@ -113,14 +98,12 @@ MOREPARAMS="${MOREPARAMS}" TIME=`expr ${METHODTIME} \* ${TOTALCALLS} / 1000000000 \* 4 \* ${RECURSION_DEPTH} \* ${NUM_OF_LOOPS} + ${SLEEPTIME} \* 4 \* ${NUM_OF_LOOPS} \* ${RECURSION_DEPTH} + 50 \* ${TOTALCALLS} / 1000000000 \* 4 \* ${RECURSION_DEPTH} \* ${NUM_OF_LOOPS} ` echo "Experiment will take circa ${TIME} seconds." -echo "Removing and recreating '$RESULTSDIR'" -(rm -rf ${RESULTSDIR}) && mkdir -p ${RESULTSDIR} +echo "Removing and recreating '$RESULTS_DIR'" +(rm -rf ${RESULTS_DIR}) && mkdir -p ${RESULTS_DIR} # Clear inspectit.log and initialize logging -rm -f ${BASEDIR}inspectit.log -touch ${BASEDIR}inspectit.log - -RAWFN="${RESULTSDIR}raw" +rm -f ${BASE_DIR}inspectit.log +touch ${BASE_DIR}inspectit.log JAVAARGS="-server" JAVAARGS="${JAVAARGS} -Xms1G -Xmx2G" @@ -128,19 +111,20 @@ JAVAARGS="${JAVAARGS} -verbose:gc " JAR="-jar MooBench.jar --application moobench.application.MonitoredClassSimple" JAVAARGS_NOINSTR="${JAVAARGS}" -JAVAARGS_LTW="${JAVAARGS} -javaagent:${BASEDIR}agent/inspectit-ocelot-agent-1.11.1.jar -Djava.util.logging.config.file=${BASEDIR}config/logging.properties" -JAVAARGS_INSPECTIT_DEACTIVATED="${JAVAARGS_LTW} -Dinspectit.service-name=moobench-inspectit -Dinspectit.exporters.metrics.prometheus.enabled=false -Dinspectit.exporters.tracing.zipkin.enabled=false -Dinspectit.config.file-based.path=${BASEDIR}config/onlyInstrument/" -JAVAARGS_INSPECTIT_ZIPKIN="${JAVAARGS_LTW} -Dinspectit.service-name=moobench-inspectit -Dinspectit.exporters.metrics.prometheus.enabled=false -Dinspectit.exporters.tracing.zipkin.url=http://127.0.0.1:9411/api/v2/spans -Dinspectit.config.file-based.path=${BASEDIR}config/zipkin/" -JAVAARGS_INSPECTIT_PROMETHEUS="${JAVAARGS_LTW} -Dinspectit.service-name=moobench-inspectit -Dinspectit.exporters.metrics.zipkin.enabled=false -Dinspectit.exporters.metrics.prometheus.enabled=true -Dinspectit.config.file-based.path=${BASEDIR}config/prometheus/" - +JAVAARGS_LTW="${JAVAARGS} -javaagent:${BASE_DIR}/agent/inspectit-ocelot-agent-1.11.1.jar -Djava.util.logging.config.file=${BASE_DIR}config/logging.properties" +JAVAARGS_INSPECTIT_DEACTIVATED="${JAVAARGS_LTW} -Dinspectit.service-name=moobench-inspectit -Dinspectit.exporters.metrics.prometheus.enabled=false -Dinspectit.exporters.tracing.zipkin.enabled=false -Dinspectit.config.file-based.path=${BASE_DIR}config/onlyInstrument/" +JAVAARGS_INSPECTIT_ZIPKIN="${JAVAARGS_LTW} -Dinspectit.service-name=moobench-inspectit -Dinspectit.exporters.metrics.prometheus.enabled=false -Dinspectit.exporters.tracing.zipkin.url=http://127.0.0.1:9411/api/v2/spans -Dinspectit.config.file-based.path=${BASE_DIR}config/zipkin/" +JAVAARGS_INSPECTIT_PROMETHEUS="${JAVAARGS_LTW} -Dinspectit.service-name=moobench-inspectit -Dinspectit.exporters.metrics.zipkin.enabled=false -Dinspectit.exporters.metrics.prometheus.enabled=true -Dinspectit.config.file-based.path=${BASE_DIR}config/prometheus/" +echo "RESULTS_DIR: $RESULTS_DIR" +echo "RAWFN: $RAWFN" writeConfiguration ## Execute Benchmark for ((i=1;i<=${NUM_OF_LOOPS};i+=1)); do k=0 echo "## Starting iteration ${i}/${NUM_OF_LOOPS}" - echo "## Starting iteration ${i}/${NUM_OF_LOOPS}" >>${BASEDIR}inspectit.log + echo "## Starting iteration ${i}/${NUM_OF_LOOPS}" >>${BASE_DIR}inspectit.log runNoInstrumentation cleanup @@ -156,51 +140,16 @@ for ((i=1;i<=${NUM_OF_LOOPS};i+=1)); do printIntermediaryResults done -mv ${BASEDIR}inspectit.log ${RESULTSDIR}inspectit.log -[ -f ${RESULTSDIR}hotspot-1-${RECURSION_DEPTH}-1.log ] && grep "<task " ${RESULTSDIR}hotspot-*.log >${RESULTSDIR}log.log -[ -f ${BASEDIR}errorlog.txt ] && mv ${BASEDIR}errorlog.txt ${RESULTSDIR} - -## Generate Results file -# Timeseries -R --vanilla --silent <<EOF -results_fn="${RAWFN}" -output_fn="${RESULTSDIR}results-timeseries.pdf" -configs.loop=${NUM_OF_LOOPS} -configs.recursion=c(${RECURSION_DEPTH}) -configs.labels=c("No Probe","InspectIT (minimal)","InspectIT (without CMR)","InspectIT (with CMR)") -configs.colors=c("black","red","blue","green") -results.count=${TOTALCALLS} -tsconf.min=(${METHODTIME}/1000) -tsconf.max=(${METHODTIME}/1000)+300 -source("${RSCRIPTDIR}timeseries.r") -EOF -# Timeseries-Average -R --vanilla --silent <<EOF -results_fn="${RAWFN}" -output_fn="${RESULTSDIR}results-timeseries-average.pdf" -configs.loop=${NUM_OF_LOOPS} -configs.recursion=c(${RECURSION_DEPTH}) -configs.labels=c("No Probe","InspectIT (minimal)","InspectIT (without CMR)","InspectIT (with CMR)") -configs.colors=c("black","red","blue","green") -results.count=${TOTALCALLS} -tsconf.min=(${METHODTIME}/1000) -tsconf.max=(${METHODTIME}/1000)+300 -source("${RSCRIPTDIR}timeseries-average.r") -EOF -# Bars -R --vanilla --silent <<EOF -results_fn="${RAWFN}" -outtxt_fn="${RESULTSDIR}results-text.txt" -configs.loop=${NUM_OF_LOOPS} -configs.recursion=c(${RECURSION_DEPTH}) -configs.labels=c("No Probe","InspectIT (minimal)","InspectIT (without CMR)","InspectIT (with CMR)") -results.count=${TOTALCALLS} -results.skip=${TOTALCALLS}*3/4 -source("${RSCRIPTDIR}stats.r") -EOF +mv ${BASE_DIR}inspectit.log ${RESULTS_DIR}inspectit.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} + +# Create R labels +LABELS=$(createRLabels) +run-r ## Clean up raw results zip -jqr ${RESULTSDIR}results.zip ${RAWFN}* rm -f ${RAWFN}* -[ -f ${BASEDIR}nohup.out ] && cp ${BASEDIR}nohup.out ${RESULTSDIR} -[ -f ${BASEDIR}nohup.out ] && > ${BASEDIR}nohup.out +[ -f ${BASE_DIR}nohup.out ] && cp ${BASE_DIR}nohup.out ${RESULTSDIR} +[ -f ${BASE_DIR}nohup.out ] && > ${BASE_DIR}nohup.out diff --git a/frameworks/inspectIT/labels.sh b/frameworks/inspectIT/labels.sh new file mode 100644 index 0000000000000000000000000000000000000000..49508d65384be97fc6b3383b3c32ec6f3e80045e --- /dev/null +++ b/frameworks/inspectIT/labels.sh @@ -0,0 +1,4 @@ +TITLE[0]="No instrumentation" +TITLE[1]="Deactivated processing" +TITLE[2]="Zipkin" +TITLE[3]="Prometheus" diff --git a/frameworks/runR.sh b/frameworks/runR.sh new file mode 100755 index 0000000000000000000000000000000000000000..3f4a207956943d7fd39784b8df54efefd3d37f60 --- /dev/null +++ b/frameworks/runR.sh @@ -0,0 +1,18 @@ +if [ $# -lt 1 ] +then + echo "Please pass the folder that should be analyzed" +fi + +BASE_DIR=$(pwd)/$1 +source common-functions.sh + +source $1/labels.sh + +echo "RESULTS_DIR: $RESULTS_DIR" +echo "Rawfn: $RAWFN" + +RSCRIPT_PATH=stats.csv.r + +# Create R labels +LABELS=$(createRLabels) +run-r diff --git a/frameworks/stats.csv.r b/frameworks/stats.csv.r new file mode 100644 index 0000000000000000000000000000000000000000..8ba1ca1098b033fb93f7b5d5c61016c066c3af31 --- /dev/null +++ b/frameworks/stats.csv.r @@ -0,0 +1,108 @@ +############################################ +# R - script to collect all moobench results +############################################ + +# these values are here only as documentation. The parameters are set by benchmark.sh +#rm(list=ls(all=TRUE)) +#data_fn="data/" +#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" + +######### +# These are configuration parameters which are automatically prepended to this file by the benchmark.sh script. +# Therefore, they must not be set here. The following lines only serve as documentation. +#configs.loop=10 +#configs.recursion=c(10) +#configs.labels=c("No Probe","Inactive Probe","Collecting Data","Writing Data (ASCII)", "Writing Data (Bin)") +#results.count=2000000 +#results.skip=1000000 + +#bars.minval=500 +#bars.maxval=600 + + +########## +# Process configuration + +# divisor 1 = nano, 1000 = micro, 1000000 = milli seconds +timeUnit <- 1000 + +# number of Kieker writer configurations +numberOfWriters <- length(configs.labels) +recursion_depth <- configs.recursion + +numberOfValues <- configs.loop*(results.count-results.skip) +numbers <- c(1:(numberOfValues)) +resultDimensionNames <- list(configs.labels, numbers) + +# result values +resultsBIG <- array(dim=c(numberOfWriters, numberOfValues), dimnames=resultDimensionNames) + +########## +# Create result + +## "[ recursion , config , loop ]" + +numOfRowsToRead <- results.count-results.skip + +for (writer_idx in (1:numberOfWriters)) { + recordsPerSecond = c() + rpsLastDuration = 0 + rpsCount = 0 + file_idx <- writer_idx - 1 + + # loop + for (loop_counter in (1:configs.loop)) { + results_fn_filepath <- paste(results_fn, "-", loop_counter, "-", recursion_depth, "-", file_idx, ".csv", sep="") + message(results_fn_filepath) + results <- read.csv2(results_fn_filepath, nrows=numOfRowsToRead, skip=results.skip, quote="", colClasses=c("NULL","numeric", "numeric", "numeric"), comment.char="", col.names=c("thread_id", "duration_nsec", "gc", "t"), header=FALSE) + trx_idx <- c(1:numOfRowsToRead) + resultsBIG[writer_idx,trx_idx] <- results[["duration_nsec"]] + } +} + +qnorm_value <- qnorm(0.975) + +# print results +printDimensionNames <- list(c("mean","sd","ci95%","md25%","md50%","md75%","max","min"), c(1:numberOfWriters)) +# row number == number of computed result values, e.g., mean, min, max +printvalues <- matrix(nrow=8, ncol=numberOfWriters, dimnames=printDimensionNames) + +for (writer_idx in (1:numberOfWriters)) { + idx_mult <- c(1:numOfRowsToRead) + + valuesBIG <- resultsBIG[writer_idx,idx_mult]/timeUnit + + printvalues["mean",writer_idx] <- mean(valuesBIG) + printvalues["sd",writer_idx] <- sd(valuesBIG) + printvalues["ci95%",writer_idx] <- qnorm_value*sd(valuesBIG)/sqrt(length(valuesBIG)) + printvalues[c("md25%","md50%","md75%"),writer_idx] <- quantile(valuesBIG, probs=c(0.25, 0.5, 0.75)) + printvalues["max",writer_idx] <- max(valuesBIG) + printvalues["min",writer_idx] <- min(valuesBIG) +} +resultstext <- formatC(printvalues,format="f",digits=4,width=8) + +print(resultstext) + +write(paste("Recursion Depth: ", recursion_depth),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) + +concResult <- "" +headResult <- "" +# write the first n-1 elements preceded by a comma (,) +for (writer_idx in (1:(numberOfWriters-1))) { + headResult <- paste(headResult, configs.labels[writer_idx], ",") + concResult <- paste(concResult, printvalues["mean",writer_idx], ",") +} +# write the last without a comma +headResult <- paste(headResult, configs.labels[numberOfWriters]) +concResult <- paste(concResult, printvalues["mean", numberOfWriters]) + +write(headResult,file=outcsv_fn,append=TRUE) +write(concResult,file=outcsv_fn,append=TRUE) + +# end