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