CO 339 – Performance Engineering
Table of Contents
Last update: Jan 14, 2022 11:57
Outline
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! |