Software Profiling Seminar (2016)

Summer Term 2013

Dr. Peter Tröger, Frank Feinbube

Software profiling is an established technique for the dynamic analysis of running programs. It supports the software developer or product maintainer in understanding code execution paths, resource consumption behavior and communication patterns. Software profiling typically does not demand access to the source code of the application at measurement time, which makes it perfectly usable in production environments and distributed (cloud) systems.

Several use cases for software profiling are recently emerging in practice:

  • Analysis of ILP mechanisms - Compilers have different ways of using ILP mechanisms in the processor, which can be influenced by the right choice of compiler flags. Any particular optimization such as branch prediction, VLIW combinations or hyperthreading must be analyzable for its effectiveness when the code is being executed on a particular platform.
  • Analysis of parallelization strategies - Any parallelization strategy leads to new and non-deterministic behavior at runtime due to synchronization or locking issues. A software developer can only understand the new program behavior if she is supported by software profiling tools, which allow to identify relevant bottlenecks, lock contention and code hot spots.
  • Analysis of resource management - High-level execution environments such as web servers or application servers have their own resource pooling and management mechanisms. The only way to understand sub-optimal application settings in those environments is the utilization of profiling mechanisms.
  • New platforms - Any porting activity of existing code to a new execution environment demands the analysis of run-time behavior and resource consumption under the new conditions.

The goal of this seminar is the creation of a software profiling compendium, which covers, from hardware over operating system up to virtual runtime environment, different application layers and their profiling support. Based on the quality of the student reports, this compendium may be published as technical report of the HPI.

Seminar Rules

For each topic, a presentation + and according report must be created. The presentation should be a summary of the report content. The final grade is generated from the oral presentation grade (20%) and the grade for the report (80%). Feedback from the presentation must be considered in the final version of the written report. The participants will incrementally create a classification of profiling approaches and metrics, based on the discussion after the presentations.

The report should contain at least the following content:

  • Description of the targeted hardware / software components - What can be profiled?
  • Metric types that can be collected by this approach - What kind of data can be collected?
  • Classification of the profiling approach - What is the technique?
  • Available variations of the toolkit, target platforms
  • Walk-through of the profiling toolkit with a non-trivial example

The majority of report and presentation (> 50%) must deal with the use case presentation of the profiling toolkit.

The report must be created as Latex document, based on the provided template file. Literature references should be added as separate BibTex file. Upload your final report as ZIP package (with the LaTex source file, all images and the BibTex file) to the submission system. The deadline is September 22nd.

Consultation meetings are possible every Thursday, 9:00 - 11:00 in C-1.6. I recommend a consultation meeting at least 7 days before the presentation.

Topics

Title Presenter
Introduction
May 6 Statistics 101 Peter Tröger (slides)
Operating System Profiling Support
Perf (Linux)
PAPI (Linux)
May 6 strace (Linux) / truss (Solaris, BSD) Angelo Haller (slides)
OProfile (Linux)
May 13 DTrace (Solaris, Linux, Mac OS X, BSD) Markus Dreseler (slides)
May 13 LTTng (Linux) vs. SystemTap (Linux) Fabian Bornhofen (slides)
May 27 Event Tracing for Windows Uwe Hartmann (slides)
Profiling Workbench
May 27 Visual Studio Profiling Tools Pratama Wiradarma (slides)
May 27 Intel VTune (student version) Lena Herscheid (slides)
June 3 Valgrind Marcel Pursche
June 3 Instruments (MacOS X) Simon Völcker (slides)
Zoom
GPU Profiling
June 10 NVIDIA Nsight, NVIDIA Visual Profiler Johannes Henning (slides)
June 10 AMD CodeXL, AMD GPU PerfStudio Hannes Würfel (slides)
Script Profiling
June 17 Python Profiling, Guppy Cornelia Rehbein
June 17 Ruby on Rails Profiling Kai Hoewelmeyer
June 24 XDebug for PHP, PHP APD Debugger, XHProf Cornelius Illi (slides)
June 24 V8 Profiling Lauritz Thamsen (slides)
Node.JS Profiling
Java Profiling
JVMTI Interface
VisualVM
BTrace
Java Interactive Profiler
July 1 Eclipse Memory Analyzer Jan Rehwaldt (slides)
NetBeans Profiler
JProfiler
JBoss Profiler
MPI Profiling
July 1 Vampir Henning Lohse
July 1 Tau Toni Mattis
Fancy stuff
Profiling through AOP, DJProf
July 8 Android Profiling Hubert Hesse
July 8 Poor Man's Profiler Maximilian Schneider
July 8 Profiling with GCC Andreas Grapentin