Transactional Lock Elision (TLE) and optimistic software
execution can both improve scalability of lock-based pro-
grams. The former uses hardware transactional memory
(HTM) without requiring code changes; the latter involves
modest code changes but does not require special hardware
support. Numerous factors affect the choice of technique,
including: critical section code, calling context, workload
characteristics, and hardware support for synchronization.
The ALE library integrates these techniques, and collects
detailed, fine-grained performance data, enabling policies
that decide between them at runtime for each critical section execution.
We describe an adaptive policy and present
experiments on three platforms, two of which support HTM,
showing that—without tuning for specific platforms or
workload—the adaptive policy is competitive with and often
significantly better than hand-tuned static policies.