17.1.14 Discussion
The obstacles to universal TM adoption lead to the following
conclusions:
- One interesting property of TM is the fact that transactions are
subject to rollback and retry.
This property underlies TM's difficulties with irreversible
operations, including unbuffered I/O, RPCs, memory-mapping
operations, time delays, and the exec() system call.
This property also has the unfortunate consequence of introducing
all the complexities inherent in the possibility of
failure into synchronization primitives, often in a developer-visible
manner.
- Another interesting property of TM, noted by
Shpeisman et al. [SATG+09], is that TM
intertwines the synchronization with the data it protects.
This property underlies TM's issues with I/O, memory-mapping
operations, extra-transactional accesses, and debugging
breakpoints.
In contrast, conventional synchronization primitives, including
locking and RCU, maintain a clear separation between the
synchronization primitives and the data that they protect.
- One of the stated goals of many workers in the TM area is to
ease parallelization of large sequential programs.
As such, individual transactions are commonly expected to
execute serially, which might do much to explain TM's issues
with multithreaded transactions.
What should TM researchers and developers do about all of this?
One approach is to focus on TM in the small, focusing on situations
where hardware assist potentially provides substantial advantages over
other synchronization primitives.
This is in fact the approach Sun took with its Rock research
CPU [DLMN09].
Some TM researchers seem to agree with this approach, while others have
much higher hopes for TM.
Of course, it is quite possible that TM will be able to take on larger
problems, and this section lists a few of the issues that
must be resolved if TM is to achieve this lofty goal.
Of course, everyone involved should treat this as a learning experience.
It would seem that TM researchers have great deal to learn from
practitioners who have successfully built large software systems using
traditional synchronization primitives.
And vice versa.
Paul E. McKenney
2011-12-16