Detect when concurent accesses append on a cache line and move it from one NUMA node to another, for example when there is contention on a spinlock.
This might be done in two ways :
Using a cache simulator infrastructure by implementing cache topology with one cache per node and using a directory based approach just like the CPU to detect the movements. This might add a large overhead to the tool.
Adding an entry to the shadow page table to remember where a cache line has been seen the last access in cache. This might be ok for overhead except for high contention, but will increase memory consumption.
Detect when concurent accesses append on a cache line and move it from one NUMA node to another, for example when there is contention on a spinlock.
This might be done in two ways :