===== Scheduling Transactions ===== Transactional memories are typically speculative and rely on contention managers to cure conflicts. This work explores a complementary approach that prevents conflicts by scheduling transactions according to predictions on their access sets. We developed Shrink, a scheduler that (a) bases its prediction on the access patterns of the past transactions from the same threads, and (b) uses a novel heuristic, which we call serialization affinity, to schedule transactions with a probability proportional to the current amount of contention. The following files are available for download: * Shrink for SwissTM {{swisstm_shrink.tar.gz}} * Shrink for TinySTM {{tinystm_shrink.tar.gz}}