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 running in data centers and clouds. The course aims in particular at teaching:
1) Load testing and benchmarking for web applications. The Apache JMeter tool will be used in the course to expose the students to real-world load testing.
2) Mechanisms and architectures to control software performance, such as cloud auto-scaling.
3) Techniques to analyse bottlenecks and forecast the performance of a web application.
The course will also give chance to the students to learn and practice load testing using the Microsoft Azure cloud, thanks to an education support programme sponsored by Microsoft.
Course lecturer: Dr Giuliano Casale
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
- 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
- design and run an enterprise benchmark
- analyse test data results
- design an experiment to tune the performance of a computing system
- assign computing resources to meet performance requirements
Part 1: Introduction to performance engineering.
IT systems: architectures, lifecycle, workloads.
Introduction to cloud computing: Microsoft Azure case study.
Quality-of-service (QoS) and Service-level agreements (SLAs).
Part 2: Performance testing.
Benchmarking and load-testing. SPEC and TPC benchmarks.
Anatomy of a IT system benchmark. Case study: SPECjbb2015.
Experimental performance tuning: capturing test results using response models, designing and running experiments. Case study: Apache JMeter.
Part 3: Resource management.
Workload analysis. Batch and interactive workloads.
Resource demand characterization. Operational analysis.
Analytical models of resource capacity. Performance bottlenecks.
Auto-scaling in the cloud. Case study: Apache Cassandra autoscaling.
There are no strict pre-requisites.
Lectures and exercises. Assessed courseworks will be given throughout the course, which will involve experimental work with the Microsoft Azure cloud.
* This is a level 7/M course
Art of computer systems performance analysis : The techniques for experimental design, measurement, simulation and modeling
Cambridge University Press
Cambridge : Cambridge University Press
Performance by design : computer capacity planning by example / Daniel A. Menasc,̌ Virgilio A.F. Almeida, Lawrence W. Dowdy.
Prentice Hall PTR