Contested Accesses
Metric Description
Contested accesses occur when data written by one
thread is read by another thread on a different core. Examples of contested
accesses include synchronizations such as locks, true data sharing such as
modified locked variables, and false sharing. This metric is a ratio of cycles
generated while the caching system was handling contested accesses to all
cycles.
Possible Issues
There is a high number of contested accesses to cachelines modified by
another core. Consider either using techniques suggested for other long latency
load events (for example, LLC Miss) or reducing the contested accesses. To
reduce contested accesses, first identify the cause. If it is synchronization,
try increasing synchronization granularity. If it is true data sharing,
consider data privatization and reduction. If it is false data sharing,
restructure the data to place contested variables in distinct cachelines. This
may increase the working set due to padding, but false sharing can always be
avoided.