Hasso-Plattner-Institut Potsdam Operating Systems and Middleware Group at HPI University of Potsdam, Germany
Operating Systems and Middleware Group at HPI

Software Profiling Seminar

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

TitlePresenter
Introduction
May 6Statistics 101Peter Tröger (slides)
Operating System Profiling Support
Perf (Linux)
PAPI (Linux)
May 6strace (Linux) / truss (Solaris, BSD)Angelo Haller (slides)
OProfile (Linux)
May 13DTrace (Solaris, Linux, Mac OS X, BSD)Markus Dreseler (slides)
May 13LTTng (Linux) vs. SystemTap (Linux)Fabian Bornhofen (slides)
May 27Event Tracing for WindowsUwe Hartmann (slides)
Profiling Workbench
May 27Visual Studio Profiling ToolsPratama Wiradarma (slides)
May 27Intel VTune (student version)Lena Herscheid (slides)
June 3ValgrindMarcel Pursche
June 3Instruments (MacOS X)Simon Völcker (slides)
Zoom
GPU Profiling
June 10NVIDIA Nsight, NVIDIA Visual ProfilerJohannes Henning (slides)
June 10AMD CodeXL, AMD GPU PerfStudioHannes Würfel (slides)
Script Profiling
June 17Python Profiling, GuppyCornelia Rehbein
June 17Ruby on Rails ProfilingKai Hoewelmeyer
June 24XDebug for PHP, PHP APD Debugger, XHProfCornelius Illi (slides)
June 24V8 ProfilingLauritz Thamsen (slides)
Node.JS Profiling
Java Profiling
JVMTI Interface
VisualVM
BTrace
Java Interactive Profiler
July 1Eclipse Memory AnalyzerJan Rehwaldt (slides)
NetBeans Profiler
JProfiler
JBoss Profiler
MPI Profiling
July 1VampirHenning Lohse
July 1TauToni Mattis
Fancy stuff
Profiling through AOP, DJProf
July 8Android ProfilingHubert Hesse
July 8Poor Man's ProfilerMaximilian Schneider
July 8Profiling with GCCAndreas Grapentin