CS 395T: Computer System Performance Analysis

Spring 2025



Quick Information

Who?

Where? GDC 2.502

When? Tuesdays and Thursdays from 12:30-2:00 PM

Pre-requisites: Familiarity with computer systems and mathematical maturity

Course Content

Normally, we are constantly tweaking computer systems in a never ending attempt to get them to perform well for the latest and greatest applications. On the one hand, it guarantees employment for systems people; something always needs fixing and innovation. On the other hand, it is frustrating to revisit the same questions repeatedly: Should we implement this in software or hardware? Should resource allocation be centralized or decentralized? What is the long list of "if conditions" that we need to make the OS CPU scheduler work? What network topology should we use? And so on...

Occasionally, we discover a unifying principle that allows us to escape this cycle for a part of the system. When we discover an algorithm or design that can be proven to consistently work well, we can move past endless tweaking of that component and direct our efforts elsewhere. As systems grow more complex and applications demand more reliable performance, it becomes crucial to stop revisiting issues we faced decades ago. This course will survey some success stories and try to extract unifying principlles to accelerate future progress.

Another goal of this course is to explore how to effectively bridge theory and practice. Theory provides deep insights that are otherwise difficult to obtain, but its value depends on understanding the practical constraints---making realistic assumptions and producing actionable insights.

Grading will be based on class participation (20%) and a final assignment (80%)