Partitioning Deep Cache Hierarchies in Software for Predictable Performance
2014-06-20T00:00:00Z (GMT) by
With the advent of Chip-MultiProcessor (CMP) architectures and the spreading of cloud services, computational resources experience increasing phenomena of contention. The applications running on the different cores may interfere with each other in the usage of several hardware resources. Such conflicts exacerbate in cloud platforms, where the workload varies over time in an unpredictable way. Therefore, isolation of applications becomes a key aspect to ensure performance and Quality of Service (QoS) in cloud environments. The Last Level Cache (LLC) is one of the resources where contention is experienced most. This resource is fundamental in determining the applications performance, which is negatively affected by contention. Page coloring is a technique that allows partitioning the LLC of current commodity processors. This technique exploits the position of data in main memory to control how they are mapped into the LLC. The evolution of CMP architectures has increased the number of cache levels, but how page coloring works on this hierarchy and on modern architectures has not been studied. This work aims at investigating the possible advantages, limitations and trade-offs that derive from the usage of page coloring on such architectures. Cloud workloads can benefit from isolation in LLC and thus from page coloring. Moreover, cloud platforms leverage the power of modern CMPs to run cloud workloads. Therefore, our work can bring a contribution to guarantee isolation in LLC on these platforms. To implement our findings, we realized Rainbow , an implementation of page coloring in the Linux kernel that partitions the LLC among a user-defined subset of processes. We evaluated Rainbow with a set of computational-intensive benchmarks to show its effectiveness. Finally, we discuss the achievements of this work, its limitations and possible future research. This work is organized as follows: • in Chapter 1 we provide a high-level view of cloud platforms and of the main issues they face to fulfill the users’ needs and to manage the computational resources • in Chapter 2 we present a more detailed description of the cache functioning and of cache hierarchies in modern CMPs. This chapter provides the useful details to proceed with the next chapters • Chapter 3 shows the most important techniques to obtain isolation in the LLC • Chapter 4 discusses the design of Rainbow in the context of the deep cache hierarchies of modern CMP architectures • in Chapter 5 we explain how Rainbow is implemented, based on the findings in the previous chapter • Chapter 6 reports the results obtained running Rainbow with a set of benchmarks • in Chapter 7 we discuss the results together with the limits of our solution and with other research possibly deriving from this work.