In the Big Data domain, Java-based frameworks, such as Apache Hadoop, Flink or Spark, provide an approach to distribute the application workload for processing large-scale datasets. To understand limitations and find potential for optimization, measurements of runtime information of applications written for these frameworks are required.
A measurement approach capable to give information about the runtime of particular program section executions is the instrumentation with the Score-P measurement framework (see: http://www.score-p.org). Instrumentation is the procedure of enhancing the application and framework code with measurement code that collects information, such as timestamps of method entries and exits. Since the instrumentation of the whole application can severly slow it down, the methods to be instrumented need to be carefully selected using filters. Based on filters, the application and the framework can be automatically instrumented using Score-P’s bytecode instrumentation implementation for Java. The Score-P bytecode instrumentation mechanism is currently implemented based on the low level library ASM. A more developer-friendly way, and perhaps easier to maintain, is an implementation using AspectJ.
In this bachelor thesis, the bytecode instrumentation based on Aspect-oriented programming (AOP) using AspectJ should be investigated. The goal is to automatically derive Aspect-oriented programs from Score-P filter files and apply them to the application that should be measured. The runtime overhead of the solution should be evaluated.
- Investigation of a method to derive/generate aspect-oriented programs from Score-P filter
- Measurement and investigation of the overhead of the bytecode instrumentation using AspectJ compared to ASM
- Implementation of the proposed instrumentation workflow
- Documentation of implementation and results in written form
For this work, basic knowledge of Java as well as Java bytecode instrumentation or AspectJ are desirable.
The language can be either German or English.