With increasing number of cores in multi-core system, multiple threads share a cache. Although shared caches allow the dynamic allocation of limited cache capacity among cores, traditional LRU replacement policies often cannot prevent negative interference among cores.
To address the contention problem in shared caches, cache partitioning and application scheduling techniques have been extensively studied. Cache partitioning measures the benefit related to the amount of allocated cache capacity of each thread and enforces the cache allocation to each core to maximize overall benefits with limited cache capacity. On the other hand, application scheduling by operating systems groups the least interfering applications for each shared cache, when multiple shared caches exist in systems. Although application scheduling can mitigate the contention problem without any extra hardware support, its effect can be limited for some severe contentions. Although the two techniques can have mutual impacts on each other, their interactions have not been studied much so far.
This thesis investigates mutual interactions of the two techniques in systems with multiple shared cache domains. To truly understand the interactions of partitioning and scheduling, we evaluate all the possible mixes from a set of applications, instead of using a few selected mixes. Evaluation results show that scheduling can have a significant impact on the overall performance and fairness among cores both with and without partitioning, although partitioning can mitigate the negative effect of bad scheduling. In some cases that scheduling-only scheme cannot reduce cache contentions, partitioning recovers the performance potential cannot be improved with scheduling-only schemes. Moreover, effective scheduling often lowers the required accuracy of partitioning techniques to achieve the same optimal performance.
Firstly, based on the observations, we propose partition-aware heuristic scheduler which maps th...