On the Cost of Concurrency in Transactional Memory

The crux of software transactional memory (STM) is to combine an easy-to-use programming interface with an efficient utilization of the concurrent computing abilities provided by modern machines. But does this combination come with an inherent cost? We evaluate the cost of concurrency by measuring the amount of expensive synchronization that must be employed in an STM implementation that ensures positive concurrency, i.e., allows for concurrent transaction processing in some executions. We consider two popular progress conditions: progressiveness and permissiveness. For permissive STMs, we evaluate the number of expensive synchronization patterns that must appear in an execution of a read-only transaction. For progressive STMs, we measure the amount of data that must be "protected" in an uncontended execution of an update transaction. For both progress conditions, our result imply that the amount of expensive synchronization needed to implement a transaction is proportional to the size of the transaction's data set.
View on arXiv