SMV: Selective Multi-Versioning STM
The authors present Selective Multi-Versioning (SMV), a new STM that reduces the number of aborts, especially those of long read-only transactions. SMV keeps old object versions as long as they might be useful for some transaction to read. SMV is able to do this while still allowing reading transactions to be invisible by relying on automatic garbage collection to dispose of obsolete versions. SMV is most suitable for read-dominated workloads, for which it achieves much better performance (up to 100% more throughput) than a single-version STM; its throughput is also up to 50% higher than that of an STM that keeps a constant number of versions per object, while also requiring 30% less memory.