diff --git a/.classpath b/.classpath index 42edfb3e8cfd3169c3bd9187b26a08db91057fba..eeaf033cfd8fd1b1c9fa49ac928d3d72e8ab134f 100644 --- a/.classpath +++ b/.classpath @@ -2,8 +2,8 @@ <classpath> <classpathentry kind="src" path="src"/> <classpathentry kind="src" path="frameworks/Kieker/src"/> - <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/> <classpathentry kind="lib" path="lib/commons-cli-1.2.jar"/> - <classpathentry kind="lib" path="lib/kieker-1.9-SNAPSHOT_aspectj.jar"/> + <classpathentry kind="lib" path="frameworks/Kieker/lib/kieker-1.9-SNAPSHOT_aspectj.jar"/> <classpathentry kind="output" path="build-eclipse"/> </classpath> diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs index 4772c9a9a6e71b99af839cf5d4e6696492b7fcac..321e3ad8226a3642a4c57b1e6c9feb9451179b7d 100644 --- a/.settings/org.eclipse.jdt.core.prefs +++ b/.settings/org.eclipse.jdt.core.prefs @@ -1,14 +1,14 @@ eclipse.preferences.version=1 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.compliance=1.5 +org.eclipse.jdt.core.compiler.compliance=1.7 org.eclipse.jdt.core.compiler.debug.lineNumber=generate org.eclipse.jdt.core.compiler.debug.localVariable=generate org.eclipse.jdt.core.compiler.debug.sourceFile=generate org.eclipse.jdt.core.compiler.problem.assertIdentifier=error org.eclipse.jdt.core.compiler.problem.enumIdentifier=error -org.eclipse.jdt.core.compiler.source=1.5 +org.eclipse.jdt.core.compiler.source=1.7 org.eclipse.jdt.core.formatter.align_type_members_on_columns=false org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0 @@ -92,7 +92,6 @@ org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false org.eclipse.jdt.core.formatter.indentation.size=4 org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_member=insert org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert diff --git a/README b/README index 39d9a20f3dd4adae27ad5e6f34be334aab2c11cb..d33110a77a0c5d0498315236de79d6ce993248e9 100644 --- a/README +++ b/README @@ -1,32 +1,42 @@ -The MooBench Monitoring Overhead Benchmark ------------------------------------------- +The MooBench Monitoring Overhead Micro-Benchmark +------------------------------------------------------------------------ -This micro-benchmarks can be used to quantify the performance +Website: http://kieker-monitoring.net/MooBench +Contact: moobench@notme.de + +The MooBench micro-benchmarks can be used to quantify the performance overhead caused by monitoring framework components. -The default experiments employ AspectJ for weaving the monitoring -probes into the application. +Currenly supported monitoring frameworks include: +* Kieker (http://kieker-monitoring.net) +* inspectIT (http://inspectit.eu/) +* SPASSmeter + +An ant script (build.xml) is provided to prepare the benchmark for the +respective monitoring framwork. Corresponding build targets, providing +preconfigured build for each supported framework, are available. +For instance, the target "build-kieker" prepares a jar for Kieker +benchmarking experiments. +All experiments are started with the provided "External Controller" +scripts. These scripts are available inside the bin/ directory. Currently only shell (.sh) scripts are provided. The default execution of the benchmark requires a 64Bit JVM! This can be changed in the respective .sh scripts. -Files required in /lib: - kieker-*_aspectj.jar (a current build of Kieker) - commons-cli-1.2.jar - Initially, the following steps are required: 1. You should check whether you installed ant (http://ant.apache.org/), since the execution of all examples described in this README is based on the run-targets in the ant file build.xml. 2. Make sure, that you've installed R (http://www.r-project.org/) to generate the results. -3. Compile the application by calling ant. +3. Compile the application by calling ant with the appropriate build + target. Execution of the micro-benchmark: -All benchmarks are started with calls of .sh scripts in the /bin folder. -The top of the files include some possibilities for configuration, such as +All benchmarks are started with calls of .sh scripts in the bin folder. +The top of the files include some configuration parameters, such as * SLEEPTIME between executions * NUM_LOOPS number of repetitions * THREADS concurrent benchmarking threads @@ -37,21 +47,23 @@ Furthermore some JVM arguments can be adjusted: * JAVAARGS JVM Arguments Experiments: -Different recursion depth (with MAXRECURSIONDEPTH=1 one can test without recursion) +Different recursion depth (with MAXRECURSIONDEPTH=1 without recursion) -> bin/run-benchmark-recursive.sh -To check for a linear rise in monitoring overhead, this benchmark increases the -recursion depth up to 2^MAXRECURSIONDEPTH in logarithmic steps +To check for a linear rise in monitoring overhead, this benchmark +increases the recursion depth up to 2^MAXRECURSIONDEPTH in logarithmic +steps -> bin/run-benchmark-recursive-linear.sh Benchmarking the JMX-writer -> bin/run-benchmark-recursive-jmx.sh -The experiments run-cycle*.sh and their used files run-benchmark-cycle-*.sh are -currently only supporting Solaris environments and require pfexec permissions to -assign subsets of cores to the benchmarking system. +The experiments run-cycle*.sh and their used files +run-benchmark-cycle-*.sh are currently only supporting Solaris +environments and require pfexec permissions to assign subsets of cores +to the benchmarking system. Analyzing the data: -in the folder /bin/r-scripts are some R scripts provided to generate graphs to -visualize the results. In the top the files, one can configure the required paths -and the configuration used to analyze the data. +in the folder /bin/r-scripts are some R scripts provided to generate +graphs to visualize the results. In the top the files, one can configure +the required paths and the configuration used to analyze the data. diff --git a/build.xml b/build.xml index 9f0e7ba387b26e5355af5ef7d8c5e1a8bb274e8b..0abe5e131356f35238c984851ca5b7327a4bc88b 100644 --- a/build.xml +++ b/build.xml @@ -3,10 +3,12 @@ <property file="build.properties" /> <target name="build-all" depends="clean,init,compile,jar" /> + <target name="build-kieker" depends="clean,init,compile-kieker,jar" /> <target name="init" depends=""> <mkdir dir="build" /> <mkdir dir="dist" /> + <mkdir dir="dist/lib" /> <mkdir dir="tmp" /> </target> @@ -14,30 +16,40 @@ <path id="compile-classpath"> <fileset dir="lib/"> <include name="commons-cli-*.jar" /> - <include name="kieker-*.jar" /> </fileset> - <!-- + </path> + <javac source="1.5" target="1.5" destDir="build" debug="true" classpathref="compile-classpath" includeAntRuntime="false"> + <src path="src" /> + </javac> + <copy todir="build/META-INF"> + <fileset dir="src/META-INF" /> + </copy> + </target> + + <target name="compile-kieker" depends="compile"> + <path id="compile-classpath"> <fileset dir="frameworks/Kieker/lib/"> - <include name="*.jar" /> + <include name="kieker-1.9-SNAPSHOT_aspectj.jar" /> </fileset> - --> </path> <javac source="1.5" target="1.5" destDir="build" debug="true" classpathref="compile-classpath" includeAntRuntime="false"> - <src path="src" /> <src path="frameworks/Kieker/src" /> </javac> <copy todir="build/META-INF"> - <fileset dir="src/META-INF" /> <fileset dir="frameworks/Kieker/src/META-INF" /> </copy> + <copy todir="dist/lib" flatten="true"> + <path> + <path refid="compile-classpath"/> + </path> + </copy> </target> <target name="jar" depends="compile"> <manifestclasspath property="jar.classpath" jarfile="dist/OverheadEvaluationMicrobenchmark.jar"> <classpath> - <fileset dir="lib/"> + <fileset dir="dist/lib/"> <include name="**/*.jar" /> - <exclude name="commons-cli-*.jar" /> </fileset> </classpath> </manifestclasspath> diff --git a/lib/kieker-1.9-SNAPSHOT_aspectj.jar b/frameworks/Kieker/lib/kieker-1.9-SNAPSHOT_aspectj.jar similarity index 100% rename from lib/kieker-1.9-SNAPSHOT_aspectj.jar rename to frameworks/Kieker/lib/kieker-1.9-SNAPSHOT_aspectj.jar diff --git a/lib/kieker-1.9-SNAPSHOT_aspectj.LICENSE b/frameworks/Kieker/lib/kieker.LICENSE similarity index 100% rename from lib/kieker-1.9-SNAPSHOT_aspectj.LICENSE rename to frameworks/Kieker/lib/kieker.LICENSE