CS294-262: Performance Analysis and Optimization of Computer Systems
Fall 2025, UC Berkeley
Location: Monday and Friday, 3:30pm to 5:00pm in 306 Soda.
Course Overview: This course introduces the principles and techniques for analyzing and improving the performance of large-scale, heterogeneous computer systems. We’ll start with classical topics such as caching, load balancing, and scheduling, before moving to modern challenges in achieving efficiency and predictable performance in production environments. Finally, we will explore how ideas from machine learning and programming languages can offer new insights and tools for performance analysis. Case studies will span a diverse range of systems—including operating systems, distributed systems, hardware accelerators, and LLM-serving platforms—to give students a holistic understanding of system performance.
Prerequisites: Students must have previously taken at least two of the following courses or their equivalents:
- CS262A: Advanced Topics in Computer Systems
- CS268: Computer Networks
- CS162: Operating Systems and Systems Programming
- CS168: Introduction to the Internet: Architecture and Protocols
- CS186: Introduction to Database Systems
- CS152: Computer Architecture and Engineering
Enrollment policy: Graduate students may enroll directly. Undergraduate students who meet the above pre-requisites—or have other significant systems experience (e.g., via internships)—are also welcome and should email Rishabh for enrollment.
Weekly Schedule
- Lecture/Discussion: Mondays and Fridays from 3:30pm to 5:00pm in 306 Soda.
- Weekly Reading Reviews: Due Mondays and Fridays @ noon pacific.
Syllabus
Subject to change.
-
Friday, Aug 29: Introduction
-
Monday, Sep 1: Labor Day
- Friday, Sep 5: Caching: Replacement policies
- Monday, Sep 8: Caching: Challenging assumptions
- Friday, Sep 12: Load balancing requests
- The Power of Two Random Choices [1][2][3]
- Load Is Not What You Should Balance: Introducing Prequal
- Monday, Sep 15: Load balancing connections
- Friday, Sep 19: CPU scheduling
- Monday, Sep 22: Scheduling in LLM inference engines
- Friday, Sep 26: Packet scheduling
- Monday, Sep 29: Fair scheduling
- Friday, Oct 3: Performance isolation
- Monday, Oct 6: Rishabh away
- Friday, Oct 10: Project check-in
- Finalize project topics
- Finalize project topics
- Monday, Oct 13: Rishabh away
- Friday, Oct 17: Rishabh away
- Monday, Oct 20: Predictable performance by design: Transactional DBs
- Friday, Oct 24: Performance predictablity for, and using, ML
- Monday, Oct 27: Ensuring predictable performance by avoiding overload
- Friday, Oct 31: Predicting system performance: Hardware accelerators
- Monday, Nov 3: Software abstractions for performance predictability
- Friday, Nov 7: Using ML to understand system performance
- Monday, Nov 10: One model to rule them all
- Friday, Nov 14: Is performance prediction a solved problem?
- Monday, Nov 17: Using PLFM techniques to find performance bugs
- Friday, Nov 21: Formally verifying performance properties
- Monday, Nov 24: Encoding performance in the type system
- Friday, Nov 28: Work on project
- Monday, Dec 1: Project presentations
- Friday, Dec 5: Project presentations
Assignments and Grading
The course workload will consist of the following:
- 25% of grade: Each week, students will be required to read and provide a review of the week’s papers and attend and participate in the week’s discussion.
- Can drop two weeks worth, no questions asked.
- 25% of grade: Each student will lead the discussion of two papers during the semester.
- 50% of grade: Students will complete a semester-long research project, in groups of 2 or 3, related to the course material.
Instructor
![]() | Rishabh Iyer rishabh.iyer@berkeley.edu Office Hours: By appointment. |