CPI2 : CPU performance isolation for shared compute clusters

Abstract
Performance isolation is a key challenge in cloud computing. Unfortunately, Linux has few defenses against performance
interference in shared resources such as processor caches and memory buses, so applications in a cloud can experience
unpredictable performance caused by other programs’ behavior. Our solution, CPI2, uses cycles-per-instruction (CPI) data
obtained by hardware performance counters to identify problems, select the likely perpetrators, and then optionally throttle them so that the victims can return to their expected behavior. It automatically learns normal and anomalous behaviors by aggregating data from multiple tasks in the same job. We have rolled out CPI2 to all of Google’s shared compute clusters. The paper presents the analysis that lead us to that outcome, including both case studies and a large scale evaluation of its ability to solve real production issues.
Link to paper