{'fraction_non_alphanumeric': 0.014481707317073171, 'fraction_numerical': 0.003048780487804878, 'mean_word_length': 5.6313131313131315, '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}}
Dynamic Thread Mapping for Maximizing Performance in Power-Efficient Multi-core Systems

Efficiently mapping threads to system cores is critical for achieving high performance and power efficiency in multicore systems. Conventional scheduling techniques do not take system heterogeneity and varying DVFS states into account and therefore do not produce efficient mappings. Additionally, since thread behavior varies throughout its execution, a fixed thread-to-core mapping is suboptimal. Dynamically scheduling threads to appropriate core states can significantly improve system throughput and decrease energy consumption. Scheduling decisions are of utmost importance in systems that aim to maximize performance. The problem of thread assignment in order to meet performance or power constraints has been shown to be NP-complete and therefore exceedingly expensive to solve online. This paper proposes a heuristic for dynamically assigning threads to system cores such that performance is maximized while minimizing the energy consumed. The heuristic can be applied to heterogeneous systems and homogeneous systems with DVFS capabilities. Simulation results show that the heuristic can be used online in hundred-core systems, with runtime overhead of less than 1 millisecond in worst cases for 256-core systems.