Snapshot Isolation Does Not Scale Either

Transactional memory (TM) [11, 15] allows concurrent processes to execute operations on data items within atomic blocks of instructions, called transactions. A transaction may either commit in which case all its updates become visible to other transactions, or abort in which case all its updates are discarded. The paradigm is appealing for its simplicity but implementing it efficiently is challenging. Ideally, the TM system should not introduce any contention between transactions beyond that inherently due to the actual code of the transactions. In other words, if two transactions access disjoint sets of data items (i.e. if they do not conflict), then none of these transactions should delay the other one, i.e., these transactions should not contend on any base object. This requirement has been called strict disjoint-access-parallelism. Base objects are low-level objects, which provide atomic primitives like read/write, load linked/store conditional, compare-and-swap, used to implement the TM system. Two transactions contend on some base object if both access that object during their executions and one of them performs a non-trivial operation on that object, i.e. an operation which may update its state. Disjoint-access-parallelism was introduced in [12]. Later variants [1, 2, 6] employed the concept of a conflict graph. A conflict graph is a graph whose vertices represent transactions (or operations) performed in an execution α and an edge exists between two nodes if the corresponding transactions (operations) conflict in α. In most of these definitions, disjoint-access-parallelism requires any two transactions to contend on a base object only if there is a path in the conflict graph of the minimal execution interval that contains both transactions. Different variants are met in the literature with the names disjoint-access-parallelism or weak disjoint-access-parallelism (most of them use different properties to restrict access to base objects). Stronger versions of disjoint-access-parallelism like strict disjoint-access-parallelism, result in more parallelism (and promote scalability) and therefore they are highly desirable when designing TM implementations: strict disjoint-access-parallelism is indeed ensured by blocking TM algorithms like TL [4]. Nevertheless, a transaction that locks a data item and gets paged out might block all other transactions for a long amount of time. One might require a liveness property that prevents such blocking. It was shown however in [8] that a TM cannot ensure strict disjoint-access-parallelism if it also needs to ensure serializability [13] and obstruction-freedom [7, 5]. Obstruction-freedom ensures that a transaction can be aborted only when step contention is encountered during the course of its execution. Obstruction-freedom is weaker than lock-freedom or wait-freedom. It allows for designing simpler TM algorithms and therefore it has been given special attention in TM computing [9]. We study the following question: can we ensure strict disjoint-access-parallelism and obstruction

[1]  Amos Israeli,et al.  Disjoint-access-parallel implementations of strong shared memory primitives , 1994, PODC '94.

[2]  Yehuda Afek,et al.  Disentangling multi-object operations (extended abstract) , 1997, PODC '97.

[3]  Torvald Riegel,et al.  Snapshot Isolation for Software Transactional Memory , 2006 .

[4]  Maurice Herlihy,et al.  Software transactional memory for dynamic-sized data structures , 2003, PODC '03.

[5]  Christos H. Papadimitriou,et al.  The serializability of concurrent database updates , 1979, JACM.

[6]  Nir Shavit,et al.  Software transactional memory , 1995, PODC '95.

[7]  Jim Gray,et al.  A critique of ANSI SQL isolation levels , 1995, SIGMOD '95.

[8]  Rachid Guerraoui,et al.  On obstruction-free transactions , 2008, SPAA '08.

[9]  Maurice Herlihy,et al.  Nonblocking memory management support for dynamic-sized data structures , 2005, TOCS.

[10]  Mark Moir,et al.  Towards formally specifying and verifying transactional memory , 2009, Formal Aspects of Computing.

[11]  Hagit Attiya,et al.  Inherent limitations on disjoint-access parallel implementations of transactional memory , 2009, SPAA '09.

[12]  Faith Ellen,et al.  Universal constructions that ensure disjoint-access parallelism and wait-freedom , 2015, Distributed Computing.

[13]  Maurice Herlihy,et al.  On the space complexity of randomized synchronization , 1993, PODC '93.

[14]  Nir Shavit,et al.  What Really Makes Transactions Faster , 2006 .

[15]  Maurice Herlihy,et al.  Transactional Memory: Architectural Support For Lock-free Data Structures , 1993, Proceedings of the 20th Annual International Symposium on Computer Architecture.