From 3e29b12258229a03f10e22f0ddc4deec0db96b3d Mon Sep 17 00:00:00 2001 From: David Georg Reichelt <davidgeorg_reichelt@dagere.de> Date: Thu, 19 Aug 2021 18:20:11 +0200 Subject: [PATCH] Also unify opentelemetry measurement --- frameworks/inspectIT/benchmark.sh | 1 + frameworks/opentelemetry/benchmark.sh | 137 ++++++++------------------ frameworks/opentelemetry/labels.sh | 10 ++ 3 files changed, 51 insertions(+), 97 deletions(-) create mode 100644 frameworks/opentelemetry/labels.sh diff --git a/frameworks/inspectIT/benchmark.sh b/frameworks/inspectIT/benchmark.sh index 49fbb00..6f7032b 100755 --- a/frameworks/inspectIT/benchmark.sh +++ b/frameworks/inspectIT/benchmark.sh @@ -84,6 +84,7 @@ function getSum { JAVABIN="" BASE_DIR=$(pwd) +RSCRIPT_PATH="../stats.csv.r" source ../common-functions.sh source labels.sh diff --git a/frameworks/opentelemetry/benchmark.sh b/frameworks/opentelemetry/benchmark.sh index 7e9afc8..c57311c 100755 --- a/frameworks/opentelemetry/benchmark.sh +++ b/frameworks/opentelemetry/benchmark.sh @@ -1,18 +1,4 @@ #!/bin/bash -# This file is configured for linux instead of solaris!!! - -function startZipkin { - if [ ! -d zipkin ] - then - mkdir zipkin - cd zipkin - curl -sSL https://zipkin.io/quickstart.sh | bash -s - fi - cd zipkin - java -Xmx6g -jar zipkin.jar &> zipkin.txt & - sleep 5 - cd .. -} function startJaeger { if [ ! -d jaeger-1.24.0-linux-amd64 ] @@ -27,56 +13,56 @@ function startJaeger { } function cleanup { - [ -f ${BASEDIR}hotspot.log ] && mv ${BASEDIR}hotspot.log ${RESULTS_DIR}hotspot-${i}-$RECURSION_DEPTH-${k}.log - echo >>${BASEDIR}opentelemetry.log - echo >>${BASEDIR}opentelemetry.log + [ -f ${BASE_DIR}hotspot.log ] && mv ${BASE_DIR}hotspot.log ${RESULTS_DIR}hotspot-${i}-$RECURSION_DEPTH-${k}.log + echo >>${BASE_DIR}/opentelemetry.log + echo >>${BASE_DIR}/opentelemetry.log sync sleep ${SLEEP_TIME} } function runNoInstrumentation { # No instrumentation - echo " # ${i}.$RECURSION_DEPTH.${k} No instrumentation" - echo " # ${i}.$RECURSION_DEPTH.${k} No instrumentation" >>${BASEDIR}opentelemetry.log + echo " # ${i}.$RECURSION_DEPTH.${k} "${TITLE[$k]} + echo " # ${i}.$RECURSION_DEPTH.${k} "${TITLE[$k]} >>${BASE_DIR}/opentelemetry.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} &> ${RESULTS_DIR}output_"$i"_uninstrumented.txt + ${MOREPARAMS} &> ${RESULTS_DIR}/output_"$i"_"$RECURSION_DEPTH"_$k.txt } function runOpenTelemetryNoLogging { # OpenTelemetry Instrumentation Logging Deactivated k=`expr ${k} + 1` - echo " # ${i}.$RECURSION_DEPTH.${k} OpenTelemetry Instrumentation Logging Deactivated" - echo " # ${i}.$RECURSION_DEPTH.${k} OpenTelemetry Instrumentation Logging Deactivated" >>${BASEDIR}opentelemetry.log + echo " # ${i}.$RECURSION_DEPTH.${k} "${TITLE[$k]} + echo " # ${i}.$RECURSION_DEPTH.${k} "${TITLE[$k]} >>${BASE_DIR}/opentelemetry.log ${JAVABIN}java ${JAVAARGS_OPENTELEMETRY_LOGGING_DEACTIVATED} ${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} &> ${RESULTS_DIR}output_"$i"_opentelemetry.txt + ${MOREPARAMS} &> ${RESULTS_DIR}/output_"$i"_"$RECURSION_DEPTH"_$k.txt } function runOpenTelemetryLogging { # OpenTelemetry Instrumentation Logging k=`expr ${k} + 1` - echo " # ${i}.$RECURSION_DEPTH.${k} OpenTelemetry Instrumentation Logging" - echo " # ${i}.$RECURSION_DEPTH.${k} OpenTelemetry Instrumentation Logging" >>${BASEDIR}opentelemetry.log + echo " # ${i}.$RECURSION_DEPTH.${k} "${TITLE[$k]} + echo " # ${i}.$RECURSION_DEPTH.${k} "${TITLE[$k]} >>${BASE_DIR}/opentelemetry.log ${JAVABIN}java ${JAVAARGS_OPENTELEMETRY_LOGGING} ${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} &> ${RESULTS_DIR}output_"$i"_opentelemetry_logging.txt + ${MOREPARAMS} &> ${RESULTS_DIR}/output_"$i"_"$RECURSION_DEPTH"_$k.txt if [ ! "$DEBUG" = true ] then echo "DEBUG is $DEBUG, deleting opentelemetry logging file" - rm ${RESULTS_DIR}output_"$i"_opentelemetry_logging.txt + rm ${RESULTS_DIR}/output_"$i"_"$RECURSION_DEPTH"_$k.txt fi } @@ -84,15 +70,15 @@ function runOpenTelemetryZipkin { # OpenTelemetry Instrumentation Zipkin k=`expr ${k} + 1` startZipkin - echo " # ${i}.$RECURSION_DEPTH.${k} OpenTelemetry Instrumentation Zipkin" - echo " # ${i}.$RECURSION_DEPTH.${k} OpenTelemetry Instrumentation Zipkin" >>${BASEDIR}opentelemetry.log + echo " # ${i}.$RECURSION_DEPTH.${k} "${TITLE[$k]} + echo " # ${i}.$RECURSION_DEPTH.${k} "${TITLE[$k]} >>${BASE_DIR}/opentelemetry.log ${JAVABIN}java ${JAVAARGS_OPENTELEMETRY_ZIPKIN} ${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} &> ${RESULTS_DIR}output_"$i"_opentelemetry_zipkin.txt + ${MOREPARAMS} &> ${RESULTS_DIR}/output_"$i"_"$RECURSION_DEPTH"_$k.txt stopBackgroundProcess } @@ -100,15 +86,15 @@ function runOpenTelemetryJaeger { # OpenTelemetry Instrumentation Jaeger k=`expr ${k} + 1` startJaeger - echo " # ${i}.$RECURSION_DEPTH.${k} OpenTelemetry Instrumentation Jaeger" - echo " # ${i}.$RECURSION_DEPTH.${k} OpenTelemetry Instrumentation Jaeger" >>${BASEDIR}opentelemetry.log + echo " # ${i}.$RECURSION_DEPTH.${k} "${TITLE[$k]} + echo " # ${i}.$RECURSION_DEPTH.${k} "${TITLE[$k]} >>${BASE_DIR}/opentelemetry.log ${JAVABIN}java ${JAVAARGS_OPENTELEMETRY_JAEGER} ${JAR} \ --output-filename ${RAWFN}-${i}-$RECURSION_DEPTH-${k}.csv \ --total-calls ${TOTAL_NUM_OF_CALLS} \ - --method-time ${METHODTIME} \ + --method-time ${METHOD_TIME} \ --total-threads ${THREADS} \ --recursion-depth $RECURSION_DEPTH \ - ${MOREPARAMS} &> ${RESULTS_DIR}output_"$i"_opentelemetry_jaeger.txt + ${MOREPARAMS} &> ${RESULTS_DIR}/output_"$i"_"$RECURSION_DEPTH"_$k.txt stopBackgroundProcess } @@ -116,51 +102,25 @@ function runOpenTelemetryPrometheus { # OpenTelemetry Instrumentation Prometheus k=`expr ${k} + 1` startPrometheus - echo " # ${i}.$RECURSION_DEPTH.${k} OpenTelemetry Instrumentation Prometheus" - echo " # ${i}.$RECURSION_DEPTH.${k} OpenTelemetry Instrumentation Prometheus" >>${BASEDIR}opentelemetry.log + echo " # ${i}.$RECURSION_DEPTH.${k} "${TITLE[$k]} + echo " # ${i}.$RECURSION_DEPTH.${k} "${TITLE[$k]} >>${BASE_DIR}/opentelemetry.log ${JAVABIN}java ${JAVAARGS_OPENTELEMETRY_PROMETHEUS} ${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} &> ${RESULTS_DIR}output_"$i"_opentelemetry_prometheus.txt + ${MOREPARAMS} &> ${RESULTS_DIR}/output_"$i"_"$RECURSION_DEPTH"_$k.txt stopBackgroundProcess } -function printIntermediaryResults { - echo -n "Intermediary results uninstrumented " - cat results-opentelemetry/raw-*-$RECURSION_DEPTH-0.csv | awk -F';' '{print $2}' | getSum - - echo -n "Intermediary results opentelemetry Logging Deactivated " - cat results-opentelemetry/raw-*-$RECURSION_DEPTH-1.csv | awk -F';' '{print $2}' | getSum - - echo -n "Intermediary results opentelemetry Logging " - cat results-opentelemetry/raw-*-$RECURSION_DEPTH-2.csv | awk -F';' '{print $2}' | getSum - - echo -n "Intermediary results opentelemetry Zipkin " - cat results-opentelemetry/raw-*-$RECURSION_DEPTH-3.csv | awk -F';' '{print $2}' | getSum - - MACHINE_TYPE=`uname -m`; - if [ ${MACHINE_TYPE} == 'x86_64' ] - then - echo -n "Intermediary results opentelemetry Jaeger " - cat results-opentelemetry/raw-*-$RECURSION_DEPTH-4.csv | awk -F';' '{print $2}' | getSum - - # Prometheus does not work currently - #echo -n "Intermediary results opentelemetry Prometheus" - #cat results-opentelemetry/raw-*-$RECURSION_DEPTH-5.csv | awk -F';' '{print $2}' | getSum - fi -} - JAVABIN="" -RSCRIPTDIR=r/ -BASEDIR=./ -RESULTS_DIR="${BASEDIR}results-opentelemetry/" +BASE_DIR=$(pwd) +RSCRIPT_PATH="../stats.csv.r" source ../common-functions.sh -echo "NUM_OF_LOOPS: $NUM_OF_LOOPS" +source labels.sh #MOREPARAMS="--quickstart" MOREPARAMS="--application moobench.application.MonitoredClassSimple ${MOREPARAMS}" @@ -173,15 +133,13 @@ echo "Cleaning and recreating '$RESULTS_DIR'" #mkdir ${RESULTS_DIR}stat/ # Clear opentelemetry.log and initialize logging -rm -f ${BASEDIR}opentelemetry.log -touch ${BASEDIR}opentelemetry.log - -RAWFN="${RESULTS_DIR}raw" +rm -f ${BASE_DIR}/opentelemetry.log +touch ${BASE_DIR}/opentelemetry.log JAVAARGS="-server" JAVAARGS="${JAVAARGS} " JAVAARGS="${JAVAARGS} -Xms1G -Xmx2G" -JAVAARGS="${JAVAARGS} -verbose:gc -XX:+PrintCompilation" +JAVAARGS="${JAVAARGS} -verbose:gc " JAR="-jar MooBench.jar" checkMoobenchApplication @@ -189,34 +147,20 @@ checkMoobenchApplication getOpentelemetryAgent JAVAARGS_NOINSTR="${JAVAARGS}" -JAVAARGS_OPENTELEMETRY_BASIC="${JAVAARGS} -javaagent:${BASEDIR}lib/opentelemetry-javaagent-all.jar -Dotel.resource.attributes=service.name=moobench -Dotel.instrumentation.methods.include=moobench.application.MonitoredClassSimple[monitoredMethod];moobench.application.MonitoredClassThreaded[monitoredMethod]" +JAVAARGS_OPENTELEMETRY_BASIC="${JAVAARGS} -javaagent:${BASE_DIR}/lib/opentelemetry-javaagent-all.jar -Dotel.resource.attributes=service.name=moobench -Dotel.instrumentation.methods.include=moobench.application.MonitoredClassSimple[monitoredMethod];moobench.application.MonitoredClassThreaded[monitoredMethod]" JAVAARGS_OPENTELEMETRY_LOGGING_DEACTIVATED="${JAVAARGS_OPENTELEMETRY_BASIC} -Dotel.traces.exporter=logging -Dotel.traces.sampler=always_off" JAVAARGS_OPENTELEMETRY_LOGGING="${JAVAARGS_OPENTELEMETRY_BASIC} -Dotel.traces.exporter=logging" JAVAARGS_OPENTELEMETRY_ZIPKIN="${JAVAARGS_OPENTELEMETRY_BASIC} -Dotel.traces.exporter=zipkin" JAVAARGS_OPENTELEMETRY_JAEGER="${JAVAARGS_OPENTELEMETRY_BASIC} -Dotel.traces.exporter=jaeger" JAVAARGS_OPENTELEMETRY_PROMETHEUS="${JAVAARGS_OPENTELEMETRY_BASIC} -Dotel.traces.exporter=prometheus" - -## Write configuration -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 +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}opentelemetry.log + echo "## Starting iteration ${i}/${NUM_OF_LOOPS}" >>${BASE_DIR}opentelemetry.log runNoInstrumentation cleanup @@ -237,8 +181,8 @@ for ((i=1;i<=${NUM_OF_LOOPS};i+=1)); do cleanup # Prometheus does not work currently - #runOpenTelemetryPrometheus - #cleanup + runOpenTelemetryPrometheus + cleanup else echo "No 64 Bit System; skipping Prometheus" fi @@ -246,16 +190,15 @@ for ((i=1;i<=${NUM_OF_LOOPS};i+=1)); do printIntermediaryResults done +# Create R labels +LABELS=$(createRLabels) +run-r + cleanup-results #zip -jqr ${RESULTS_DIR}stat.zip ${RESULTS_DIR}stat #rm -rf ${RESULTS_DIR}stat/ -mv ${BASEDIR}opentelemetry.log ${RESULTS_DIR}opentelemetry.log +mv ${BASE_DIR}opentelemetry.log ${RESULTS_DIR}opentelemetry.log [ -f ${RESULTS_DIR}hotspot-1-${RECURSION_DEPTH}-1.log ] && grep "<task " ${RESULTS_DIR}hotspot-*.log >${RESULTS_DIR}log.log -[ -f ${BASEDIR}errorlog.txt ] && mv ${BASEDIR}errorlog.txt ${RESULTS_DIR} +[ -f ${BASE_DIR}errorlog.txt ] && mv ${BASE_DIR}errorlog.txt ${RESULTS_DIR} -## Clean up raw results -#gzip -qr ${RESULTS_DIR}results.zip ${RAWFN}* -#rm -f ${RAWFN}* -[ -f ${BASEDIR}nohup.out ] && cp ${BASEDIR}nohup.out ${RESULTS_DIR} -[ -f ${BASEDIR}nohup.out ] && > ${BASEDIR}nohup.out diff --git a/frameworks/opentelemetry/labels.sh b/frameworks/opentelemetry/labels.sh new file mode 100644 index 0000000..a46a90a --- /dev/null +++ b/frameworks/opentelemetry/labels.sh @@ -0,0 +1,10 @@ +TITLE[0]="No instrumentation" +TITLE[1]="OpenTelemetry No Logging" +TITLE[2]="OpenTelemetry Logging" +TITLE[3]="OpenTelemetry Zipkin" +MACHINE_TYPE=`uname -m`; +if [ ${MACHINE_TYPE} == 'x86_64' ] +then + TITLE[4]="OpenTelemetry Jaeger" + TITLE[5]="OpenTelemetry Prometheus" +fi -- GitLab