Exploring Support for Long-Lived Transactions

2006 
If future systems provide efficient support for atomic execution (i.e., by transactional memory), we believe that programmers will use them in two ways: 1) short-lived transactions — corresponding to existing critical sections — for accessing high-contention shared data, and 2) long-running, large-memory footprint transactions to exploit concurrency where little contention is expected, but an absence of contention cannot be guaranteed. While there is much consensus on how the first class of transactions should be supported, much less is known about the second class. This paper makes the following contributions toward efficiently supporting this second class of transactions: 1) a hierarchical organization for storing transactional data in memory that avoids pointer chasing and can be scaled gracefully without having to re-hash its contents, 2) modifications to a previously proposed transactional memory system to support committing transactions while some of their data is not resident in memory, 3) a process to efficiently support transaction waiting — both intentional waiting and waiting for a conflicting transaction to complete — by de-scheduling the transacting thread, and 4) the concept of pausing and an implementation of compensation to allow non-idempotent system calls, I/O, and access to high contention data within a long-running transaction.
    • Correction
    • Source
    • Cite
    • Save
    • Machine Reading By IdeaReader
    21
    References
    0
    Citations
    NaN
    KQI
    []