Transactional memory is a promising abstraction for concurrent programming because it is simpler and therefore less error-prone than locking. A key challenge for applications using transactional memory is performance tuning.
Understanding and tuning transactional performance requires different skills and intuitions from tuning lock-based concurrent code because the factors that influence performance are different. Tuning the performance of lock-based programs generally involves identifying highly contended locks and breaking them down into smaller locks, or restructuring the data to avoid synchronization (e.g., per-thread data structures and read-copy update). Tuning transactions, on the other hand, requires a reduction in conflicting memory operations (concurrent transactions writing the same data). Although there are some known techniques for avoiding memory conflicts, the process can be difficult and counterintuitive.
This research project aims to help developers performance tune transactional memory applications by developing a performance model of transactional memory and using it in a tuning tool called Syncchar. Syncchar is implemented as a module for the Simics full system simulator.
The source code for Syncchar is available here, via anonymous git or tar.bz2 download.