blob: 873a8fb82ea8c3c1e905aadd68b08a79c48d2a93 [file] [log] [blame]
% future/HTMtableFull.tex
% SPDX-License-Identifier: CC-BY-SA-3.0
\begin{sidewaystable*}[htbp]
\input{future/HTMtableColor}
\centering
\caption{Comparison of Locking (Plain and Augmented) and HTM
(\colorbox{plus}{Advantage}, \colorbox{minus}{Disadvantage},
\colorbox{down}{Strong Disadvantage})}
\label{tab:future:Comparison of Locking (Plain and Augmented) and HTM}
\footnotesize
\setstretch{0.95}
%\renewcommand*{\arraystretch}{1.4}
\setlength{\tabcolsep}{3pt}
\resizebox{8in}{!}{
\begin{tabularx}{8.5in}{p{.85in}cXcXcX}
\toprule
&
& \multicolumn{1}{c}{Locking} &
& \multicolumn{1}{c}{Locking with Userspace RCU or Hazard Pointers} &
& \multicolumn{1}{c}{Hardware Transactional Memory} \\
\midrule
Basic Idea &
& Allow only one thread at a time to access a given set of objects. &
& Allow only one thread at a time to access a given set of objects. &
& Cause a given operation over a set of objects to execute atomically. \\
\midrule
Scope &
& \Pl Handles all operations. &
& \Pl Handles all operations. &
& \Pl Handles revocable operations. \\
\addlinespace[4pt]
&
& &
& &
& \Mn Irrevocable operations force fallback (typically to locking). \\
\midrule
Composability &
& \Dw Limited by deadlock. &
& \Pl Readers limited only by grace-period-wait operations. &
& \Dw Limited by irrevocable operations, transaction size, and deadlock.
(Assuming lock-based fallback code.) \\
\addlinespace[4pt]
&
& &
& \Mn Updaters limited by deadlock. Readers reduce deadlock. &
& \\
\midrule
Scalability \& Performance &
& \Mn Data must be partitionable to avoid lock contention. &
& \Mn Data must be partitionable to avoid lock contention among updaters. &
& \Mn Data must be partitionable to avoid conflicts. \\
\addlinespace[4pt]
&
& &
& \Pl Partitioning not needed for readers. &
& \\
\cmidrule{3-7}
&
& \Dw Partitioning must typically be fixed at design time. &
& \Dw Partitioning for updaters must typically be fixed at design time. &
& \Pl Dynamic adjustment of partitioning carried out automatically
down to cacheline boundaries. \\
\addlinespace[4pt]
&
& &
& \Pl Partitioning not needed for readers. &
& \Mn Partitioning required for fallbacks (less important for rare
fallbacks). \\
\cmidrule{3-7}
&
& \Dw Locking primitives typically result in expensive cache misses and
memory-barrier instructions.&
& \Dw Updater locking primitives typically result in expensive cache
misses and memory-barrier instructions. &
& \Mn Transactions begin/end instructions typically do not result in
cache misses, but do have memory-ordering and overhead
consequences. \\
\cmidrule{3-7}
&
& \Pl Contention effects are focused on acquisition and release, so that
the critical section runs at full speed. &
& \Pl Update-side contention effects are focused on acquisition and
release, so that the critical section runs at full speed. &
& \Mn Contention aborts conflicting transactions, even if they have been
running for a long time. \\
\addlinespace[4pt]
&
& &
& \Pl Readers do not contend with updaters or with each other. &
& \\
\cmidrule{3-7}
&
& &
& \Pl Read-side primitives are typically bounded wait-free with
low overhead.
(Lock-free with low overhead for hazard pointers.) &
& \Mn Read-only transactions subject to conflicts and rollbacks. No
forward-progress guarantees other than those supplied by fallback
code. \\
\cmidrule{3-7}
&
& \Pl Privatization operations are simple, intuitive, performant,
and scalable. &
& \Pl Privatization operations are simple, intuitive, performant,
and scalable when data is visible only to updaters. &
& \Mn Privatized data contributes to transaction size. \\
\addlinespace[4pt]
&
& &
& \Mn Privatization operations are expensive (though still intuitive
and scalable) for reader-visible data. &
& \\
\midrule
Hardware Support &
& \Pl Commodity hardware suffices. &
& \Pl Commodity hardware suffices. &
& \Mn New hardware required (and is starting to become available). \\
\cmidrule{3-7}
&
& \Pl Performance is insensitive to cache-geometry details. &
& \Pl Performance is insensitive to cache-geometry details. &
& \Mn Performance depends critically on cache geometry. \\
\midrule
Software Support &
& \Pl APIs exist, large body of code and experience, debuggers operate
naturally. &
& \Pl APIs exist, large body of code and experience, debuggers operate
naturally. &
& \Mn APIs emerging, little experience outside of DBMS, breakpoints
mid-transaction can be problematic. \\
\midrule
Interaction With Other Mechanisms &
& \Pl Long experience of successful interaction. &
& \Pl Long experience of successful interaction. &
& \Dw Just beginning investigation of interaction. \\
\midrule
Practical Apps &
& \Pl Yes. &
& \Pl Yes. &
& \Pl Yes. \\
\midrule
Wide Applicability &
& \Pl Yes. &
& \Pl Yes. &
& \Mn Jury still out. \\
\bottomrule
\end{tabularx}
}
\end{sidewaystable*}