In the cloud computing context, performance isolation is enforced by giving to each VM a given fraction of each resource, namely a fraction of physical memory, a fraction of the CPU capacity and a fraction of IO bandwidth. However, micro architecture-level resources such as processor caches cannot be divided and allocated to VMs: they are globally shared between all VMs, which compete for their use, and it can lead to cache contention. Therefore, performance isolation and predictability are compromised. In this paper, we propose a software solution (called Kyoto) to this issue, inspired by the polluters pay principle. A VM is said to pollute a cache if it provokes significant cache replacements, which affect the performance of other VMs. We rely on hardware performance counters to monitor the cache activities of VMs and measure their level of cache pollution. Each VM is allocated a given pollution permit. A VM, which exceeds its permitted pollution, has its CPU capacity reduced accordingly. We present the implementation of Kyoto in the Xen system and its evaluation with several benchmarks.
['Vo Quoc Bao Bui', 'Boris Teabe', 'Alain Tchana', 'Daniel Hagimont']
Kyoto: Applying the polluters pay principle to cache contention in an IaaS