I've just been reading this interesting paper: http://www.cs.berkeley.edu/~hcook/papers/ISCA13_Henry_Cook.pdf "A Hardware Evaluation of Cache Partitioning to Improve Utilization and Energy-Efficiency while Preserving Responsiveness"
The main thing which surprised me in it: "Taking advantage of the partitioning mechanism in the LLC, we change the LLC space allocated to a given application from 0.5MB to 6MB." (LLC = last level cache, presumably L3).
I had no idea it was possible to do that, but it sounds quite useful. I have some current interest in the impact a high scheduler priority foreground and low scheduler priority background task running on the same HW can have on each other, and the way they share (or fight for!) cache has some impact on this... further research led to the paper above and I'd really like to see the impact on of such partitioning on our own code...
But what's the trick to actually doing it? Googling things like "intel cache partitioning control" and variants involving "mask", "API" etc finds me nothing useful. If it's thread state, does it need OS support? Any pointers gratefully received!