{'fraction_non_alphanumeric': 0.025714285714285714, 'fraction_numerical': 0.0, 'mean_word_length': 5.331325301204819, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
Profiling-based Adaptive Contention Management for Software Transactional Memory

In software transactional memory (STM) systems, the contention management (CM) policy decides what action to take when a conflict occurs. CM is crucial to the performance of STM systems. However, the performance of existing CMs is sensitive to transaction workload and system platforms. A static policy is therefore unsatisfactory. In this paper, we argue that adaptive contention management is necessary and feasible. We further present a profiling-based method that can choose a suitable CM for a given workload and system platform during run-time. We also propose to use logic-time (transactional commit or abort events) to measure the profiling length and compare it with the traditional physical-time-based method. Experimental results demonstrate that our proposed adaptive contention manager (ACM) outperforms static CMs across benchmarks and platforms. In particular, the ACM that uses the number of aborts for the profiling length performs better than others.