Theme: Programming

Performance tuning theory and practice


Level: Beginner

Typical duration: 2 days

Lectures: 8h

Labs: 8h

Course code: PR08

Performance tuning is a broad art that can provide considerable efficiency gains, and is all about trade-offs. This course provides a comprehensive summary of the tuning process on modern software and hardware - from bottleneck identification, through localization, to tuning.

Training topics

Performance tuning
Scalability
Benchmarking

We start with an overview of modern processor and system architecture and identifying the parts where bottlenecks can (and usually do) occur. We continue with a view on reproducible benchmarking and understanding main scalability and performance metrics - how to react and what to do. Further discussion includes drilling down on performance figures using a range of tools such as perf, Intel VTune and compilers. We conclude with pitfalls and common do's and don'ts, paying particular attention to C and C++ workloads running on x86 (Intel/AMD) hardware.

The course includes an extensive hands-on lab, which is key to understanding the concepts discussed and observing how they apply in practice.

 

Results

After the course, the students will:
- Tune code faster and with better precision to obtain speedups and remove inefficiencies
- Benchmark software and hardware with full confidence
- Understand and use a variety of performance metrics
- Identify, localize and tune bottlenecks in their software
- Efficiently use mainstream performance tuning tools (free or commercial)

Training concepts

Performance monitoring and tuning - which metrics to consider, how to measure, how to react
Informed, accurate, reproducible benchmarking
Fundamentals of scalability and monitoring, controlling various software and hardware features