Аннотация

The designs of software transactional memory (STM) algorithms to date have been optimistic: transactions that run into inconsistencies abort and retry. The common view is that this optimistic approach gives significant performance benefits, and yet we know that it also results in complex programming, limitations on what can be executed within a transaction, and difficult debugging. This is a burden that does not exist in the pessimistic lock-based programming model transactions are meant to replace. This paper introduces the first STM system that is fully pessimistic, that is, each and every transaction, whether reading or writing, is executed once and never aborts. The benefits of this fully pessimistic STM are that programming with it is logically as simple as with locks, allowing I/O and system calls within a transaction, and making the debugging process significantly simpler. Perhaps surprisingly, we show that on many standard STM benchmarks, our fully pessimistic STM system, which also offers full transactional privatization, delivers performance and scalability that are comparable to that of the most efficient optimistic non-privatizing STM systems. This puts in question our commonly accepted understanding of the tradeoffs between pessimism and performance.

Линки и ресурсы

тэги