Transaction Reordering to Reduce Aborts in Software Transactional Memory

In transactional memory, conflicts between two concurrently executing transactions reduce performance, reduce scalability, and may lead to aborts, which waste computing resources. Ideally, concurrent execution of transactions would be ordered to minimise conflicts, but such an ordering is often complex, or unfeasible, to obtain. This paper identifies a pattern, called repeat conflicts, that can be a source of conflicts, and presents a novel technique, called steal-on-abort, to reduce the number of conflicts caused by repeat conflicts. Steal-on-abort operates at runtime, and requires no application-specific information or offline pre-processing. Evaluation using a sorted linked list, and STAMP-vacation with different contention managers show steal-on-abort to be highly effective at reducing repeat conflicts, which leads to a range of performance improvements.