CO 339 – Performance Engineering

Table of Contents

Last update: Jan 14, 2022 11:57


1 Overview

Performance engineering is the area of computer science ensuring that IT systems are responsive, scalable, and efficient. The course aims at introducing fundamental principles and techniques used in performance management of IT systems.

2 Learning Outcomes

  • Knowledge and understanding:
    • understand key performance metrics in enterprise systems
    • describe the performance lifecycle of enterprise applications
    • recognize standard benchmarks used in the industry
    • explain the software architecture of an enterprise benchmark
    • recognize types of enterprise applications and workloads
    • understand tradeoffs when developing software systems
    • recognize critical vs. non-critical paths
  • Intellectual skills:
    • identify an efficient testing strategy for a system
    • specify test runs using probabilistic graphs
    • specify an experimental plan for a system
    • forecast performance of an enterprise application
    • assess the impact of data, code and hardware on performance
    • select appropriate tools & techniques for performance engineering
  • Practical skills:
    • design and run an enterprise benchmark
    • analyse test data results
    • design an experiment to tune computing performance
    • assign computing resources to meet performance requirements
    • quickly identify performance bottlenecks in complex software systems
    • apply static optimization, meta-programming, just-in-time compilation and hardware acceleration

3 Slides

Note that the slide decks published on this page contain only a subset of what was presented in class. In particular worksheets and discussion material is omitted. Also note that all slides are subject to change without notice. They do carry a timestamp in the bottom left corner.

Concepts in parenthesis are revision of material in prerequisite classes. They are examinable to the extent that they are covered in this class.

Lecture Title Covered Concepts Supplemental Resource
Introduction Performance Engineering, Quality of Service Objective, SLA, Benchmark, Tuning Tuning C++: Benchmarks, and CPUs, and Compilers! Oh My!
Profiling Profile, Profile Events, Trace, Sampling, Perturbation, Instrumentation, Performance Counters Appendix B1 of the Intel Optimization Reference Manual
Performance Modeling Static Analysis, Numerial Models, Analytical Models, Modeling CPUs, Modeling Memory Access Generic Database Cost Models for Hierarchical Memory Systems
Efficiency   Database Cracking: Fancy Scan, not Poor Man’s Sort!

Author: Holger Pirk