From b5fd651e65cf82cbcc5776b2f8b2e4d262dac3aa Mon Sep 17 00:00:00 2001 From: Jan Waller <jwa@informatik.uni-kiel.de> Date: Wed, 14 May 2014 13:28:39 +0200 Subject: [PATCH] Spassmeter --- frameworks/SPASSmeter/SPASSmeter.r | 31 ++++++++++++++ frameworks/SPASSmeter/benchmark.sh | 66 ++++++------------------------ 2 files changed, 44 insertions(+), 53 deletions(-) create mode 100644 frameworks/SPASSmeter/SPASSmeter.r diff --git a/frameworks/SPASSmeter/SPASSmeter.r b/frameworks/SPASSmeter/SPASSmeter.r new file mode 100644 index 0000000..3ff5542 --- /dev/null +++ b/frameworks/SPASSmeter/SPASSmeter.r @@ -0,0 +1,31 @@ +#rm(list=ls(all=TRUE)) +results_fn="raw" +outtxt_fn="results-text.txt" + +configs.loop=10 +configs.labels=c("No MOnitoring","Spassmeter") +configs.count=length(configs.labels) +results.count=2000000 +results.skip=results.count/2 + +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/frameworks/SPASSmeter/benchmark.sh b/frameworks/SPASSmeter/benchmark.sh index 2fe6879..1a01d55 100644 --- a/frameworks/SPASSmeter/benchmark.sh +++ b/frameworks/SPASSmeter/benchmark.sh @@ -1,4 +1,5 @@ #!/bin/bash +# This file is configured for linux instead of solaris!!! JAVABIN="" @@ -11,7 +12,7 @@ NUM_LOOPS=10 ## 10 THREADS=1 ## 1 RECURSIONDEPTH=10 ## 10 TOTALCALLS=2000000 ## 2000000 -METHODTIME=500000 ## 500000 +METHODTIME=0 ## 500000 #MOREPARAMS="--quickstart" MOREPARAMS="${MOREPARAMS}" @@ -21,12 +22,11 @@ echo "Experiment will take circa ${TIME} seconds." echo "Removing and recreating '$RESULTSDIR'" (rm -rf ${RESULTSDIR}) && mkdir ${RESULTSDIR} -mkdir ${RESULTSDIR}stat/ +#mkdir ${RESULTSDIR}stat/ # Clear spassmeter.log and initialize logging rm -f ${BASEDIR}spassmeter.log touch ${BASEDIR}spassmeter.log -mkdir ${BASEDIR}logs/ RAWFN="${RESULTSDIR}raw" @@ -40,7 +40,8 @@ JAVAARGS="${JAVAARGS} -verbose:gc -XX:+PrintCompilation" JAR="-jar MooBench.jar" JAVAARGS_NOINSTR="${JAVAARGS}" -JAVAARGS_LTW="${JAVAARGS} -javaagent:${BASEDIR}lib/linux/spass-meter-ia.jar=xmlconfig=${BASEDIR}lib/config.xml,out=${RESULTSDIR}spassmeter.txt" +CLASSPATH="-classpath ${BASEDIR}lib/linux/spass-meter-ia.jar:${BASEDIR}lib/linux/spass-meter-boot.jar:${BASEDIR}lib/linux/spass-meter-rt.jar" +JAVAARGS_LTW="${JAVAARGS} ${CLASSPATH} -javaagent:${BASEDIR}lib/linux/spass-meter-ia.jar=xmlconfig=${BASEDIR}lib/config.xml,out=${RESULTSDIR}spassmeter.txt" ## Write configuration uname -a >${RESULTSDIR}configuration.txt @@ -68,7 +69,7 @@ for ((i=1;i<=${NUM_LOOPS};i+=1)); do k=`expr ${k} + 1` echo " # ${i}.${j}.${k} No instrumentation" echo " # ${i}.${j}.${k} No instrumentation" >>${BASEDIR}spassmeter.log - sar -o ${RESULTSDIR}stat/sar-${i}-${j}-${k}.data 5 2000 1>/dev/null 2>&1 & + #sar -o ${RESULTSDIR}stat/sar-${i}-${j}-${k}.data 5 2000 1>/dev/null 2>&1 & ${JAVABIN}java ${JAVAARGS_NOINSTR} ${JAR} \ --output-filename ${RAWFN}-${i}-${j}-${k}.csv \ --totalcalls ${TOTALCALLS} \ @@ -76,7 +77,7 @@ for ((i=1;i<=${NUM_LOOPS};i+=1)); do --totalthreads ${THREADS} \ --recursiondepth ${j} \ ${MOREPARAMS} - kill %sar + #kill %sar [ -f ${BASEDIR}hotspot.log ] && mv ${BASEDIR}hotspot.log ${RESULTSDIR}hotspot-${i}-${j}-${k}.log echo >>${BASEDIR}spassmeter.log echo >>${BASEDIR}spassmeter.log @@ -87,7 +88,7 @@ for ((i=1;i<=${NUM_LOOPS};i+=1)); do k=`expr ${k} + 1` echo " # ${i}.${j}.${k} SPASSmeter" echo " # ${i}.${j}.${k} SPASSmeter" >>${BASEDIR}spassmeter.log - sar -o ${RESULTSDIR}stat/sar-${i}-${j}-${k}.data 5 2000 1>/dev/null 2>&1 & + #sar -o ${RESULTSDIR}stat/sar-${i}-${j}-${k}.data 5 2000 1>/dev/null 2>&1 & ${JAVABIN}java ${JAVAARGS_LTW} ${JAR} \ --output-filename ${RAWFN}-${i}-${j}-${k}.csv \ --totalcalls ${TOTALCALLS} \ @@ -95,7 +96,7 @@ for ((i=1;i<=${NUM_LOOPS};i+=1)); do --totalthreads ${THREADS} \ --recursiondepth ${j} \ ${MOREPARAMS} - kill %sar + #kill %sar [ -f ${BASEDIR}hotspot.log ] && mv ${BASEDIR}hotspot.log ${RESULTSDIR}hotspot-${i}-${j}-${k}.log echo >>${BASEDIR}spassmeter.log echo >>${BASEDIR}spassmeter.log @@ -103,55 +104,14 @@ for ((i=1;i<=${NUM_LOOPS};i+=1)); do sleep ${SLEEPTIME} done -zip -jqr ${RESULTSDIR}stat.zip ${RESULTSDIR}stat -rm -rf ${RESULTSDIR}stat/ +#zip -jqr ${RESULTSDIR}stat.zip ${RESULTSDIR}stat +#rm -rf ${RESULTSDIR}stat/ mv ${BASEDIR}spassmeter.log ${RESULTSDIR}spassmeter.log -mv ${BASEDIR}logs/ ${RESULTSDIR} [ -f ${RESULTSDIR}hotspot-1-${RECURSIONDEPTH}-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_LOOPS} -configs.recursion=c(${RECURSIONDEPTH}) -configs.labels=c("No Probe","SPASSmeter") -configs.colors=c("black","red") -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_LOOPS} -configs.recursion=c(${RECURSIONDEPTH}) -configs.labels=c("No Probe","SPASSmeter") -configs.colors=c("black","red") -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_LOOPS} -configs.recursion=c(${RECURSIONDEPTH}) -configs.labels=c("No Probe","SPASSmeter") -configs.colors=c("black","red") -results.count=${TOTALCALLS} -results.skip=${TOTALCALLS}*3/4 -source("${RSCRIPTDIR}stats.r") -EOF - ## Clean up raw results -zip -jqr ${RESULTSDIR}results.zip ${RAWFN}* -rm -f ${RAWFN}* +#gzip -qr ${RESULTSDIR}results.zip ${RAWFN}* +#rm -f ${RAWFN}* [ -f ${BASEDIR}nohup.out ] && cp ${BASEDIR}nohup.out ${RESULTSDIR} [ -f ${BASEDIR}nohup.out ] && > ${BASEDIR}nohup.out -- GitLab